ISPConfig3 NGINX Server WordPress absichern mit Fail2ban absichern
In der HowToForge Installationsanleitung für ISPConfig 3 wird Fail2ban schon verwendet, um SSH Login Versuche nach mehren falschen Passwort Eingaben zu sperren.
Nun kann Fail2ban erweitert werden um auch Versuche von Hackern und Scriptkiddies zu sperren, besser bekannt auch als Brute-Force-Attacke. Die Angreifer versuchen darüber durch User und Passwörter zu erraten um zugriff in den Adminbereich der WordPress Installation zu gelangen. In diesem Artikel erweitern wir Fail2Ban so, dass es auch auf die Login-Fehlversuche nach wiederholtem Male reagiert.
Diese Anleitung setzt eine ISPConfig 3 Installation mit Fail2ban voraus und kann auch unter anderen Linux Systemen funktionieren, in diesem Fall nutze ich ein Debian 10 System
1. Erweiterung der jail.local von Fail2ban
nano /etc/fail2ban/jail.local
[nginx-wp-login] enabled = true port = http,https filter = nginx-wp-login logpath = /var/log/ispconfig/httpd/*/access.log [nginx-wp-xmlrpc] enabled = true port = http,https filter = nginx-wp-xmlrpc logpath = /var/log/ispconfig/httpd/*/access.log
2. Erstellen der WordPress Filter
nano /etc/fail2ban/filter.d/nginx-wp-login.conf [Definition] failregex = ^<HOST> .*POST .*wp-login\.php HTTP.* 200.* ignoreregex = maxretry = 3 findtime = 10800 bantime = 86400
Wir sichern die Datei und erstellen eine weitere für die WordPress XMLRPC
/etc/fail2ban/filter.d/nginx-wp-xmlrpc.conf [Definition] failregex = ^<HOST> .*POST .*xmlrpc\.php.* 200.* ignoreregex = maxretry = 3 findtime = 10800 bantime = 86400
maxretry: Anzahl der Loginversuche
findtime: Überwacht die Dauer einer Sperrung
bantime: Sperrzeit wie lange eine IP Adresse gesperrt wird
Nach dem Speichern prüfen wir, ob die erstellten Dateien vorhanden sind und starten fail2ban neu
ls /etc/fail2ban/filter.d/|grep nginx-wp nginx-wp-login.conf nginx-wp-xmlrpc.conf
/etc/init.d/fail2ban restart
3. Funktion Prüfen
nach einiger Zeit finden wir in den Logfiles von Fail2ban Blockierungen von fehlerhaften Logins im WordPress
tail -n 100 /var/log/fail2ban.log
2021-07-05 12:15:35,662 fail2ban.filter [19868]: INFO [nginx-wp-xmlrpc] Found IP-ADRESS - 2021-07-05 12:15:35 2021-07-05 12:15:36,468 fail2ban.filter [19868]: INFO [nginx-wp-xmlrpc] Found IP-ADRESS - 2021-07-05 12:15:36 2021-07-05 12:15:49,111 fail2ban.filter [19868]: INFO [nginx-wp-login] Found IP-ADRESS - 2021-07-05 12:15:48 2021-07-05 12:15:49,716 fail2ban.filter [19868]: INFO [nginx-wp-login] Found IP-ADRESS - 2021-07-05 12:15:49 2021-07-05 12:15:50,524 fail2ban.filter [19868]: INFO [nginx-wp-login] Found IP-ADRESS - 2021-07-05 12:15:50 2021-07-05 12:16:06,391 fail2ban.filter [19868]: INFO [nginx-wp-xmlrpc] Found IP-ADRESS - 2021-07-05 12:16:06 2021-07-05 12:16:12,230 fail2ban.filter [19868]: INFO [nginx-wp-login] Found IP-ADRESS - 2021-07-05 12:16:12 2021-07-05 12:16:46,735 fail2ban.filter [19868]: INFO [nginx-wp-xmlrpc] Found IP-ADRESS - 2021-07-05 12:16:46 2021-07-05 12:16:57,359 fail2ban.filter [19868]: INFO [nginx-wp-login] Found IP-ADRESS - 2021-07-05 12:16:57
Ihr seht hier, Fail2ban sichert nun auch eure WordPress Systeme ab auf dem ISPConfig Server, natürlich lässt sich Fail2ban
auch weiter ausbauen um andere Applikationen wie Nextcloud, Shopware.
Über folgenden befehl könnt ihr auch einzelne Webs Prüfen, ihr müsst dazu nur ein Web in die Prüfung hinzu fügen
fail2ban-regex /var/log/ispconfig/httpd/WEBDOMAIN/access.log /etc/fail2ban/filter.d/nginx-wp-login.conf
Das Ergebnis sieht dann so aus
Running tests ============= Use failregex filter file : nginx-wp-login, basedir: /etc/fail2ban Use log file : /var/log/ispconfig/httpd/WEBDOMAIN/access.log Use encoding : UTF-8 Results ======= Failregex: 128 total |- #) [# of hits] regular expression | 1) [128] ^<HOST> .*POST .*wp-login\.php HTTP.* 200.* `- Ignoreregex: 0 total Date template hits: |- [# of hits] date format | [1355] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)? `- Lines: 1355 lines, 0 ignored, 128 matched, 1227 missed [processed in 0.23 sec]
Links:
[über den Autor]
Alexander Fox unterstützt HowToForge und das ISPConfig Projekt seit vielen Jahren. Er ist Administrator für Linux Mail und Webserver mit Erfahrung aus über 15 Jahren.