Ich versuche zu konfigurierenFehler2Banauf meinem Testserver. Ich möchte nur vorübergehend alle Skript-Bots blockieren, die versuchen, meine Site zu testen. Also alles, was cgi-bin
, admin
, setup.php
usw. hat. Ich habe zuvor alles überprüft, was 404-Fehler generiert, mit etwas wie grep "HTTP/1.1\" 404" access.log | awk '{print $7 } ' | sort | uniq -c | sort -n
in meinem access.log.
Ich habe sichergestellt, dass keine meiner URLs diese Teile enthält.
Nach der Installation habe ich also jail.local
nichts damit gemacht jail.conf
. Meine Datei sieht so aus (ich möchte die IP für 10 Minuten blockieren):
[DEFAULT]
ignoreip = 127.0.0.1
bantime = 600
destemail = myemail
banaction = iptables-multiport
action = %(action_mwl)s
[apache-script-bots]
enabled = true
port = http,https
filter = apache-script-bots
logpath = /var/log/apache2/access.log
maxretry = 1
Ich habe außerdem apache-script-bots.conf
einen filter.d
Ordner erstellt, der nur Folgendes enthält:
[Definition]
failregex = (admin|setup.php|main.php|w00tw00t|web-console|.jsp|manager|cgi-bin)
ignoreregex =
Beim Neustart von fail2ban wird mir angezeigt, dass alles in Ordnung ist. Aber wenn ich versuche zu testen, ob mein Jail funktioniert, indem ich versuche, es mit folgendem auszulösen: mydomain/main.php
sehe ich, dass ich nicht gejailt bin.
Wenn ich den Status von fail2ban überprüfe, wird mir angezeigt, dass mein Jail funktioniert
fail2ban-client status
Status
|- Number of jail: 2
`- Jail list: ssh, apache-script-bots
Ich nehme an, dass das Problem bei regulären Ausdrücken liegt, kann aber nicht verstehen, warum.
Antwort1
Sie müssen fail2ban (über den regulären Ausdruck) mitteilen, wo im Protokolleintrag es ein finden soll, <HOST>
damit es diesen Host dann sperren kann. Bei einem normalen Zugriffsprotokoll wäre das am Anfang der Zeile, also
<HOST> -.*(w00tw00t|main.php|setup.php)
würde funktionieren, aber möglicherweise nicht genau das gewünschte Ergebnis erzielen, da es mit den entsprechenden Auslösern an beliebiger Stelle im Protokolleintrag übereinstimmen würde.
Vielleicht möchten Sie etwas versuchen wie
<HOST> -.*(/w00tw00t|/main.php |setup.php )
wodurch einige der Fäden an spezifischere Orte gebunden werden sollten