fail2ban Regex hilfe

amordeo1976

New Member
Hallo

ich möchte aus meine apache Log, folegdne Meldungen mit fail2ban abfangen und dann die IP blockeren mit den iptables.

aber wie muss ich hierfür den regex erstellen?

Code:
error_log:[Thu Sep 17 16:55:25 2009] [error] [client X.X.X.X] Directory index forbidden by Options directive: /var/www/vhosts/xxxx.com/httpdocs/css/
 
Der regex funktioniert für deinen Log-Eintrag
Code:
[[]client <HOST>[]] Directory index forbidden by Options directive

Du kannst es per Shell testen.
Code:
 fail2ban-regex '[Thu Sep 17 16:55:25 2009] [error] [client 1.2.3.4] Directory index forbidden by Options directive: /var/www/vhosts/xxxx.com/httpdocs/css/'     '[[]client <HOST>[]] Directory index forbidden by Options directive'
 
Last edited by a moderator:
Ich versuche nun seit Stunden file2ban zu konfigurieren.
Aktuell scheitert es an der Erstellung einer regex Regel die für einen Laien schon recht heftig sind.

Vielleicht kann mir ja hier einer der Experten helfen?
Ich möchte Leute bannen die in meinem error_log folgende Einträge generieren:
Code:
68.97.118.20 - - [12/Oct/2009:18:48:18 +0200] "GET /images/bluefox/misc/logoblue2.jpg HTTP/1.1" 404 1033 "-" "-"

Könnte mir da bitte jemand helfen?

Ich habs mal mit sowas probiert:
failregex = [[]client <HOST>[]] "GET /images/bluefox/misc/logoblue2.jpg
aber ich sehe nicht das fail2ban irgendwas macht und mit iptables bannt.

/usr/local/bin/fail2ban-client -d zeigt folgendes an:
Code:
['set', 'loglevel', 3]
['set', 'logtarget', '/var/log/fail2ban.log']
['add', 'apache-wowbot', 'polling']
['set', 'apache-wowbot', 'addlogpath', '/path/logs/error_log']
['set', 'apache-wowbot', 'maxretry', 1]
['set', 'apache-wowbot', 'addignoreip', '127.0.0.1']
['set', 'apache-wowbot', 'findtime', 600]
['set', 'apache-wowbot', 'bantime', 600]
['set', 'apache-wowbot', 'addfailregex', '[[]client <HOST>[]] "GET /images/bluefox/misc/logoblue2.jpg']
['set', 'apache-wowbot', 'addaction', 'iptables-allports']
['set', 'apache-wowbot', 'actionban', 'iptables-allports', 'iptables -I fail2ban-<name> 1 -s <ip> -j DROP']
['set', 'apache-wowbot', 'actionstop', 'iptables-allports', 'iptables -D INPUT -p <protocol> -j fail2ban-<name>\niptables -F fail2ban-<name>\niptables -X fail2ban-<name>']
['set', 'apache-wowbot', 'actionstart', 'iptables-allports', 'iptables -N fail2ban-<name>\niptables -A fail2ban-<name> -j RETURN\niptables -I INPUT -p <protocol> -j fail2ban-<name>']
['set', 'apache-wowbot', 'actionunban', 'iptables-allports', 'iptables -D fail2ban-<name> -s <ip> -j DROP']
['set', 'apache-wowbot', 'actioncheck', 'iptables-allports', 'iptables -n -L INPUT | grep -q fail2ban-<name>']
['set', 'apache-wowbot', 'setcinfo', 'iptables-allports', 'protocol', 'all']
['set', 'apache-wowbot', 'setcinfo', 'iptables-allports', 'name', 'wowbot']
['set', 'apache-wowbot', 'addaction', 'sendmail-whois']
['set', 'apache-wowbot', 'actionban', 'sendmail-whois', 'printf %b "Subject: [Fail2Ban] <name>: banned <ip>\nFrom: Fail2Ban <<sender>>\nTo: <dest>\\n\nHi,\\n\nThe IP <ip> has just been banned by Fail2Ban after\n<failures> attempts against <name>.\\n\\n\nHere are more information about <ip>:\\n\n`/usr/bin/whois <ip>`\\n\nRegards,\\n\nFail2Ban" | /usr/sbin/sendmail -f <sender> <dest>']
['set', 'apache-wowbot', 'actionstop', 'sendmail-whois', 'printf %b "Subject: [Fail2Ban] <name>: stopped\nFrom: Fail2Ban <<sender>>\nTo: <dest>\\n\nHi,\\n\nThe jail <name> has been stopped.\\n\nRegards,\\n\nFail2Ban" | /usr/sbin/sendmail -f <sender> <dest>']
['set', 'apache-wowbot', 'actionstart', 'sendmail-whois', 'printf %b "Subject: [Fail2Ban] <name>: started\nFrom: Fail2Ban <<sender>>\nTo: <dest>\\n\nHi,\\n\nThe jail <name> has been started successfully.\\n\nRegards,\\n\nFail2Ban" | /usr/sbin/sendmail -f <sender> <dest>']
['set', 'apache-wowbot', 'actionunban', 'sendmail-whois', '']
['set', 'apache-wowbot', 'actioncheck', 'sendmail-whois', '']
['set', 'apache-wowbot', 'setcinfo', 'sendmail-whois', 'dest', 'root']
['set', 'apache-wowbot', 'setcinfo', 'sendmail-whois', 'name', 'wowbot']
['set', 'apache-wowbot', 'setcinfo', 'sendmail-whois', 'sender', 'fail2ban@piroxbots.com']
['start', 'apache-wowbot']

Ein tail -f auf den fail2ban Logfile zeigt mir schon dass etwas gestartet wurde:

Code:
2009-10-12 20:18:48,269 fail2ban.server : INFO   Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.4
2009-10-12 20:18:48,270 fail2ban.jail   : INFO   Creating new jail 'apache-wowbot'
2009-10-12 20:18:48,270 fail2ban.jail   : INFO   Jail 'apache-wowbot' uses poller
2009-10-12 20:18:48,297 fail2ban.filter : INFO   Added logfile = /path/logs/error_log
2009-10-12 20:18:48,298 fail2ban.filter : INFO   Set maxRetry = 1
2009-10-12 20:18:48,299 fail2ban.filter : INFO   Set findtime = 600
2009-10-12 20:18:48,300 fail2ban.actions: INFO   Set banTime = 600
2009-10-12 20:18:48,325 fail2ban.jail   : INFO   Jail 'apache-wowbot' started

Ich glaub ich bin nah dran aber vom vielen Lesen und Probieren seh ich den Wald vor lauter Bäumen nicht mehr.
 
Last edited by a moderator:
Hi,
der Regex von dir schlägt bei dem Log bei mir nicht an.

Probiere mal:
Code:
^<HOST> -.*"GET /images/bluefox/misc/logoblue2.jpg.*$
Mit freundlichen Grüßen
flobbie
 
Ich denke mal fial2ban kommt mit deinem Datumsformat des Log-Eintrags nicht zurecht.
http://www.fail2ban.org/wiki/index.php/MANUAL_0_8#Filters
The pattern or regex to match the time stamp is currently not documented, and not available for users to read or set. See Debian bug #491253. This is a problem if your log has a timestamp format that fail2ban doesn't expect, since it will then fail to match any lines. Because of this, you should test any new failregex against a sample log line, as in the examples below, to be sure that it will match. If fail2ban doesn't recognize your log timestamp, then you have two options: either reconfigure your daemon to log with a timestamp in a more common format, such as in the example log line above; or file a bug report asking to have your timestamp format included.

EDIT: Das sieht auch mehr nach einem access_log Eintrag aus.
 
Last edited by a moderator:
Ich denke mal fial2ban kommt mit deinem Datumsformat des Log-Eintrags nicht zurecht.

Code:
fail2ban-regex '68.97.118.20 - - [12/Oct/2009:18:48:18 +0200] "GET /images/bluefox/misc/logoblue2.jpg HTTP/1.1" 404 1033 "-" "-"' '^<HOST> -.*"GET /images/bluefox/misc/logoblue2.jpg.*$'                                                                                                                                   

Running tests
=============

Use regex line : ^<HOST> -.*"GET /images/bluefox/misc/logoblue2.jpg.*$
Use single line: 68.97.118.20 - - [12/Oct/2009:18:48:18 +0200] "GET...


Results
=======

Failregex
|- Regular expressions:
|  [1] ^<HOST> -.*"GET /images/bluefox/misc/logoblue2.jpg.*$
|
`- Number of matches:
   [1] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    68.97.118.20 (Mon Oct 12 18:48:18 2009)

Date template hits:
0 hit(s): Month Day Hour:Minute:Second
0 hit(s): Weekday Month Day Hour:Minute:Second Year
0 hit(s): Weekday Month Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
2 hit(s): Day/Month/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Day-Month-Year Hour:Minute:Second[.Millisecond]
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601

Success, the total number of match is 1

However, look at the above section 'Running tests' which could contain important
information.

Der Regex passt, überprüfe deine Einbdung. Richtig aktiviert?

Freundliche Grüße
flobbie
 
Hi Flobbie,

vielen Dank, aber Stand heute bin ich dem Problem nicht weiter auf die Schliche gekommen. Dank dir kann ich jedoch schon wieder einige Fehler ausschliessen.

fail2ban ist aktiv und auch über ps -el zu sehen.
Ein tail -f auf den fail2ban.log zeigt das er startet, in der jail.conf den richtigen Filter findet und diesen aufruft.
Tja soweit so gut, nun schlägt er jedoch scheinbar nicht im Logfile auf die entsprechenden Zeilen an denn in der iptables ist alles tot.

Für weitere Vorschläge bin ich offen :-)
 
Hier mal mein Eintrag.
Soweit ich den fail2ban.log sehe wird das auch korrekt aufgerufen.
Email und Domain hab ich entfernt.

Code:
[apache-wowbot]

enabled  = true
filter   = apache-wowbot
action   = iptables-allports[name=wowbot, protocol=all]
           sendmail-whois[name=wowbot, dest=root, sender=emailaddress@domain.com]
logpath = /fullpath/logs/*error_log
maxretry = 1
 
So, nach langem hin- und her hab ich das ganze nun hinbekommen.
Leider ist der Schutz bisher nicht sehr effektiv und es bleibt noch eine Frage offen die ich eventuell hier klären kann.

In der Filterdatei steht:
failregex = REGEL

Ich habe bisher nirgendwo gefunden ob ich diese Zeile erweitern kann und wenn ja wie?

failregex = REGEL1 <newline>
REGEL2 <newline>
REGEL3...

oder

Code:
failregex = REGEL1
failregex = REGEL2
failregex = REGEL3

Wie kann ich dem failregex mehrere Regeln übergeben, so daß er den Logfile nach mehreren Dingen durchsucht und IPs sperrt?

Danke
 
Back
Top