Fail2ban erschwert Einbruchsversuche, da es nach einer festlegbaren Anzahl von Fehlversuchen  – etwa Loginversuchen über SSH – die IP Adresse des Hackers für eine definierte Zeitspanne sperrt.

Diese Sperre wird in die iptables eingetragen und nach einer ebenfalls definierbaren Zeit wieder freigegeben.

Wenn man sich aber nun selbst von einem Rechner ausgesperrt hat (etwa, weil man am iPhone keinen ssh key eingerichtet  und das Passwort drei mal vergeigt hat), kann man – soferne man Zugang über ein anderes Medium hat – einfach die Zeile in den iptables löschen.

Hierzu geht man wie folgt vor:

mit

iptables -L

listet man die aktuellen Regeln.

Das sieht dann etwa so aus (ich habe von zwei Rechnern absichtlich mit falschem Passwort einzuloggen versucht)

Chain fail2ban-SSH (1 references)
target prot opt source destination 
DROP all -- t1.mydomain.com anywhere 
DROP all -- t2.mydomain.com anywhere 
RETURN all -- anywhere anywhere

 

Hier findet man die (veränderten) hostnames, weil fail2ban ein reverse lookup macht. Wenn kein PTR gesetzt ist, erscheinen die IP Adressen.

Um jetzt eine Adresse wieder freizuschalten, wird die Regel gelöscht:

iptables -D fail2ban-SSH 1

wobei die Zahl (hier 1) der Zeile der DROP-Regel entspricht (Überschriften zählen natürlich nicht dazu.
Mit dem obigen Kommando wird als t1.mydomain.com wieder freigeschaltet.

Eine Freischaltung sollte aber nur im Notfall auf diese Weise durchgeführt werden, weil dadurch 2 Dinge in Schieflage geraten:

Einmal wird fail2ban diese IP bei späteren Einbruchsversuchen erstmal nicht mehr blockieren, da diese in den eigenen Logs bereits als gebannt markiert ist – es gibt nur eine dementsprechende Meldung im Log dann.

Und zweites wird eine weitere Fehlermeldung im Log vermerkt, wenn fail2ban nach Ablauf der Quarantänezeit selbst versucht, die von uns manuell gelöschte Regel in iptables zu löschen.

Danach funktioniert wieder alles wie es soll.

Leider habe ich keine (für mich funktionierende) Möglichkeit gefunden, fail2ban selbst zum aufgeben des Banns zu bewegen, aber vielleicht hat ja der geneigte Leser eine Idee…

Edit: Hier ist die bessere Lösung