Hacker versuchen teils über 404 Fehler eine Webseite einzunehmen, indem sie Skripte ausführen oder zumindest den Server belasten. Um solche Versuche zu unterbinden, lassen sich für Apache2 und nginx Fail2ban Regeln erstellen. Im folgenden werden die passenden Regeln für die beiden Webserver kurz erläutert.
Bedingung ist, dass Fail2ban installiert ist:
sudo apt-get install fail2ban
Alle Regeln werden unter /etc/fail2ban/filter.d/ gespeichert, die dann in der /etc/fail2ban/jail.conf referenziert und aktiviert werden. Eine hilfreiche deutsche Einführung in die verschiedenen Konfigurationsbegriffe ist auf GitHub.
Apache2
Zuerst erstellen wir für Apache die Regel, um 404 Fehlerverursacher zu bannen (Vorlage von Nerdchannel). Pfad /etc/fail2ban/filter.d/apache-404.conf (bitte korrekt schreiben, da der Dateiname als Referenz dient):
# Fail2Ban configuration file # # Author: Dominic Derdau # Website: www.erasel.net # License: GPL # You are free to Use this on other Sites if you link back to this Site. # $Revision: 2.1.1 $ # [Definition] # Option: failregex # Notes.: regex to match the "File does not exist" messages in the logfile. The # host must be matched by a group named "host". The tag "" can # be used for standard IP/hostname matching and is only an alias for # (?:::f{4,6}:)?(?P\S+) # Values: TEXT # failregex = [[]client <HOST>[]] File does not exist: * # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # standart search for favicon.ico and robots.txt - this is often thrown and may do stupid mistakes # Values: TEXT # ignoreregex = .*(robots.txt|favicon.ico|jpg|png)
Mit der dieser Regel werden unten robots.txt, favicon und Bilddateien ausgeschlossen. Nun brauchen wir noch den jail für /etc/fail2ban/jail.conf (einfach unten in eine neue Zeile anhängen):
[apache-404] enabled = true port = http,https filter = apache-404 logpath = /var/customers/logs/*error.log maxretry = 10 findtime = 60 bantime = 86400
Parameter von Zeit (in Sekunden) und Häufigkeit jeweils anpassen. Der Logpfad ist für das Froxlor Kundenverzeichnis konfiguriert, in dem alle Logdateien der einzelnen Kunden liegen. Standardmäßig ist es aber /var/log/apache2/*error.log.
nginx
Nun erstellen wir für nginx die Regel, um 404 Fehlerverursacher zu bannen (Vorlage von GitHub). Pfad /etc/fail2ban/filter.d/nginx-404.conf (bitte korrekt schreiben, da der Dateiname als Referenz dient):
<pre> # Fail2Ban configuration file # # Author: Chris Cohoat # [Definition] failregex = <HOST> - - \[.*\] "(GET|POST).*HTTP.* 404 ignoreregex = .*(robots.txt|favicon.ico|jpg|png)
Mit der dieser Regel werden unten robots.txt, favicon und Bilddateien ausgeschlossen. Nun brauchen wir noch den jail für /etc/fail2ban/jail.conf (einfach unten in eine neue Zeile anhängen):
[nginx-404] enabled = true filter = nginx-404 port = http, https logpath = /var/log/nginx/error.log findtime = 60 bantime = 3600 maxretry = 30
Parameter von Zeit (in Sekunden) und Häufigkeit jeweils anpassen. Der Logpfad ist auf das Standard nginx Verzeichnis gelegt.