Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Security<br />
Fail2ban<br />
© Javier Brosch, 123RF<br />
Brute-Force-Angriffe <strong>mit</strong> Fail2ban verhindern<br />
Haus <strong>mit</strong><br />
Hüter<br />
Wer denkt, <strong>mit</strong> dem Schließen aller Ports außer SSH wäre es getan, irrt.<br />
Brute-Force-Angriffe darauf sind trivial <strong>und</strong> gelingen häufig in kurzer Zeit.<br />
Fail2ban schiebt einen Riegel vor. Chris Binnie<br />
Es gibt nur wenige kleine Skripte, die<br />
sich so f<strong>und</strong>amental auf den Betrieb eines<br />
Servers auswirken wie Fail2ban. Deshalb<br />
haben vermutlich auch die meisten<br />
schon einmal davon gehört. Wer Fail2ban<br />
nicht kennt, beschäftigt sich vermutlich<br />
eher <strong>mit</strong> anderen Bereichen der Systemadministration<br />
oder ist ein relativer Neueinsteiger.<br />
Die Skriptsammlung arbeitet <strong>mit</strong> den üblichen<br />
Firewall-Paketen zusammen <strong>und</strong><br />
sperrt IP-Adressen nach einigen gescheiterten<br />
Login-Versuchen aus. Das klingt<br />
vielleicht nicht besonders aufregend,<br />
aber die W<strong>und</strong>er dieses leistungsfähigen<br />
Tools stecken im Detail.<br />
Ich selbst habe Fail2ban vorwiegend für<br />
fehlgeschlagene SSH-Logins verwendet,<br />
was vermutlich die häufigste Anwendung<br />
ist, bevor ich davon genervt war, dass die<br />
Webserver-Logfiles voll <strong>mit</strong> den Spuren<br />
von Angriffsversuchen waren. Überall<br />
fanden sich Spuren davon, versteckte<br />
Verzeichnisse oder verw<strong>und</strong>bare Content-<br />
Management-Systeme zu finden. Außerdem<br />
hatte ich einige Mailserver, die das<br />
Relaying <strong>mit</strong> SASL-Passwort-Authentifizierung<br />
[1] gegen Benutzer-Accounts per<br />
PAM erlaubten. Die SASL-Accounts waren<br />
so eingerichtet, dass man sich da<strong>mit</strong><br />
nicht auf dem System einloggen konnte,<br />
aber trotzdem barg die Authentifizierung<br />
noch ein Restrisiko. Mit Fail2ban konnte<br />
ich einfach die betreffende IP-Adresse<br />
sperren, wenn ein Username dreimal das<br />
falsche Passwort verwendete.<br />
Transparenz<br />
Wie Fail2ban [2] arbeitet, ist leicht erklärt.<br />
Es beobachtet die Logdateien <strong>und</strong><br />
führt eine vordefinierte Aktion aus, wenn<br />
es ein bestimmtes Muster findet. Wie<br />
man diese Filter <strong>und</strong> Aktionen definiert,<br />
wird schnell klar, wenn Fail2bain installiert<br />
ist.<br />
Der erwähnte Einsatz von Fail2ban,<br />
Brute-Force-Attacken auf SSG zu stoppen,<br />
ist auf jeden Fall sehr sinnvoll. Er<br />
reduziert nicht nur das Rauschen in den<br />
Log-Dateien, es ist auch ein Sicherheitsrisiko,<br />
beliebig viele Versuche bei einem<br />
solchen Login zu erlauben. Viele Angriffe<br />
durch Bots lassen sich zusätzlich<br />
verhindern, wenn man den Port ändert,<br />
auf dem SSH läuft. Wer es sich erlauben<br />
kann, etwa weil Anwender immer dieselben<br />
IP-Adressen verwenden, sichert SSH<br />
zusätzlich ab, indem er das Login per<br />
TCP-Wrapper auf bestimmte IP-Adressen<br />
beschränkt [3]. Man sollte daran denken,<br />
dass automatisierte Angriffe äußerst<br />
effizient ablaufen <strong>und</strong> einige Male pro<br />
Sek<strong>und</strong>e ablaufen können. Da<strong>mit</strong> können<br />
Angreifer in wenigen Minuten eine ganze<br />
Menge populärer Passwörter ausprobieren.<br />
Abbildung 1 zeigt eine Logdatei, die<br />
fehlgeschlagene Logins wiedergibt.<br />
Glücklicherweise gibt es bereits einigen<br />
nützliche Skripts, die bei der Installation<br />
von Fail2ban auf der Festplatte landen.<br />
Dabei gibt es einige Abkürzungen, sogenannte<br />
Tags, die man in eigenen Skripts<br />
verwenden kann, zum Beispiel »HOST«.<br />
Das folgende Fragment trifft auf ein fehlgeschlagenes<br />
SSH-Login zu <strong>und</strong> findet<br />
sich auf einem Debian-Rechner in »/etc/<br />
fail2ban/filter.d/sshd.conf«:<br />
failregex = ^%(__prefix_line)sFailed U<br />
(?:password|publickey) for .* from U<br />
(?: port \d*)?(?: ssh\d*)?$<br />
Die Regular Expression trifft auf Zeilen<br />
zu, wie sie in Abbildung 1 zu sehen sind<br />
<strong>und</strong> passt gleichermaßen auf fehlgeschlagene<br />
Logins per Username/Passwort <strong>und</strong><br />
Public/Private Key. Die dritte Zeile macht<br />
von dem erwähnten Host-Tag Gebrauch.<br />
Was die Logfile-Einträge betrifft, die sich<br />
von System zu System zum Teil erheblich<br />
unterscheiden, ist Fail2ban recht flexibel.<br />
Selbst in der Standard-Konfigurationsdatei<br />
für SSH haben die Fail2ban-Entwickler<br />
eine ganze Reihe von Formulierungen für<br />
die »failregex« vorgesehen, von denen<br />
eine für den jeweiligen Einsatzort passen<br />
sollte. Die Beispiel in Listing 1 sind normalerweise<br />
auskommentiert.<br />
Regulär geprüft<br />
Wie erwähnt, kann Fail2ban auch Angriffe<br />
auf den Mailserver abwehren, etwa<br />
Login-Versuchen per SASL. Die Failregex<br />
dafür in »/etc/fail2ban/filter.d/sasl.conf«<br />
sieht etwa so aus:<br />
failregex = (?i): warning: U<br />
[‐._\w]+\[\]: SASL (U<br />
?:LOGIN|PLAIN|(?:CRAM|DIGEST)‐MD5) U<br />
authentication failed: U<br />
authentication failure<br />
Diese Regular Expression trifft auf die<br />
fehlgeschlagenen SASL-Logins zu, die<br />
im Logfile »/var/log/mail.log« so auftauchen.<br />
Der Ausdruck »(?i)« weist Fail2ban<br />
an, nicht auf die Groß- <strong>und</strong> Kleinschrei-<br />
86 Ausgabe 06-2012 Admin www.admin-magazin.de