Für die Experten unter uns: Wir haben Jails & Filter gegen Brute-Force-Attacken für folgende Content Management Systeme: Wordpress, Joomla und WHMCS.
[wplogin-jail] enabled = true filter = wp-login-filter action = iptables-multiport[name="wp-login", port="http,https", protocol="tcp"] logpath = /var/www/vhosts/system/*/logs/*access*log /var/log/apache2/*access.log bantime = 86400 maxretry = 6 [joomla-login-jail] enabled = true filter = joomla-login-filter action = iptables-multiport[name="joomla-login", port="http,https", protocol="tcp"] logpath = /var/www/vhosts/system/*/logs/*access*log /var/log/apache2/*access.log bantime = 86400 maxretry = 6 [whmcs-jail] enabled = true filter = whmcs-login-filter action = iptables-multiport[name="whmcs-login", port="http,https", protocol="tcp"] logpath = /var/www/vhosts/system/*/logs/*access*log /var/log/apache2/*access.log bantime = 86400 maxretry = 6
2. Per SSH auf dem Pleskserver folgende Dateien im Verzeichnis anlegen und Code einfügen "/etc/fail2ban/filter.d/"
2.1 wp-login-filter.local:
[Definition] failregex = ^ .* "POST .*(wp-login.php|xmlrpc.php) HTTP/.*" (200|401) ignoreregex =
2.2 joomla-login-filter.local:
[Definition] failregex = ^ .* "POST .*(\/administrator\/index\.php|\/index\.php\/component\/users\/\?task=user\.login) HTTP/.*" 303 ignoreregex =
EDIT: Joomla schreibt leider keine korrekten Logeinträge (bisher). Der oben genannte failregex hat viele false positives.
Man könnte versuchen "\[client (\S+):\d+\] .* user (\S+) authentication failure" (ohne Anführungsstriche) einzubinden. Dies wurde noch nicht getestet.
Dann müsste man aber auch https://extensions.joomla.org/extension/fail2ban/ als Komponente bei Joomla installieren.
2.3 whmcs-login-filter.local:
[Definition] failregex = ^ .* "GET .*(\/clientarea\.php\?incorrect\=true|\/admin\/login\.php\?incorrect\=1) HTTP/.*" 200 ignoreregex =
Hinweise: - Hier gehen wir davon aus, dass das admin Verzeichnis auch /admin/ hier abrufbar ist. Ansonsten bitte anpassen. Vor jedes Sonderzeichen kommt ein \
- Dateien bitte ohne Doppelpunkt anlegen. Beispielsweise hier einmal der komplette Pfad der Datei für Wordpress: "/etc/fail2ban/filter.d/wp-login-filter.local"
3. Fail2Ban neustarten:
service fail2ban restart
Mit folgendem befehl kann überprüft werden, ob Fehler entstanden sind:
service fail2ban status
4. Fertig.