Inhaltsverzeichnis
Fail2Ban zur Scan-Script-Abwehr einsetzen
Mein vServer gibt mir keinen Zugriff auf IP-Tables. Soweit so gut. Also habe ich versucht, mit einfachen Mitteln zu verhindern, dass Scriptkiddies meine Seite mit Skripten abgrasen. Der Versuch ist unten dokumentiert.
fail2ban/filter.d/apache-404.conf
Alle Zeilen, die einen 404-Fehler enthalten werden von fail2ban gezählt
# Option: failregex failregex = <HOST> - - \[.*\] "GET /.* HTTP/1\.[01]" 404 [0-9]+.*$ # Option: ignoreregex ignoreregex =
fail2ban/action.d/hostsdeny-apache.conf
IPs die mit dem hostsdeny-apache-Filter und der Jail-Config geschrieben werden, werden in die hosts.deny und eine (von mir erstellte) hosts-apache.deny geschrieben, die das Muster „[ip] - “ enthält.
actionban = IP=<ip> && printf %%b "ALL: $IP\n" >> <file> printf %%b "$IP - \n" >> <fileapache> actionunban = IP=<ip>; && sed -i.old /ALL:\ $IP/d <file> IP=<ip> && sed -i.old /$IP/d <fileapache> # file = /etc/hosts.deny fileapache = /etc/hosts-apache.deny
Config für das apache-404-Jail
Alle vHosts werden geloggt, jemand, der mehr als 10 404-Seiten innerhalb einer Minute produziert, wird für 10 Minuten gesperrt.
[apache-404] enabled = true banaction = hostsdeny-apache port = http,https filter = apache-404 logpath = /var/log/apache*/*access.log bantime = 600 findtime = 60 maxretry = 10
Bis hierhin funktionierte das alles wunderbar.
Im Prinzip braucht man nun nur noch eine Möglichkeit, die IP-Liste im Apache abzufragen. Alternativ ist es auch möglich, den Apache mit einem TCP/IP-Wrapper zu starten um von den Settings in der hosts.deny zu profitieren.
Irgendwo fand ich etwas in der Richtung:
## apache2/conf.d/hostsdeny.conf RewriteEngine on RewriteMap hosts-deny txt:/etc/hosts-apache.deny RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR] RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND RewriteRule ^/.* - [F]