(habt Verständnis, dass ich mich hier mal selber zitiere:)
Fail2ban ist eine Wissenschaft. habe ich mal geschrieben (Artikel von 2010-02-21 19:00)
Naja, nicht wirklich. Aber die Regular Expression sind es. Einfache Dinge gehen mir mittlerweile gut von der Hand, aber die Lücken sind größer als die Wissensinseln. Wenn man sich allerdings den Wikipedia Artikel ansieht kann man schon zu den Schluss kommen, das es die Regex eine Wissenschaft sind. Für mich sind sie das auch. Anders ist es nicht zu erklären, das ich Stunden brauchte, bis ich den Ausdruck für den apache richtig erstellt hatte.
Doch wie testet man das eigentlich richtig? Dafür hat fail2ban das tool fail2ban-regex mitgeliefert
Der korrekte Aufruf erschließt sich nicht sofort. Der richtige Aufruf lautet:
fail2ban-regex logfile 'regexp'
......-------......
Soweit das Vorgeplänkel, nun zum Problem.
Ich raffe es nicht, eine effektive Regel zu kreieren , die funktioniert aber den echten User in Ruhe lässt.
Dieses habe ich momentan im Einsatz.
Code: Alles auswählen
fail2ban-regex brute.log '^.* <HOST>'
Ein kleiner Ausschnitt aus brute.log, was wiederum ein Ausschnitt aus dem other_vhost_access.log ist
Diese Regex ist natürlich falsch. Die Beispiele, die im Paket sind, passen nicht zum common Log Format vom Apache.xxxxxxxxxx.de:80 108.168.219.163 - - [23/Nov/2014:05:48:26 +0100] "GET /?showfile=../../../../../../../../../../etc/passwd%00 HTTP/1.0" 200 359 "-" "-"
yyyyy.de:80 108.168.219.163 - - [23/Nov/2014:05:48:26 +0100] "GET /?skin=../../../../../../../../../../etc/passwd%00 HTTP/1.0" 200 6619 "-" "-"
zzzzzzzz.de:80 108.168.219.163 - - [23/Nov/2014:05:48:26 +0100] "GET /?ruta=../../../../../../../../../../etc/passwd%00 HTTP/1.0" 200 4526 "-" "-"
xxxxxxxxxxx.de:80 108.168.219.163 - - [23/Nov/2014:05:48:26 +0100] "GET /?side=../../../../../../../../../../etc/passwd%00 HTTP/1.0" 200 359 "-" "-"
yyyyyyyyyy.de:80 108.168.219.163 - - [23/Nov/2014:05:48:26 +0100] "GET /?safehtml=../../../../../../../../../../etc/passwd%00 HTTP/1.0" 200 4526 "-" "-"
xxxxxxxxxxx.de:80 108.168.219.163 - - [23/Nov/2014:05:48:26 +0100] "GET /?site_id=../../../../../../../../../../etc/passwd%00 HTTP/1.0" 200 359 "-" "-"
zzzzzzzz.de:80 108.168.219.163 - - [23/Nov/2014:05:48:26 +0100] "GET /?static=../../../../../../../../../../etc/passwd%00 HTTP/1.0" 200 6619 "-" "-"
Endziel ist eine Regex, die nicht nur diese shellshock versuche stoppt (Ja, die tests sehen anders aus), sondern alles, was einfach Scriptmässig soviel Requests pro Sekunde macht.
Ich habe momentan findtime auf 5 und max. counts auf 46. Damit ist es besser geworden, es erwischt aber nicht nur die bösen Buben, sondern alle und manche gar nicht.
Was soll der Post?
Ich suche ein funktionierendes Beispiel dass bei mir auf wheezy mit Apache funktioniert.
Gibt es fail2ban apache2 filter Sammlung?