Tipps und Tricks » fail2ban

Schädlinge mit fail2ban erkennen und aussperren

Vulnerability Scanner

Hier geht es um Programme, die gezielt nach bekannten Schwachstellen suchen. Eigentlich sollten sie keine finden, wenn das Zielsystem ordentlich gewartet ist. Gelegentlich wird jedoch eine Achillesferse in der Crackerszene schneller bekannt, als das Wartungspersonal reagiert.

Diese Scanner verursachen eine Menge Traffic und damit Last auf den angegriffenen Systemen. Das ist lästig, aber dadurch hinterlassen sie auch Spuren in den Logfiles. Hier geht es darum, diese Spuren zu nutzen und die Schädlinge auszusperren.

Spurensuche

Zur Spurensuche eignet sich fail2ban hervorragend. Wie der Name schon sagt, nutzt es typische Fehler um Angreifer zu verbannen. Das Programm ist modular aufgebaut, daher ist es nicht allzu schwierig, die mitgelieferten Filter um Eigenkreationen zu erweitern.

Dazu kopiere ich einen der vorhandenen Filter (in /etc/fail2ban/filter.d), ersetze die Filterbedingung durch meine Eigenkreation und füge in /etc/fail2ban/jail.conf einen dazu passenden Abschnitt hinzu.

Testroutine

Mit fail2ban wird eine Testroutine ausgeliefert. Sie erlaubt es die Filterausdrücke direkt zu überprüfen. Hier ein Beispiel:

fail2ban-regex  /var/log/apache2/default-error.log '[ []client <HOST> [] ] File does not exist.*ispcp'

fail2ban-regex heißt die Prüfroutine, dann kommt das Logfile und anschließend in Hochkommata das Suchmuster. Alternativ darf als 2. Parameter die Filter-Datei angegeben werden.

Beispiel

Für den o.a. Test sieht das Beispiel wie folgt aus:

# /etc/fail2ban/jail.conf, neue Section
[apache-ispcp]

enabled = true
port = http,https
filter = apache-ispcp
logpath = /var/log/apache*/*error.log

# etc/fail2ban/filter.d/apache-ispcp.conf
# Fail2Ban configuration file
#
# Author: arno@shopnix.de
#
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failure 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>[w-.^_]+)
# Values: TEXT
#
failregex = [ []client <HOST>[] ] File does not exist.*ispcp

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

Anschließend muss fail2ban neu gestartet werden.

Powered by Etomite CMS.