it-swarm.com.de

Permanenter IP-Block nach n Wiederholungsversuchen mit fail2ban

Ich habe ein fail2ban wie folgt konfiguriert:

  • blockiere die IP nach 3 fehlgeschlagenen Versuchen
  • geben Sie die IP nach 300 Sekunden frei

Dies funktioniert perfekt und ich möchte es so halten, dass ein gültiger Benutzer die Möglichkeit erhält, die Anmeldung nach dem Timeout erneut zu versuchen. Jetzt möchte ich eine Regel implementieren, nach der, wenn dieselbe IP als Angriff erkannt und blockiert wird, fünfmal entsperrt wird, die IP dauerhaft blockiert und nie wieder entsperrt wird. Kann dies allein mit fail2ban erreicht werden oder muss ich dazu mein eigenes Skript schreiben?

Ich mache das in Centos.

39
BTR Naidu

Vor 0.11 gab es keine Standardfunktion oder eine Einstellung in fail2ban , um dies zu erreichen. Ab der kommenden Version 0.11 wird die Sperrzeit automatisch berechnet und nimmt mit jeder neuen Straftat exponentiell zu, was auf lange Sicht eine mehr oder weniger dauerhafte Sperrung bedeutet.

Bis dahin besteht Ihr bester Ansatz wahrscheinlich darin, fail2ban einzurichten , um seine eigene Protokolldatei zu überwachen. Es ist ein zweistufiger Prozess ...

Schritt 1

Möglicherweise müssen wir einen Filter erstellen, um nach [~ # ~] ban [~ # ~] befindet sich in der Protokolldatei (Fail2Bans Protokolldatei)

Schritt 2

Wir müssen das Gefängnis definieren, ähnlich wie im Folgenden ...

 [fail2ban] 
 enabled = true 
 Filter = fail2ban 
 action = iptables-allports [name = fail2ban] 
 Logpath =/path/to /fail2ban.log[.____.‹# findtime: 1 Tag 
 findtime = 86400 
 # bantime: 1 Jahr 
 bantime = 31536000 

Technisch gesehen ist es kein permanenter Block , sondern nur Blöcke für ein Jahr (die wir auch erhöhen können).

Wie auch immer, für Ihre Frage (Kann dies nur mit fail2ban erreicht werden oder muss ich mein eigenes Skript schreiben, um das zu tun?) ... das Schreiben eines eigenen Skripts könnte gut funktionieren. Einrichten des Skripts zum Extrahieren der häufig gesperrten IPs und anschließendes Einfügen in /etc/hosts.deny würde ich empfehlen.

33
Pothi Kalimuthu

Ich glaube, wenn Sie bantime = -1 in diesem Konfigurationsabschnitt ist es ein permanenter Block.

31
J. Chin

Phil Hagen hat einen ausgezeichneten Artikel zu diesem Thema geschrieben. " Wiederholungstäter mit fail2ban dauerhaft verbieten ".

Sein Vorschlag ist der gleiche wie der von Pothi, bietet jedoch eine schrittweise Anleitung.

Dies beinhaltete:

  • separate Verbotsliste nach Gefängnis (ip.blocklist.ssh, ip.blocklist.xxx)
  • Ban-Listen werden automatisch geladen, wenn der Dienst neu gestartet wird (Hauptvorteil dieser Methode imho)
  • e-Mail-Benachrichtigung, wenn der Repeater aktiviert ist.
14
xaa

Um Chin's Antwort zu erweitern, ist dies ziemlich einfach. Bearbeiten Sie einfach die 2 Einstellungen in /etc/fail2ban/jail.local um Ihren Vorlieben zu entsprechen.

 # ban time in seconds. Use -1 for forever. Example is 1 week.
 bantime  = 604800
 # number of failures before banning
 maxretry = 5
6
Casey Watson

fail2ban hat bereits ein Gefängnis, um Rückfälligkeit zu verbieten. Wenn Sie /etc/fail2ban/jail.conf, du wirst finden:

# Jail for more extended banning of persistent abusers
# !!! WARNING !!!
#   Make sure that your loglevel specified in fail2ban.conf/.local
#   is not at DEBUG level -- which might then cause fail2ban to fall into
#   an infinite loop constantly feeding itself with non-informative lines
[recidive]

enabled  = false
filter   = recidive
logpath  = /var/log/fail2ban.log
action   = iptables-allports[name=recidive]
           sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
bantime  = 604800  ; 1 week
findtime = 86400   ; 1 day
maxretry = 5

Wie füge ich in jail.local hinzu?

[recidive]
enabled  = true
bantime  = 31536000  ; 1 year
findtime = 18144000  ; 1 month
maxretry = 2

Zur Überprüfung von Google Level können Sie Folgendes tun: fail2ban-client get loglevel.

  • setze loglevel MYLEVEL : Setzt die Protokollierungsstufe auf MYLEVEL. Stufen: KRITISCH, FEHLER, WARNUNG, HINWEIS, INFO, DEBUG
  • Mehr Befehl im Wiki .

Mit der alten Version von fail2ban können Sie diesen Fehler erhalten.

5
A-312

Gehen Sie zu vim und öffnen Sie /etc/fail2ban/jail.conf

und ändern Sie einfach nach fail2ban service restart:

# "bantime" is the number of seconds that a Host is banned.
bantime  = ***1296000***

# A Host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = ***60000***

# "maxretry" is the number of failures before a Host get banned.
maxretry = ***3***
0
Tanveer Ahmad