Laut Dokumentation sollte das Setzen der Jail-Bantime auf einen negativen Wert zu einem permanenten Bann führen. Sobald dies jedoch geschieht, ändert sich das folgende Verhalten im Vergleich zum Setzen der Bantime auf eine positive Ganzzahl:
1) ipset list
zeigt die Fail2ban-SSHD-Hash-Tabelle nicht an
2) firewall-cmd --direct --get-all-rules
ist leer
3) /var/log/fail2ban.log
wird zu einer einzelnen Zeile. interessanter Eintrag
sshd[25772]: Ungültiger Benutzer Ubuntu von 93.174.89.88 Port 37477‘, „ip“: „93.174.89.88“, „ipmatches“: bei 0x7f4588f9dc08>, „ipfailures“: bei 0x7f4588f9daa0>, „time“: 1536301842.088076, „failures“: 1443, „ipjailfailures“: bei 0x7f4588f9dd70>})‘: Fehler beim Sperren von 93.174.89.88
4) /var/log/messages
hat folgendes
firewalld[916]: WARNUNG: '/usr/sbin/iptables-restore --wait=2 -n' ist fehlgeschlagen: iptables-restore v1.4.21: Set fail2ban-sshd existiert nicht.#012#012Fehler ist aufgetreten in Zeile: 2#012Versuchen Sie 'iptables-restore -h' oder 'iptables-restore --help' für weitere Informationen. firewalld[916]: FEHLER: COMMAND_FAILED
Der einzige Befehl, der wie erwartet funktioniert, ist fail2ban-client status sshd
, allerdings versuchen die IPs, die als gesperrt angezeigt werden, trotzdem eine Verbindung herzustellen. Ich denke, die Ursache aller Probleme liegt darin, dass IPset aus irgendeinem Grund nicht erstellt wird, wenn die Ganzzahl negativ ist.
Irgendwelche Ideen? Und hat der Befehl fail2ban-client reload
die gleiche Wirkung wie systemctl restart fail2ban.service
beim Anwenden einer neuen Konfiguration?
In meinem Fall /etc/fail2ban/jail.d/local.conf
[sshd]
enabled = true
bantime = -1
findtime = 3600
maxretry = 5
action = %(action_)s
Antwort1
Dies war ein Fehler in älteren Versionen von fail2ban. Er wurde inzwischen behoben, aber wenn Ihre Linux-Distribution noch diese ältere Version ausliefert, benötigen Sie möglicherweise auch einen Workaround.
DerGitHub-ProblemDarin wird das Problem erklärt und die Lösung enthält auch eine Problemumgehung:
Dies wurde in neueren Versionen behoben. Für 0.9 können Sie den Bantime-Parameter (Timeout) bei der Aktion innerhalb des Jails einfach überschreiben (der Parameter Timeout für die persistente IPset-Regel ist 0).
[sshd] bantime = -1 action = %(banaction)s[name=%(__name__)s, bantime=0, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
Antwort2
ipset kann nur ein minimales Timeout von 0 oder ein maximales Timeout von 2147483 haben siehehttp://ipset.netfilter.org/ipset.man.html
Timeout Alle Settypen unterstützen den optionalen Timeout-Parameter beim Erstellen eines Sets und Hinzufügen von Einträgen. Der Wert des Timeout-Parameters für den Befehl „create“ bedeutet den Standard-Timeout-Wert (in Sekunden) für neue Einträge. Wenn ein Set mit Timeout-Unterstützung erstellt wird, kann dieselbe Timeout-Option verwendet werden, um beim Hinzufügen von Einträgen nicht standardmäßige Timeout-Werte anzugeben. Ein Timeout-Wert von Null bedeutet, dass der Eintrag dem Set dauerhaft hinzugefügt wird. Der Timeout-Wert bereits hinzugefügter Elemente kann geändert werden, indem das Element mit der Option -exist erneut hinzugefügt wird. Der größtmögliche Timeout-Wert beträgt 2147483 (in Sekunden).
Der Wert, der für die Erstellung des Timeouts des IP-Sets verwendet wird, ist der Conf-Wert Bantime. Da Sie im Bantime-Conf-Wert -1 haben, tritt in Ihrem System beim Erstellen des IP-Sets für die Jails von Fail2ban ein Fehler auf, da kein IP-Set erstellt wird, weil Sie das System im Wesentlichen etwa wie folgt ausführen lassen:
ipset create fail2ban-sshd hash:ip timeout -1
Der akzeptable Timeout-Wertebereich liegt zwischen 0 und 2147483 Sekunden. Danach wird ohne ein IPset mit dem Namen fail2ban-sshd etwa Folgendes ausgeführt:
firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 -p tcp -m multiport --dports http,https -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
oder:
iptables -t filter -I INPUT_direct 1 -p tcp -m multiport --dports http,https -m set --match-set fail2ban-sshd src -j REJECT --reject-with icmp-port-unreachable
würde sicherlich fehlschlagen, da kein IPset mit dem Namen fail2ban-sshd erstellt wurde. Sie müssen Ihre Bantime von -1 auf 0 ändern.