Fail2Ban

Aus 1awww.com - Plesk-Server 1
Wechseln zu: Navigation, Suche

Fail2Ban ist ein Log-Auswerter, der direkt nach dem Erzeugen von Log-Files diese nach Mustern scannt und übereinstimmende Muster auf IP-Basis intern zählt und bei Überschreitung einer vorgegebenen Anzahl von Ereignissen, innerhalb eines Zeitraums und auf IP-Basis gruppiert, einen Alarm bzw. eine Aktion auslöst!

Installation

Debian / Ubuntu

apt-get install fail2ban

CentOS

 
yum install fail2ban

Grund-Einrichtung

Fail2Ban muß konfiguriert werden, wobei die Konfigurations-Dateien im Verzeichnis /etc/fail2ban gespeichert sind!
Wir beschreiben hier nur die wichtigsten Änderungen, die Sie durchführen müssen und die sonst unnötige Zeit benötigen, um diese zu studieren!

fail2ban.conf

# für Warnmeldungen am besten:
loglevel = INFO
# Damit die Logs nicht standardmäßig in die System-Logs geschrieben werden, sondern ins Fail2Ban-Log
logtarget = /var/log/fail2ban.log

Die anderen Einstellungen sollten nach der Installation bereits gut sein!

jail.conf

Es kann auch jail.local geben, z.B. bei Plesk. Wenn die Datei jail.local vorhanden ist, sollten Sie alle Änderungen in dieser Datei durchführen, statt in jail.conf! Ist die Datei jail.local nicht vorhanden, dann ändern Sie bitte in der jail.conf!

  • Aufbau der jail.conf:
    • im oberen Teil Grundeinstellungen
    • im nachfolgenden Teil die Einstellungen für die Filter
  • Einstellungen des oberen Teils werden als Default für alle Filter übernommen, es sei denn, diese werden in den Filtern jeweils einzeln überschrieben!
    • Beispiel max_retry = 5 oben definiert, würde für alle Filter gelten, wenn dort nicht max_retry = 10 diesen Wert für den Filter überschreiben würde!

Default-Einstellungen:

Die wichtigsten anzupassenden Einstellungen im oberen Bereich der jail.conf:

# Zeit der Sperrung, nach dem mehrere Zugriffsverletzungen erfolgt sind und die Hacker-IP gesperrt werden soll! Lassen Sie am besten die Default-Werte wie nachfolgend und regeln Sie feiner in den Filtern! Wert in Sekunden (600 = 10 Minuten)
bantime = 600
# Zeit in der pro IP Zugriffsverletzungen gezählt werden. Alle Zugriffsverletzungen außerhalb dieser findtime, werden nicht gezählt! Wert in Sekunden (600 = 10 Minuten)
findtime = 600
# 5 Zugriffsverletzungen der IP für den jeweiligen Filter innerhalb der findtime - bei Überschreiten dieses Wertes, wird ein Alarm oder eine Aktion, in der Regel eine Sperrung (Ban) ausgelöst
maxretry = 5
# Unbedingt hier die IP des eigenen Servers eintragen in beiden Varianten lokal und Netzwerkkarte, damit Fail2Ban nicht Ihren eigenen Server sperrt. Ersetzen Sie die zusätzlichen IPs gegen Ihre richtigen! Sofern Sie ggf. später IPs nie sperren dürfen, können Sie diese Liste jederzeit erweitern! Zwischen verschiedenen IPs ein Leerzeichen. IPs können als Single-IPs oder als CIDR (/Devisor) definiert werden!
ignoreip = 127.0.0.1/8 256.256.256.256 257.257.257.257 258.258.258.258 259.259.259.259/32
backend = auto
# Sender-Mail-Adresse: Ersetzen Sie den Server-Namen gegen den Hostnamen des Servers!
sender = fail2ban@<Server-Name>
# Empfänger-Mail-Adresse: Ersetzen Sie beim Installieren hier die Mail-Adresse mit Ihrer eigenen Mail-Adresse, um Mails von Fail2Ban zu erhalten!
destemail = <MeineMail-Adresse>
# Ban-Action - suchen Sie die letzte Zeile vor den JAILS! und passen Sie diese Zeile wie folgt an:
action = %(action_mwl)s

Die letzte Zeile hat es besonders in sich und wenn Sie den Wert geändert haben, dann schauen Sie wieder weiter hoch, was action_mwl bedeutet. Wir erklären es hier mit einfachen Worten:

  • Ban-Action - also bannen der Hacker-IP
  • Mail versenden mit Whois - Information UND einem Cut der Log-Zeilen der IP zu dem Hacking-Ereignis

Halten wir also fest, wir bekommen also eine Mail zugeschickt, die die whois-Informationen enthält und die Log-Zeilen und gleichzeitig wird die Hacker-IP für den Zeitraum bantime gesperrt und danach automatisch wieder entsperrt!

Filter-Einstellungen (JAILS:)

Es werden in der jail.conf unter den Default-Einstellungen mehrere Jails definiert! Jeder Jail kann einzeln aktiviert oder deaktiviert werden! Wir sollten genau prüfen, ob wir den Jail verwenden können oder nicht, denn unnötiges laden von Jails belastet unnötig den Server!

# Name des Jails ssh:
[sshd]
# Filter SSH - mehrere Jails können den gleichen Filter verwenden! Wird filter nicht im Jail gesetzt, wird der Filter aus dem Namen des Jails abgeleitet. Der Filter muß im Verzeichnis als filter definiert sein - siehe weiter unten!
# Wir können also mehrere Jails auf machen und den gleichen Filter verwenden, zum Beispiel Jail ssh2 oder ssh-ddos und den gleichen Filter ssh verwenden. Dies um einfach größere Zeiträume zu definieren, wenn Angriffe sich wiederholen!
# Aber vergessen wir das jetzt hier!
filter = sshd
# Jail aktiviert (true) oder Deaktiviert (false):
enabled = true
# Port - für IP-Sperrung auf nur diesem Port
port = ssh
# Logpfad auf die Datei, wo die Protokollierung für fehlerhafte Logins oder Aktionen für SSH protokolliert werden:
logpath = /var/log/auth.log
# logpath auch möglich: /var/log/secure je OS - bitte prüfen, wo fehlerhafte SSH-Logins etc. geloggt werden!
# Zeit in der pro IP Zugriffsverletzungen nur für diesen Jail gezählt werden. Alle Zugriffsverletzungen außerhalb dieser findtime, werden nicht gezählt! Wert in Sekunden (600 = 10 Minuten)
findtime = 600
# Zeit der Sperrung, nach dem mehrere Zugriffsverletzungen erfolgt sind und die Hacker-IP gesperrt werden soll! Lassen Sie am besten die Default-Werte wie nachfolgend und regeln Sie feiner in den Filtern! Wert in Sekunden (600 = 10 Minuten)
bantime = 600
# 3 Zugriffsverletzungen der IP für den SSH-Jail innerhalb der findtime - bei Überschreiten dieses Wertes, wird ein Alarm oder eine Aktion, in der Regel eine Sperrung (Ban) ausgelöst
# wenn wir mit SSH-Keys arbeiten, loggen wir uns selbst nie fehlerhaft ein, weil wir ja den Schlüssel übertragen. Wir brauchen also nicht 5 mal zu warten, weil wir uns ggf. selbst vertippen. Wir können diesen Wert auch auf 1 reduzieren, wenn nur 
# wir uns via SSH verbinden!
maxretry = 3
# Action normal keinen hier, weil wir übernehmen die Default-Einstellungen

Aktivieren von Fail2Ban und Testen

Wenn Sie die ersten Tests machen, dann ist es wichtig, daß Sie Ihre Mail-Adresse als Empfänger eingetragen haben und keine andere !!! Prüfen Sie dies noch mal!

# Wir stoppen den evtl. bereits laufenden Daemon-Prozess von Fail2Ban (diese Variante funktioniert bei den meisten OS-Derivaten):
service fail2ban stop
# Sollte Service zu einem Fehler führen, so verwenden Sie bei alten OSs:
# cd /etc/init.d
# ./fail2ban stop
# sollte service nicht funktionieren bei neuen System.d Services, dann:
# systemctl stop fail2ban 

# Wir starten fail2ban
service fail2ban start

# Wir prüfen ob fail2ban läuft
service fail2ban status

# Job-Anzeige:
ps -ef | grep fail2ban

# Log-Prüfung:
cd /var/log
cat fail2ban.log

# letzte Zeilen abrufen
tail fail2ban.log

# letzte Zeilen fortlaufend anzeigen - und dann in diesem Status so lassen für den nächsten Test:
tail -f fail2ban.log

In der Shell-Konsole sehen wir fortlaufend die Ereignisse, die fail2ban erkennt und protokolliert! Wir wollen jetzt mal testen, ob Fail2Ban erkennt, daß wir versuchen uns illegal in den Server zu hacken! Bauen Sie über Ihr SSH-Programm (Putty) eine Verbindung zu Ihrem Server auf und machen Sie 5 mal Fehler! Wenn alles gut gelaufen ist, sehen Sie in der SSH-Konsole folgende Einträge in etwa:

2018-03-16 11:42:12,135 fail2ban.filter         [18625]: INFO    [sshd] Found 256.256.256.256
2018-03-16 11:42:12,137 fail2ban.filter         [18625]: INFO    [sshd] Found 256.256.256.256
2018-03-16 11:42:12,140 fail2ban.filter         [18625]: INFO    [sshd] Found 256.256.256.256
2018-03-16 11:42:12,145 fail2ban.filter         [18625]: INFO    [sshd] Ban 256.256.256.256
  • Garantiert ist nun Ihre SSH-Konsole für Sie geblockt!
  • Sie können mit STRG+C nicht mehr abbrechen.
  • Sie können keine neue SSH-Session zu Ihrem SSH-Server öffnen.
  • Ihre IP ist geblockt für 600 Sekunden!
  • Waren die vorherigen Aussagen richtig? Dann war Ihr Test erfolgreich!

Warten Sie bitte die 600 Sekunden ab und warten Sie auf den Eingang der Mail von Ihrem Server!

Enthält die Mail die whois-Zeilen zur IP und die Log-Zeilen, dann ist auch die Mail erfolgreich versendet worden!

Fail2Ban läuft nicht einwandfrei - Ursachen-Forschung:

Fail2Ban lässt sich nicht starten

  • Prüfen Sie genau die Einstellungen, prüfen Sie das Log-File von Failban /var/log und im Demon-Log für weitere Infos /var/log/daemon.log (die letzten Zeilen)
  • Entspricht der Filter im Jail auch dem Filter-Namen im Unterverzeichnis filter? -> siehe Filter, weiter unten
  • Ist der Aktion-Handler vorhanden - Auswahl MTA mit ausgewähltem action im Verzeichnis actions ? - probieren Sie ansonsten anstatt "action = %(action_mwl)s" bitte "action = %(action_)s"
    • dann kommen jetzt keine Mails mehr, aber funktioniert dann Fail2Ban? Wenn ja: --> lassen Sie sich vom 1awww-Support helfen, wenn Sie mit action ein Problem haben!

Fail2Ban Mail kommt nicht an

  • Prüfen Sie die Mail-Log-Datei in der Regel /var/log/mail.info oder /var/log/maillog
  • Evtl. darf Ihr Server keine Mails versenden - dann setzten Sie sich bitte mit dem Support in Verbindung

Fail2Ban Mails kommen an, aber ohne whois-Informationen

  • Funktioniert der Aufruf in der SSH-Konsole mit whois <Domain>?
  • wenn nein, installieren Sie whois mit:
apt-get install whois 

Fail2Ban Mails kommen an, aber ohne Log-Zeilen

  • Prüfen Sie, ob action richtig eingestellt ist, siehe ganz oben Default - Infos
  • wenn dies nichts bringt, nehmen Sie die Uralt-Anweisungen in jedem Filter:
action = iptables[name=ssh, port=ssh, protocol=tcp]
        %(mta)s-whois-lines[name=%(__name__)s, dest="<IhreMail-Adresse", logpath="/var/logs/auth.log"]
  • ansonsten fordern Sie Hilfe vom Support an

Fail2Ban für weitere Jails

  • Diverse Jails werden in der Regel mit dem OS mit gegeben. Manche davon funktionieren aber nicht! Prüfen Sie also genau aus, ob die Jails ansprechen! Denken Sie bitte daran, daß Sie findtime / bantime / max_retry entsprechend anpassen müssen!

Aufbau Filter zu den Filter-Dateien

  • Im Jail wird der filter mit angegeben bzw. wenn dieser nicht mit angegeben wird, verwendet Fail2Ban den Filter, der den gleichen Namen wie der Jail hat!
  • Im Unterverzeichnis /etc/fail2ban/filter.d sind diese Filter definiert.
  • Der Dateiname im Subverzeichnis filter.d + Extension .conf entspricht dem Namen des Filters im Jail!
  • Im Filter stehen die Anweisungen, für die Suche im jeweiligen Log-File!

Filter testen

  • Ermitteln Sie das dazugehörige Log-File
  • Ermitteln Sie den zu verwendenden Filter
  • Testen Sie den Filter wie folgt aus, wobei Sie beachten müssen, da ja die Einstellungen des Jails aus der Konfiguration nicht beim Testen gesetzt sind, werden alle Ergebnisse ohne Zeit-Faktor gelistet:

Beispiel für SSH

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

Machen Sie die Ergebnisse sichtbar - leider in älteren Versionen nicht möglich:

fail2ban-regex --print-all-matched /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

Weitere Möglichkeiten ergeben sich in der Doku zu dem Befehl:

man fail2ban-regex

laufendes Fail2Ban tesen

#Alle Einstellungen anzeigen
fail2ban-client -d 
#Status eines Jails abfragen
fail2ban-client status <Jail>
fail2ban-client status sshd
# Actions eines Jails abfragen
fail2ban-client get <Jail> actions
fail2ban-client get sshd actions
# Manuell eine IP bannen:
fail2ban-client set <Jail> banip <IP>
fail2ban-client set sshd banip 234.234.234.234

Fail2Ban aktiv machen für Blocklist.de und Anti-Attacks.com

Nur wenn Ihre Mails von Fail2Ban sauber Ihnen zugestellt werden und whois und log-Informationen enthalten, wird es Zeit, nun diese Hacker weiter zu melden an Blocklist.de und Anti-Attacks.com! Anti-Attacks.com ist ein Service von 1awww.com! Dieses System sorgt dafür, daß die gesammelten Hacking-Informationen auf einer ganz anderen Ebene als bei Blocklist.de ausgewertet werden und auch zu Sperrlisten-Generierungen führt, die verwendet werden, um alle Nutzer von Fail2Ban vor Hackern zu schützen! Diverse Internet-Service-Provider und sogar ein großes Rechenzentrum verwendet bereits diese Sperrlisten, um Hacker erfolgreich zu sperren!

  • Server, die fehlerhafte Mails übermitteln (fehlende whois/fehlende Logs), werden aus der Verarbeitung ausgeschlossen und wir nehmen mit Ihnen Kontakt auf
  • Server, die unsere Dienste für illegale Zwecke missbrauchen, werden dauerhaft black gelistet!
  • Nehmen Sie Kontakt mit uns auf, damit wir Ihnen die Mail-Adressen mitteilen, die Sie als dest austauschen müssen. Ggf. finden Sie diese bereits in unserer Support-Mail