Haben Sie Fragen? Senden Sie uns doch eine Nachricht

OneSystems GmbH

OneSystems GmbH

System Management aus der Schweiz

+41 44 586 40 18
Email: info@onesystems.ch

OneSystems GmbH
Grindlenstrasse 9, 9630 Wattwil, Schweiz

Open in Google Maps
  • Home
  • Beratung & Betrieb
  • Dienstleistungen
    • Web Hosting
    • E-Mail Hosting
    • Ihre eigene Daten Cloud
  • Blog
  • Kontakt
    • Remote Support
  • Home
  • Blog
  • Linux
  • WordPress mit Fail2Ban absichern
20. April 2026

WordPress mit Fail2Ban absichern

WordPress mit Fail2Ban absichern

by Michael Kleger / Mittwoch, 02 März 2016 / Published in Linux, Tipps und Tricks, Webseiten, Webserver

Vor einiger Zeit hab eich eine Beitrag verfasst wie man ownCloud mit Fail2Ban absichern kann nun möchte ich zeigen wie man das selbe mit WordPress macht.

 

WordPress Plugin

Da WordPress standardmässig fehlerhafte Logins immer mit einem 200 HTTP code (OK) bestätigt ist es sehr schwierig die Logins zu überwachen. Mit der folgenden Erweiterung wird es möglich das bei fehlerhaften Logins das aus dem code 200 ein code 403 HTTP code (Forbidden) in den Logs aufgeführt wird.

Im WordPress wp-content Ordner muss ein neuer Ordner mit dem Namen „mu-plugins“ für Must Use Plugins angelegt werden, darin muss eine neue Datei mit einem beliebigen Namen (bei uns wp-login.php) angelegt werden mit dem folgenden Inhalt.

<?php
function my_login_failed_403() {
    status_header( 403 );
}
add_action( 'wp_login_failed', 'my_login_failed_403' );

 

Erstellen der Filterdatei und Konfiguration in Fail2Ban

Erstellen der Datei /etc/fail2ban/filter.d/wordpress.conf  mit folgenden Inhalt:

[Definition]
failregex = <HOST>.*POST.*(wp-login\.php|xmlrpc\.php).* 403
ignoreregex =

 

Und in der Datei /etc/fail2ban/jail.conf folgendes hinzufügen:

[wordpress]
enabled = true
filter  = wordpress
logpath = /var/log/httpd/access_log
maxretry = 3

 

 

Neue Regeln für Fail2Ban testen

Welches natürlich nur geht, wenn man sich mal falsch anmeldet, sonst kann nichts gefunden werden.

root@test:/# fail2ban-regex /var/log/apache2/access.log /etc/fail2ban/filter.d/wordpress.conf

Running tests
=============

Use   failregex filter file : wordpress, basedir: /etc/fail2ban
Use         log file : /var/log/apache2/access.log
Use         encoding : UTF-8


Results
=======

Failregex: 38 total
|-  #) [# of hits] regular expression
|   1) [38] .*POST.*(wp-login\.php|xmlrpc\.php).* 403
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [230241] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-

Lines: 230241 lines, 0 ignored, 38 matched, 230203 missed
[processed in 239.60 sec]

 

 

Die Regeln funktionieren. Der Service/Daemon Fail2ban kann neu gestartet werden:

root@test:/# systemctl restart fail2ban
  • Tweet
Tagged under: absichern, Fail2Ban, Webserver, Wordpress

About Michael Kleger

What you can read next

Festplatte voll (Inodes bei 100%)
SSL Zertifikate für alle!
VMWare Netzwerk Adpater von E1000 auf VMXNET3 ändern

4 Comments to “ WordPress mit Fail2Ban absichern”

  1. speefak says : Antworten
    1. Februar 2017 at 17:12

    Logfile Pfad unter debian 8 ist nicht mehr /var/log/httpd/access_log sonden /var/log/apache2/access.log

    mfg 😉

    1. Michael Kleger says : Antworten
      1. Februar 2017 at 19:11

      Nicht nur erst seit Debian 8 sondern auch schon früher, bei RHEL Systemen sind die immer unter /var/log/httpd/… zu finden.
      Die Anleitung kann aber natürlich für die anderen Distributionen angepasst werden.

  2. T.K. says : Antworten
    9. April 2021 at 12:44

    Ich fürchte, dieser Ansatz funktioniert nicht verlässlich. Die Annahme, dass ein fehlgeschlagener Login immer zu einem HTTP-Status-Code 200 führt, ist nicht zutreffend. Wenn ich z.B. dem POST noch ein Argument mitgebe, etwa: POST /wp-login.php?action=register führt das zu einem 302 Status-Code – obwohl der Login nicht erfolgreich war. Wir sehen derzeit Angriffe genau nach diesem Muster… fail2ban kriegt das dann mit der o.g. regex nicht mit und der Angreifer kann ungebremst Passworte erraten…

    1. Michael Kleger says : Antworten
      11. April 2021 at 14:15

      Besten Dank für den Hinweis, der Filter ist mittlerweile auch schon einige Jahre alt und auf der Seite von WordPress hat sich in der Zeit einiges getan.

      Ich habe den Regex etwas angepasst und eine kleine Erweiterung für die WordPress Installation, leider noch nicht 100% getestet sollte aber so wieder funktionieren.

Schreibe einen Kommentar Antwort abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.

Letzten Beiträge

  • Checkmk Agent Update Fehler: libz.so.1 failed to map segment from shared object

    Beim Ausführen des Checkmk Agent Updaters kann ...
  • PostgreSQL Wartung automatisieren

    PostgreSQL ist eine sehr stabile und leistungsf...
  • Mailrelay + SMTP OAuth Relay: SMTP ohne Passwort, bereit für Microsoft 365

    Dieser Beitrag ist Teil 2 der Mailrelay-Serie u...
  • Ein schlanker SMTP-Relay-Container für moderne Infrastrukturen

    Warum ein eigenes Mailrelay? In vielen Infrastr...
  • Der GNOME-Login ist weg – so bringst du ihn zurück

    Nach einem Update oder Neustart kann es passier...

Neueste Kommentare

  • Ein schlanker SMTP-Relay-Container für moderne Infrastrukturen - OneSystems GmbH bei Mailrelay + SMTP OAuth Relay: SMTP ohne Passwort, bereit für Microsoft 365
  • Mailrelay + SMTP OAuth Relay: SMTP ohne Passwort, bereit für Microsoft 365 - OneSystems GmbH bei Ein schlanker SMTP-Relay-Container für moderne Infrastrukturen
  • Michael Kleger bei Festplatte einer Virtuellen Maschine verkleinern
  • Harald Strauch bei Festplatte einer Virtuellen Maschine verkleinern
  • Michael Kleger bei Mac OS X 10.11El Capitan‎: ISO für Installation erstellen

Categories

  • b1gMail
  • CentOS
  • Checkmk
  • Debian
  • Docker
  • Identitätsanbieter
  • Linux
  • Mac OSX
  • Microsoft Exchange
  • Microsoft Outlook
  • Migration
  • Mint
  • Monitoring
  • Neuigkeiten
  • Nextcloud
  • PowerShell
  • Python
  • Raspberry Pi
  • Sicherheit
  • Tipps und Tricks
  • Ubuntu
  • VMware
  • Webseiten
  • Webserver
  • Windows
  • Windows zu Linux

Die OneSystems GmbH mit Sitz in Wattwil ist ein unabhängiger IT-Dienstleister für die Planung, Umsetzung und den Betrieb moderner IT-Infrastrukturen, Weblösungen und individueller Software. Wir begleiten Unternehmen ganzheitlich von der Konzeption bis zum laufenden Betrieb und übernehmen dabei sowohl technische Verantwortung als auch den langfristigen Support.

Unsere Kunden stammen aus der Schweiz, Deutschland und Österreich und vertrauen auf Lösungen, die stabil, sicher und nachvollziehbar aufgebaut sind. Statt kurzlebiger Trends setzen wir auf saubere Architektur, etablierte Standards und nachhaltige Qualität, damit Systeme nicht nur heute funktionieren, sondern auch morgen noch beherrschbar bleiben.

Letzten Blog Posts

  • Checkmk Agent Update Fehler: libz.so.1 failed to map segment from shared object

  • PostgreSQL Wartung automatisieren

  • Mailrelay + SMTP OAuth Relay: SMTP ohne Passwort, bereit für Microsoft 365

Kontakt

Email: Kontaktformular

OneSystems GmbH
Grindlenstrasse 9
9630 Wattwil
Schweiz

Copyright © 2018-2026 OneSystems GmbH, Alle Rechte vorbehalten.
Impressum | Datenschutzerklärung | AGBs | Kontakt

TOP