WordPress gegen Brute Force Attacken absichern mit Fail2ban

Fail2ban

Sicherheits Plugins für WordPress sind sehr beliebt. Sie sind, gerade in der heutigen Zeit ein Must-Have. Gerade größere WordPress Installationen sind gerne ein Zeil von Attacken.
Unter all den Sicherheitsproblemen, die mit WordPress zu tun haben, hasse ich persönlich Brute Force Attacken am meisten, da diese einen immensen Schaden anrichten können und den ganzen Server lahm legen, nicht nur die WordPress Installation auf dem dem die Attacke durchgeführt wird.

Dem können wir aber mit Fail2ban entgegenwirken. Fail2ban analysiert die Log-Dateien nach Einträge wie zb. fehlgeschlagene Loginversuche. Kommt ein Fehlgeschlagener mehrfach innerhalb von einem Festdefinierten Zeitraum vor, so können wir Fail2ban sagen er soll uns eine E-Mail schicken oder gleich die IP für xx Sekunden sperren. Dies können wir auch auf WordPress Anwenden. Wie das geht erkläre ich euch in diesen Artikel Anhand des OS CentOS 7.

Fail2ban installieren

Wir loggen uns auf der Console ein und Installieren Fail2Ban.

yum install fail2ban -y


Wir legen jetzt die Konfiguration für Fail2ban an. Dazu kopieren wir uns die Datei etc/fail2ban/jail.conf und benennen diese in jail.local um.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Jetzt können wir in der soeben kopierten Datei die Grundwerte anpassen. Dazu öffnen wir diese. Darin finden wir 3 für uns wichtige Werte. bantime, findtime und maxretry.

bantime gibt die Zeit in Sekunden an die eine IP gesperrt werden soll.
findtime, die in dieser Zeit gefunden Versuche von der jeweiligen IP.
maxretry, das ist die Anzahl der Versuche.

„bantime“ is the number of seconds that a host is banned.
bantime = 600


A host is banned if it has generated „maxretry“ during the last „findtime“
seconds.
findtime = 600


„maxretry“ is the number of failures before a host get banned.
maxretry = 5

Da ich selber aber 5 Versuche in 600 Sekunden (10 Minuten) schon zuviel finde, erhöhen wir das ganze auf 3 Fehlgeschlagene Login Versuche in 60 Sekunden. Daraufhin soll die IP für 1 Woche gesperrt werden. Meine Änderungen sehen also wie folgt aus:

„bantime“ is the number of seconds that a host is banned.
bantime = 604800


A host is banned if it has generated „maxretry“ during the last „findtime“
seconds.
findtime = 60


„maxretry“ is the number of failures before a host get banned.
maxretry = 1

WordPress mit Fail2ban überwachen

Damit Fail2ban unsere WordPress Installation überwachen kann, erstellen wir dazu eine Konfiguration. Im Ordner /etc/fail2ban/filter.d legen wir die Datei wp-login.conf an und füllen diese mit dem Inhalt

[Definition]
failregex = .*] \“POST \/wp-login.php
ignoreregex =

Er besteht aus einem Regulärem Ausdruck der alle Einträge eines POST der Datei wp-login.php Filtert.

Die jail.local müssen wir ebenfalls um einen Filter erweitern, zb welche Log Datei er durchsuchen muss. Dazu öffnen wir die /etc/fail2ban/jail.local und fügen ganz am Ende der Datei folgendes hinzu.

[wp-login]
enabled = true
port = http,https
filter = wp-login
logpath = /var/www/*/log/*access.log

Wenn eure Logdatei des Webservers für die WordPress Installation woanders liegt, müsste Ihr logpath anpassen. /var/log/apache2/access.log zb.

Jetzt Starten wir Fail2Ban zum ersten mal und fügen diesen auch direkt zum Systemstart hinzu.

systemctl start fail2ban
systemctl enable fail2ban

Wenn Ihr nun auf der Console iptables -L eingibt, solltet Ihr folgendes sehen

Fail2Ban

Damit wären wir auch schon Ende.
Ihr könnt übrigens Fail2ban nicht nur für eure WordPress Installation nutzen, sondern auch für euren Webserver, Mailserver, SSH, FTP und viele weitere. Schaut eich dazu die /etc/fail2ban/jail.local an. Dort sind schon viele Filter vorhanden die bereits aktiviert sind (true) oder deaktiviert (false).

Schreibe einen Kommentar

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