Fail2Ban ist eine gute Möglichkeit einen Server gegen unbefugte Anfragen zu schützen. Leider jedoch versagte der Dienst teilweise seine Funktion auf dem neuen Server, da dieser „zu schnell“ war. Ein kleiner Bugfix half mir das Problem in den Griff zu bekommen.
Ich habe mich gefragt warum Fail2Ban auf meinem Server immer wieder seinen Dienst verweigerte und Filter nicht funktionierten.
Im Logfile sah ich unter den normalen Starteinträgen auch Fehler:
2012-04-16 21:59:41,884 fail2ban.actions.action: ERROR iptables -N fail2ban-postfix iptables -A fail2ban-postfix -j RETURN iptables -I INPUT -p tcp -m multiport --dports smtp,ssmtp -j fail2ban-postfix returned 200 2012-04-16 21:59:41,886 fail2ban.actions.action: ERROR iptables -N fail2ban-ssh iptables -A fail2ban-ssh -j RETURN iptables -I INPUT -p tcp -m multiport --dports ssh -j fail2ban-ssh returned 400 2012-04-16 21:59:41,888 fail2ban.actions.action: ERROR iptables -N fail2ban-proftpd iptables -A fail2ban-proftpd -j RETURN iptables -I INPUT -p tcp -m multiport --dports ftp,ftp-data,ftps,ftps-data -j fail2ban-proftpd returned 200 2012-04-16 21:59:41,890 fail2ban.actions.action: ERROR iptables -N fail2ban-named-refused-tcp iptables -A fail2ban-named-refused-tcp -j RETURN iptables -I INPUT -p tcp -m multiport --dports domain,953 -j fail2ban-named-refused-tcp returned 200
Die Befehle welche scheinbar fehlgeschlagen sind, habe ich manuell nach kontrolliert und diese funktionieren problemlos.
Warum also gibt es Fehler und warum starten diese nicht?
Ich bin über den Hinweis gestolpert, dass die Verarbeitungszeit von Fail2Ban zu schnell ist, damit IpTables nicht alle Befehle verarbeiten kann.
Man sollte daher ein kleinen Bugfix in der Datei /usr/bin/fail2ban-client anbringen:
def __processCmd(self, cmd, showRet = True): beautifier = Beautifier() for c in cmd: time.sleep(0.1) beautifier.setInputCmd(c) try:
Hat man die Sleep Zeile eingefügt, startet Fail2Ban ohne Fehler.
Danke…….
Genau das hat bei mir auch gefehlt. Eingetragen und nun startet und stoppt fail2ban
ohne Errors.
:)
Danke!!
ich musste den time.sleep(0.5) nehmen, vielleicht ist mein Server nicht ganz so fix ….
Hat aber funktioniert, jetzt startet fail2ban ohne Fehlermeldung.
super, vielen Dank, das hat mir geholfen.