Difference between revisions of "Fail2ban custom filter rule/de"

(Created page with "Der Fail2ban-Filter kann mit dem Programm fail2ban-regex getestet werden.")
(Created page with "Mehrere Überprüfungen / Mehrere Zeilen verwenden im failregex")
Line 67: Line 67:
  
  
Several checks / using several lines in the failregex
+
Mehrere Überprüfungen / Mehrere Zeilen verwenden im failregex
  
 
If you want to check for several occurances (matches) then you have to put the your regex in seperate lines. A failregex can have multiple lines, any one of which may match a line of the log file.
 
If you want to check for several occurances (matches) then you have to put the your regex in seperate lines. A failregex can have multiple lines, any one of which may match a line of the log file.

Revision as of 18:27, 8 June 2019

Dieses Tutorial zeigt wie man ein Fail2ban Custom Filter (benutzerdefinierten Filter) für Web Applikationen (z.B. Joomla, Wordpress, etc.) erstellt.

Fail2ban wird benötigt um Brute-Force-Attacken zu blockieren. Einfacheste Erklärung: Eine Brute-Force-Attacke wird durch geführt, wenn man versucht sich in eine Webseite einzuloggen, durch das Ausprobieren von unzähligen Passworts bis das Einloggen erfolgreich gelingt. Mit diesem Fail2ban-Filter wird dieses Problem vermieden.

Mehr über Brute force attacken: https://de.wikipedia.org/wiki/Brute-Force-Methode


Einen benutzerdefinierten Filter für Fail2ban einrichten

Zuerst muss eine Fail2ban Filter-Conf-Datei für den Webdienst angelegt werden. Hier als Beispiel der Webdienst "SERVICENAME"

vim /etc/fail2ban/filter.d/SERVICENAME.conf


In der Datei SERVICENAME.conf folgenden Code einfügen und die URL nach "POST" ANPASSEN:

# SERVICENAME configuration file
#


[Definition]

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>\S+)
# Values:  TEXT
#

failregex = ^<HOST> -.*POST /myurl/login/index.php HTTP/1.1

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Fail2ban überprüft Loginversuche auf Webseiten mittels dem Failregex. In diesem Beispiel vermeidet das failregex folgenden Vorfall. Auszug eines Logineintrags von Apache2:

127.0.0.1 - - [28/Feb/2018:14:40:54 +0100] "POST /myurl/login/index.php HTTP/1.1" 303 906 "https://somewebsite.tld/myurl/login/index.php" "Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"


Jetzt müssen Sie einen Jail für den bentzerdefinierten Filter erstellen. Das Jail für den erstellen benutzerdefinierten Filter wird dann in der Datei jail.local hinzugefügt.

[SERVICENAME]
enabled = true
filter = SERVICENAME
action  = iptables-multiport[name=web, port="http,https", protocol=tcp]
logpath = /var/log/apache2/access.log
maxretry = 5


ACHTUNG: action kann ausgelassen werden (um Standardeinstellung zu übernehmen). Eventuell müssen logpath oder der failregex angepasst werden. Bei einer Standardkonfigurationen von Apache2 (unter Ubuntu oder Debian) sollte dies passen.

Damit sind wir mit dem Einrichten eines benutzerdefnierten Fail2ban-Filters fertig. Fail2ban wird nach matches (Vorfälle) gemäß der Einstellungen des benutzerdefinierten Filters überprüfen. Bitte vergessen Sie nicht fail2ban neuzustarten!


Fail2ban-Filter testen

Der Fail2ban-Filter kann mit dem Programm fail2ban-regex getestet werden.

fail2ban-regex /var/log/apache2/access.log /etc/fail2ban/filter.d/SERVICENAME.conf


Mehrere Überprüfungen / Mehrere Zeilen verwenden im failregex

If you want to check for several occurances (matches) then you have to put the your regex in seperate lines. A failregex can have multiple lines, any one of which may match a line of the log file.

Example code:

failregex = Authentication failure for .* from <HOST>
            Failed [-/\w]+ for .* from <HOST>
            ROOT LOGIN REFUSED .* FROM <HOST>
            [iI](?:llegal|nvalid) user .* from <HOST>

Kategorie: Linux