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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!