Server Dienst Zugangskontrolle: fail2ban

Eine weitere Möglichkeit Brute Force Angriffe1) auf einen Server zu unterbinden bietet »fail2ban«2)3). Hier wird ein anderer Ansatz beschrieben, wie man die IP Adresse des Angreifers wirksam blockieren kann. Im -> Blockhosts Tutorial4) wurde die Strategie verfolgt, die IP Adresse des Angreifers in der Datei »/etc/hosts.{allow|deny}« mit dem deny-Flag zu parken und somit vorübergehend den Zugang zum System zu verweigern. Das hat ein paar gravierende Nachteile, denn damit die »/etc/Hosts.{allow|deny}« ausgewertet wird, muss der Service entweder über einen TCP-Wrapper5) gestartet werden oder zumindest mit der »libwrap«6) Bibliothek verlinkt sein.

»fail2ban« legt nun den Finger genau in die Wunde und erstellt statt einen Eintrag in der »hosts.{allow|deny}« eine dynamische Iptables-Regel7), was den Angreifer bereits blockiert, bevor er den Dienst erreicht und dadurch System Ressourcen geschont werden, da der Angreifer erst gar nicht bis zum Login kommt. Der Vollständigkeit wegen sein noch erwähnt, dass auch Blockhosts in der Lage ist dynamische Iptables Regeln zu erstellen.

Iptables Paketfilter:

»fail2ban« wertet diverse Logfiles aus und erstellt dynamisch nach einer konfigurierbaren Anzahl fehlgeschlagener Anmeldeversuche Iptables-Regeln, welche die in Ungnade gefallene IP-Adresse für einen konfigurierbaren Zeitraum ins Nirvana routet. Iptables ist ein Paketfilter (Netfilter) welcher bei vielen Linux-Distributionen bereits im Standardumfang enthalten ist. Dieser Filter ist bereits aktiv, enthält jedoch erst mal keine Regeln. Mit dem Kommando »iptables -L« können Sie sich den derzeit aktuellen Regelsatz anzeigen lassen:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Achtung: Sollten Ihnen hier bereits Regel angezeigt werden, wurde der Paketfilter bereits konfiguriert. Sie sollten dann unbedingt prüfen, inwieweit die von fail2ban verwendeten Regel-Mechanismen mit den bereits konfigurierten kollidieren!

Nach der Installation von »fail2ban« wird dem Iptables Regelsatz eine neue Chain hinzugefügt:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere

Installation:

Die Installation auf einem Debian System ist gewohnt einfach:

# aptitude install fail2ban

…und die Sache ist schon erledigt. »fail2ban« hat bereits out of the box eine "scharfe" Einstellung für den SSH Zugang des Systems. Sie müssen lediglich noch den ssh-Daemon neu starten und ab dann wird der SSH Zugang überwacht und ggf nach den fail2ban Default Einstellungen (3 fehlgeschlagene Anmeldeversuche; 10 Minuten) gesperrt.

# /etc/init.d/ssh restart

Konfiguration:

Der Standardpfad für die Konfigurations-Dateien auf einem Debian System ist »/etc/fail2ban/«:

/etc/fail2ban# tree
.
|-- action.d
|   |-- hostsdeny.conf
|   |-- ipfw.conf
|   |-- iptables-allports.conf
|   |-- iptables-multiport-log.conf
|   |-- iptables-multiport.conf
|   |-- iptables-new.conf
|   |-- iptables.conf
|   |-- mail-buffered.conf
|   |-- mail-whois-lines.conf
|   |-- mail-whois.conf
|   |-- mail.conf
|   |-- sendmail-buffered.conf
|   |-- sendmail-whois-lines.conf
|   |-- sendmail-whois.conf
|   |-- sendmail.conf
|   `-- shorewall.conf
|-- fail2ban.conf
|-- filter.d
|   |-- apache-auth.conf
|   |-- apache-badbots.conf
|   |-- apache-noscript.conf
|   |-- apache-overflows.conf
|   |-- common.conf
|   |-- courierlogin.conf
|   |-- couriersmtp.conf
|   |-- exim.conf
|   |-- gssftpd.conf
|   |-- named-refused.conf
|   |-- pam-generic.conf
|   |-- postfix.conf
|   |-- proftpd.conf
|   |-- pure-ftpd.conf
|   |-- qmail.conf
|   |-- sasl.conf
|   |-- sshd-ddos.conf
|   |-- sshd.conf
|   |-- vsftpd.conf
|   |-- webmin-auth.conf
|   |-- wuftpd.conf
|   `-- xinetd-fail.conf
`-- jail.conf

Jede ».conf« Datei kann mit einer ».local« Datei überschrieben werden. Zuerst wird die conf-Datei gelesen, danach die local-Datei (falls vorhanden), welche die Einstellungen der conf-Datei überschreibt. Die local-Dateien bleiben bei einem Update unangetastet, Sie sollten demnach Ihre persönlichen Einstellungen in den local-Dateien vornehmen.

Grundeinstellungen:

In der Datei »fail2ban.conf« werden die Grundeinstellungen für den fail2ban-server Daemon vorgenommen. Das beinhaltet zB den Loglevel, das fail2ban-Logfile und den Socket-Pfad.

Jails:

tux/fail2ban.txt (8052 views) · Zuletzt geändert: 2011/04/16 21:48 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0