Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Fail2ban<br />
Security<br />
Die eigentliche Blockade wird von der<br />
jeweiligen Firewall-Software ausgeführt,<br />
im Beispiel-Fall ist dies Linux-IPTables.<br />
In der Datei »/etc/fail2ban/action.d/<br />
iptables‐multiport.conf« finden sich dafür<br />
die Einstellungen:<br />
Actionban: actionban = iptables U<br />
‐I fail2ban‐Name 1 ‐s IP ‐j DROP<br />
Actionunban: actionunban = iptables U<br />
‐D fail2ban‐Name ‐s IP ‐j DROP<br />
Abbildung 1: So tauchen fehlgeschlagene Login-Versuche in einer Logdatei auf.<br />
bung der Strings zu achten (case insensitive).<br />
Die Syntax gehorcht den Regeln der<br />
Python Regular Expressions.<br />
Layout<br />
Die bisher erwähnten Konfigurationsdateien<br />
liegen im Unterverzeichnis<br />
»filter.d«, wo sich auch noch eine Reihe<br />
weiterer Anwendungen findet. Wenn sie<br />
nicht h<strong>und</strong>ertprozentig auf das eigene<br />
Betriebssystem zutreffen, muss man sie<br />
gegebenenfalls anpassen. Auf der Fail-<br />
2ban-Site gibt es für einige Services noch<br />
spezifische Howto-Dokumente, die weiterhelfen.<br />
Die Haupt-Konfigurationsdatei heißt »jail.<br />
conf« <strong>und</strong> enthält viele nützliche Hinweise.<br />
So lässt sich <strong>mit</strong> »ignoreip« eine IP-<br />
Adresse oder eine ganzes Netz einstellen,<br />
das von der Blockade ausgenommen ist,<br />
da<strong>mit</strong> sich der Admin nicht versehentlich<br />
selbst aussperrt. Außerdem enthält die<br />
Datei Default-Einstellungen, die für alle<br />
Dienste gelten, solange diese sie nicht<br />
überschreiben, etwa:<br />
bantime = 3600<br />
maxretry = 3<br />
Hier<strong>mit</strong> hat jeder Anwender drei Versuche<br />
frei, sein Glück zu versuchen. Das<br />
ist recht restriktiv <strong>und</strong> vielleicht zu restriktiv<br />
für viele Situationen. Die »bantime«<br />
legt in Sek<strong>und</strong>en fest, wie lange eine IP-<br />
Adresse ausgesperrt bleibt.<br />
Auch der Backend-Daemon, der die Logdateien<br />
überprüft, lässt sich festlegen.<br />
Hier ist »gamin« eine gute Wahl, denn<br />
hier<strong>mit</strong> wird Fail2ban über Änderungen<br />
unterrichtet <strong>und</strong> das System so<strong>mit</strong> weniger<br />
belastet als durch eine ständige Überprüfung.<br />
Laut Fail2ban-Dokumentation<br />
ist diese Einstellung auf Fedora- <strong>und</strong> Red-<br />
Hat-Systemen sogar obligatorisch, weil<br />
der Logscanner sonst in Konflikt <strong>mit</strong> SE-<br />
Linux gerät.<br />
Im Verzeichnis »actions.d« sind schließlich<br />
die Maßnahmen aufgeführt, die Fail-<br />
2ban ergreift. Der Rest der Datei »jails.<br />
conf« besteht aus jeweils einer kurzen<br />
Defintion für den zu überwachenden<br />
Dienst, der sich über die Anweisung<br />
»enabled« ein- <strong>und</strong> ausschalten lässt:<br />
[sasl]<br />
enabled<br />
port<br />
filter<br />
logpath<br />
= true<br />
= smtp<br />
= sasl<br />
= /var/log/mail.log<br />
Statt konkrete Gegenmaßnahmen zu starten,<br />
kann Fail2ban auch nur einen Trigger<br />
auslösen. Die komplette Breitseite feuert<br />
dagegen Listing 2 ab, das den mutmaßlichen<br />
Angreifer blockiert <strong>und</strong> eine E-Mail<br />
<strong>mit</strong> den Logdaten <strong>und</strong> einem Whois-Auszug<br />
der IP-Adresse verschickt.<br />
Listing 1: Failregex-Beispiele<br />
Listing 2: Aktionen: Sperren <strong>und</strong> Mailen<br />
Mit der ersten Zeile wird ein Eintrag in<br />
der Firewall vorgenommen, der die IP-<br />
Adresse »IP« sperrt, die aus dem Muster<br />
der Failregex stammt.<br />
Fazit<br />
Fail2ban kann helfen, Brute-Force-Attacken<br />
auf alle möglichen Dienste zu verhindern<br />
oder zumindest wesentlich zu<br />
bremsen. Vorausgesetzt wird vernünftiges<br />
Logging des jeweiligen Service <strong>und</strong><br />
Kenntnisse von Regular Expressions<br />
auf Seiten des Administrators. Nach der<br />
Installation sollte man gelegentlich einen<br />
Blick in »/var/log/fail2ban.log« werfen<br />
<strong>und</strong> die Erfolgsquote des neuen Wächters<br />
überprüfen. (ofr)<br />
n<br />
Infos<br />
[1] SASL: [http:// en. wikipedia. org/ wiki/ Simple_<br />
Authentication_and_Security_Layer]<br />
[2] Fail2ban: [http:// www. fail2ban. org/]<br />
[3] TCP-Wrapper: [http:// en. wikipedia. org/<br />
wiki/ TCP_Wrapper]<br />
01 failregex = ^%(__prefix_line)s(?:error: PAM: )?Authentication failure for .* from \s*$<br />
02 ^%(__prefix_line)s(?:error: PAM: )?User not known to the <strong>und</strong>erlying authentication module<br />
for .* from\s*$<br />
03 ^%(__prefix_line)sFailed (?:password|publickey) for .* from (?: port \d*)?(?:<br />
ssh\d*)?$<br />
04 ^%(__prefix_line)sROOT LOGIN REFUSED.* FROM \s*$<br />
05 ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from \s*$<br />
06 ^%(__prefix_line)sUser .+ from not allowed because not listed in AllowUsers$<br />
07 ^%(__prefix_line)sauthentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S*<br />
rhost=(?:\s+user=.*)?\s*$<br />
08 ^%(__prefix_line)srefused connect from \S+ \(\)\s*$<br />
09 ^%(__prefix_line)sAddress .* POSSIBLE BREAK‐IN ATTEMPT!*\s*$<br />
10 ^%(__prefix_line)sUser .+ from not allowed because none of user's groups are listed<br />
in AllowGroups\s*$<br />
01 # ban the IP & send an e‐mail with whois report and include relevant log lines to the destemail<br />
02 action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]<br />
03 %(mta)s‐whois‐lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]<br />
www.admin-magazin.de<br />
Admin<br />
Ausgabe 06-2012<br />
87