WordPress-Seiten sind sehr beliebt, was Angriffe angeht. Das ist schon alleine deshalb so, weil WordPress (WP) auf sehr vielen Seiten genutzt wird. Laut kinsta.com liegt der Marktanteil von WP (Web-Seiten) bei derzeit 37%. Ein entsprechend hoher Marktanteil macht ein Produkt natürlich auch attraktiver für Angreifer.
Wenn du die Log-Dateien deiner Webseite durchsiehst, wirst du mit Sicherheit gescheiterte Login-Versuche, XML-Attacken und ähnliches finden. Angreifer gehen in der Regel so vor, dass sie Logins gleich mehrfach versuchen. Auf solche Mehrfach-Versuche, oder aber auch einzelne Versuche können wir reagieren: via Fail2Ban.
Was ist Fail2Ban?
Fail2Ban ist ein Linux-Tool, welches fortlaufend vordefinierte Log-Dateien prüft und auf Events reagieren kann. Das Tool überwacht die Log-Dateien mittels regulärer Ausdrücke und kann in der Folge mit IPTables- und Firewall-Regeln reagieren. Das bedeutet: erkennt das Tool beispielsweise drei Fehlerhafte Login-Versuche in Folge, wird die zugehörige IP-Adresse für eine bestimmte Zeit via IPTables gesperrt.
WordPress: Admin-Account und unbekannte Accounts
In der Default-Einstellung wirst Du einen Admin-Account namens admin in deiner WP-Installation haben. Dies ist bereits eine Information für Angreifer. Der Angreifer kennt nicht, welche Accounts auf deinem System vorhanden sind, wird aber bei den meisten WP-Systemen richtig legen, wenn er einen Benutzer admin vermutet. Daher ist es bei solchen Systemen grundsätzlich eine gute Idee, den eigenen Nickname zum Admin zu machen und auf den „admin“-Account zu verzichten, bzw. diesen zu löschen. Es ist sowieso bei fast allen Systemen besser, man verbindet nicht die Funktion (Administrator) mit dem Benutzernamen (admin).
WP-Fail2Ban: Voraussetzungen
Das WP-Plugin WP-Fail2Ban wird nur dann in deiner WP-Umgebung funktionieren, wenn die Basis-Software fail2ban auf dem Server installiert ist. Wenn auf dem Server bereits fail2ban installiert ist und für WP-Fail2Ban konfiguriert ist, reicht es aus, wenn du das Plugin einfach aktivierst.
Sollte dies nicht der Fall sein, musst Du (nach der Installation von fail2ban) die Filter-Dateien in das Standard-Verzeichnis /etc/fail2ban/filter.d kopieren (wordpress-soft.conf, wordpress-hard.conf, wordpress-extra.conf).
Das gewünschte Verhalten von WP-Fail2Ban passt du dann in der Datei jail.local an.
Um zu verhindern, dass bei Software-Updates die eigenen Anpassungen überschrieben werden, kopierst du die Datei /etc/fail2ban/jail.conf nach /etc/fail2ban/jail.local. Die Datei jail.local wird bei Updates nicht überschrieben, besitzt für das Programm allerdings eine höhere Gewichtung als jail.conf. Sprich: ist auf dem System eine Datei jail.local vorhanden, wird diese anstelle der jail.conf genutzt.
Hinweis zur Anpassung der Konfigurations-Datei jail.conf
Der Datei jail.local fügst du nun folgende Zeilen an:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 [wordpress-hard]
enabled = true
filter = wordpress-hard
logpath = /var/log/auth.log
maxretry = 1
port = http,https
action = %(action_mwl)s
[wordpress-soft]
enabled = true
filter = wordpress-soft
logpath = /var/log/auth.log
maxretry = 3
port = http,https
action = %(action_mwl)s
Die Parameter maxretry kannst Du nach eigener Vorstellung anpassen. Diese Parameter bestimmen, wie oft sich der in den Filter-Regeln festgelegte Zustand wiederholen darf. Ein Beispiel: Ein existierender Benutzer (wordpress-soft) meldet sich am Admin-Interface mit einem falschen Passwort an: Er darf drei Mal ein falsches Passwort eingeben, bevor er geblockt wird. Versucht jemand, sich als Benutzer anzumelden, den es in der WordPress-Umgebung gar nicht gibt (wordpress-hard), so wird er gleich nach dem ersten Versuch geblockt. Die genauen Regeln sind in den o.g. Filter-Dateien beschrieben.