Fail2ban: Aktionen

Das Verzeichnis action.d/ beherbergt die Aktionen, die Fail2ban ausführen soll, wenn es in einer Log-Datei so viele zu einem Filter passende Einträge findet, dass eine unmittelbare Reaktion Not tut. In der Regel finden sich deswegen an dieser Stelle Anweisungen für die Firewall, doch man kann hier auch E-Mails absetzen oder andere Befehle ausführen. Listing 3 zeigt die Aktion iptables aus Debians Fail2ban-Konfiguration.

Listing 3

[Definition]
# Option:  actionstart
# Notes.:  command executed once at the start of Fail2Ban.
# Values:  CMD
actionstart = iptables -N fail2ban-<name>
              iptables -A fail2ban-<name> -j RETURN
              iptables -I INPUT -p <protocol> --dport <port> -j fail2ban-<name>
# Option:  actionstop
# Notes.:  command executed once at the end of Fail2Ban
# Values:  CMD
actionstop = iptables -D INPUT -p <protocol> --dport <port> -j fail2ban-<name>
             iptables -F fail2ban-<name>
             iptables -X fail2ban-<name>
# Option:  actioncheck
# Notes.:  command executed once before each actionban command
# Values:  CMD
actioncheck = iptables -n -L INPUT | grep -q fail2ban-<name>
# Option:  actionban
# Notes.:  command executed when banning an IP.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
actionban = iptables -I fail2ban-<name> 1 -s <ip> -j DROP
# Option:  actionunban
# Notes.:  command executed when unbanning an IP. Take care that the
#          command is executed with Fail2Ban user rights.
# Tags:    <ip>  IP address
#          <failures>  number of failures
#          <time>  unix timestamp of the ban time
# Values:  CMD
actionunban = iptables -D fail2ban-<name> -s <ip> -j DROP
[Init]
# Defaut name of the chain
name = default
# Option:  port
# Notes.:  specifies port to monitor
# Values:  [ NUM | STRING ]  Default:
port = ssh
# Option:  protocol
# Notes.:  internally used by config reader for interpolations.
# Values:  [ tcp | udp | icmp | all ] Default: tcp
protocol = tcp

Die Option actionstart (Zeile 2) legt eine neue Filterkette fail2ban-<name> an. Diese enthält zu Beginn nur eine Regel, welche den Ball sofort wieder an die übergeordnete Kette zurückspielt (-j RETURN). Die INPUT-Chain wird anschließend angewiesen, alle Pakete für die von Fail2ban kontrollierten Ports und Protokolle an die Chain fail2ban-<name> weiterzureichen. In der Regel passiert hier also noch nichts – actionCheck (Zeile 16) prüft lediglich, ob fail2ban-<name> existiert.

Die Option actionban (Zeile 21) fügt in fail2ban-<name> an erster Stelle eine Regel ein, mit der die Firewall den betroffenen Port für den angreifenden Host sperrt. Bei <ip> handelt es sich um einen Platzhalter, der sowohl eine IP-Adresse als auch einen Hostnamen enthalten kann. Die Option actionunban (Zeile 29) löscht die entsprechende Regel wieder, actionstop (Zeile 9) macht alle in actionstart vorgenommenen Änderungen wieder rückgängig.

Unter [Init] (ab Zeile 38) finden sich lediglich ein paar Variablen, die Fail2ban standardmäßig setzt, falls das aufrufende Jail keine entsprechenden Informationen liefert.

Fail2ban: Jails

Nach der Definition von Aktionen und Filtern gilt es nun noch die Jails einzurichten. Die meisten Distributionen konfigurieren Fail2ban für die gängigsten Dienste bereits vor, sodass Sie nur minimale Anpassungen an den Filtern, Aktionen und Jails vornehmen müssen.

Die Definitionen der Jails lagern in der Datei /etc/fail2ban/jail.conf. Hier tragen Sie beispielsweise ein, wie viele Fehlversuche sie für einzelne Dienste erlauben (maxretry), wie lange ein Port bei zu vielen Fehlversuchen gesperrt bleibt (bantime) und welche Log-Dateien Fail2ban auswertet (logpath).

Listing 4

[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
#ignoreip = 127.0.0.1
bantime  = 600
maxretry = 3
backend = polling
destemail = falko@*
mta = sendmail
banaction = iptables-multiport
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
#defaul action
action = %(action_)s
# JAILS
[ssh]
enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
findtime = 3600
maxretry = 3
bantime = 7200

Listing 4 zeigt einen Auszug aus der jail.conf von Debian. In der Sektion [DEFAULT] legen Sie Standardwerte fest, um diese später nicht ständig wiederholen zu müssen. Ob Sie ignoreip (Zeile 3) setzen, müssen Sie sorgsam abwägen: Der Eintrag darf IP-Adressen einzelner Rechner oder ganzer Netzwerke enthalten. Hier können Angriffe Fail2bans Radar unterlaufen, falls sie von innen erfolgen oder ein Angreifer bereits ein Nutzerkonto übernommen hat. Das backend (Zeile 6) legt fest, wie Fail2ban Log-Dateien überwacht. Neben dem traditionellen polling ist auch der Einsatz des leistungsfähigeren Gamin [4] möglich.

Neben der E-Mail-Adresse des Admins (Zeile 7) und dem zu verwendenden Mail-Programm (Zeile 8) lassen sich auch noch Variablen für verschiedene Aktionen setzen. Den Aktionen wird ein Array mit Variablen übergeben (Zeile 10), deren Werte Fail2ban in der korrespondierenden Konfigurationsdatei in action.d/ einsetzt. Die Entwickler haben hier sogar an Platzhalter für den Namen des Jails gedacht (%(__name__)).

Die Abschnitte für einzelne Jails leiten Sie in eckigen Klammern ein mit dem Namen des Jails ein (Zeile 15). Anschließend folgen Zeilen, in denen Sie festlegen, ob ein Jail aktiv ist (Zeile 16), welche Ports betroffen sind (Zeile 17), welche Filterregeln greifen (Zeile 18) und welche Log-Datei Fail2ban heranzieht (Zeile 19). Ferner dürfen Sie hier die Vorgabewerte etwa für die maximale Anzahl der Fehlversuche oder die Aktion überschreiben.

Das Testen der Filterregeln bringt teilweise erhellende Einsichten – wie etwa die Erkenntnis, dass die standardmäßige bantime und findtime von 600 Sekunden nicht immer ausreicht (siehe Abbildung 1). Dabei legt findtime fest, in welchem Zeitraum potenzielle Angriffe erfolgen müssen, damit Fail2ban sie als zusammenhängend betrachtet (Zeile 20).

Haben Sie alles nach Ihren Vorstellungen eingerichtet, starten Sie Fail2ban mithilfe des Startskripts (unter Debian /etc/init.d/fail2ban) neu oder lesen die überarbeitete Konfiguration ein. Manuell aktivieren Sie Fail2ban via fail2ban-client start. Dass eine neue Konfiguration vorliegt, teilt der Client dem Server mit fail2ban-client reload mit.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Sshguard 1.5 baut Features aus

    Das Tool Sshguard erkennt Angriffe auf Netzwerkdienste und sperrt attackierende Rechner zeitweilig in der Firewall. Nun ist die Open-Source-Software in Version 1.5 mit neuen Features erhältlich.
  • IP-Adressen von Angreifern bockieren
    Wenn Sie auf dem Linux-PC einen Port für den Zugriff von außen freigeben, müssen Sie mit automatisierten Einbruchsversuchen rechnen. Fail2ban sperrt die IP-Adressen der Angreifer. Wir zeigen die Einrichtung für SSH-Logins und Dateitransfers mit der SSH-basierten FTP-Alternative SFTP.
  • Ubuntu User 02/2011 jetzt am Kiosk
    Das neue Ubuntu-User-Heft ist da. Diesmal heißt der Schwerpunkt Home-Server. Wir zeigen, wie Sie Blogs, Foren oder Wikis aufsetzen, die Sie und Ihre Freunde über das Internet erreichen (etwa via Apache-Server, DynDNS und
    Port Forwarding).
Kommentare

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

WLAN-Signalqualität vom Treiber abhängig
GoaSkin , 29.10.2014 14:16, 0 Antworten
Hallo, für einen WLAN-Stick mit Ralink 2870 Chipsatz gibt es einen Treiber von Ralink sowie (m...
Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 6 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...