Fail2ban an sich ist ein sehr praktisches Tool, um potentielle Angreife aussperren zu können. Unhandlich wird es aber mitunter, wenn man eine bestimmte IP einfach wieder freigeben will.
Ich hatte das Thema schon fast vergessen, bis ich dazu einen Kommentar erhalten habe. 😉 Ich schreibe aber die recent-Einträge in meiner Firewall mittlerweile auch in eine Datenbank, um nach einem Neustart auch die entsprechenden Werte zu haben und nutze diese auch, um weitere Server synchron zu halten (das in ein paar Tagen mehr).
Der hier vorgestellte Weg funktioniert aber völlig problemlos.
Wer fail2ban nur auf einem Server laufen lässt (und dort auch alle Logfiles auflaufen lässt) und mehrere Server aber mit identischen recent-Einträgen versorgt wissen will, kann “actionban” auch so anpassen, dass über ssh ein Connect erfolgt und der echo-Befehl denn (auch) auf dem Remote-Server ausgeführt wird (aber vorsicht: das führt schnell zu extrem vielen ssh-Connects).
Hier das ganze in Kurzform. Meine aktuelle Lösung werde ich in ein paar Tagen vorstellen:
Statt jede IP separat mittels iptables in die Firewall einzutragen, verwende ich lieber xt_recent.
In der jeweiligen action-Datei von fail2ban steht dann:
actionban = echo +<ip> >/proc/net/xt_recent/fail2ban-<name>
actionunban = echo -<ip> >/proc/net/xt_recent/fail2ban-<name>
Wobei actionunban auch leer bleiben kann, wenn der entsprechende jail schon mit einer maximalen “Aufenthaltsdauer” eingerichtet wird. Ich nehme z.B. beim Initialisieren der Firewall:
iptables -N DenyAccess
iptables -A INPUT -m recent –update –seconds 86400 –name DenyAccess –hitcount 1 -j DROP
Wer das ganze noch logen will, setzt hinter die erste Zeile einfach noch
iptables -A DenyAccess -m recent –rcheck –seconds 14400 –name DenyAccess –rsource -m limit –limit 1/min -j LOG –log-prefix “(DenyAccess): ” –log-level 6
Eine einzelne IP kann jetzt durch echo -<IP> > /proc/net/xt_recent/DenyAccess freigegeben werden.
Zum grundsätzlichen Verständnis: Block outdated clients
Insbesondere auf /sys/module/xt_recent/parameters/ip_list_tot sollte man schon achten.
Pingback: fail2ban mit xt_recent reloaded | florian @it
blocklist.de läuft bei mir auch irgendwo – ich muss mir das nächstes Jahr doch noch mal näher ansehen. 🙂
Aber die hier vorgestellte Lösung bringt für mehrere Fälle etwas. Ich habe z.B. einen Mirror für clamav zu laufen und kann dadurch bestimmte Clients direkt aussperren (dann aber anhand eines bestimmten Logeintrages und ohne fail2ban).
Importierte Blocklisten verwende ich nur für Mail (hier insbesondere Spam, wobei postscreen schon fast alles wegfängt) und Web (ohne Mirror).
Ansonsten kann man die Reports auch an http://www.blocklist.de/de/ senden und darüber die IP-Listen wieder importieren. Über den Angriff werden dann auch direkt die Provider informiert und können das System prüfen, was viele auch tun (abgesehen von den schwarzen Schafe aus Asien & Co) 🙂