26.02.2014 Aufrufe

ADMIN Magazin Gestapelt - Schneller und sicherer mit RAID (Vorschau)

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!