Skip to content

Debian 8: Aktuelles Fail2Ban und ISPConfig mit mehreren Logdateien

Man kennt das ja: Die Deadline des aktuellen Projekts ist gestern und man braucht noch schnell einen Server mit einer Firewall und ein paar Maßnahmen zur Prävention von Angriffen.

Fail2Ban kommt dort wie gerufen, denn es scannt sämtliche Logdateien auf dem Server nach abgewiesenen Logins, übermäßig hohen Zugriffszahlen, Bots die sinnlos Verzeichnisse durchsuchen etc. pp. Das Tool kann auch mehrere Logdateien auf einmal durchsuchen, um z.B. mehrere Kunden die auf einer ISPConfig-Instanz liegen, abzusichern.

So zumindest in der Theorie.

In der Praxis dauert die Einrichtung doch etwas länger, wenn man von Alfahosting ein Jahr nach Release von Debian 9 nur die ältere Version 8 (Jessie) zur Verfügung gestellt bekommt. Diese Uralt-Version von Debian kommt mit Fail2Ban 0.8.13 von März 2014. Das muss man sich mal auf der Zunge zergehen lassen – da mietet man sich einen dicken Cloud Server mit 16 Kernen und 32 Gigabyte RAM und wird mit 4 Jahre alter Software bedient. Was ist da los? 😒

Zumindest ein kleines bisschen Abhilfe schafft in diesem Fall das Projekt NeuroDebian – ein Ableger von Debian, der für das Wissenschaftsgebiet der Neuroscience erstellt wurde. Wir brauchen 99% der Software dieses Projektes zwar nicht, aber fail2ban ist dort zumindest in der Version 0.9.7 erhältlich. Damit sind wir Stand Mai 2017 und müssen zwar auf einige Features der neuen Version 0.10 verzichten, aber das ist nicht weiter tragisch. Diese Version erkennt Logdateien der aktuellen Roundcube-Version einwandfrei, was bei der 0.8 scheinbar nicht funktioniert.

Das Paket lässt sich über NeuroDebian recht schnell installieren, indem wir die Repo und den Key des Projektes importieren und ein Update vornehmen:

wget -O- http://neuro.debian.net/lists/jessie.de-m.full | tee /etc/apt/sources.list.d/neurodebian.sources.list
apt-key adv --recv-keys --keyserver hkp://pool.sks-keyservers.net:80 0xA5D32F012649A5A9
apt-get update
apt-get install fail2ban

Leider hat diese Version einen Bug, durch den es nicht möglich ist für eine Regel mehrere Logdateien anzugeben. Ich könnte also ab Werk nur einen bei ISPConfig angelegten Kunden überwachen lassen, was einen performanten VServer komplett sinnfrei macht:

fail2ban.transmitter    [3285]: WARNING Command ['set', 'apache-shellshock', 'addlogpath', '/apache2/error.log', '/clients/client
*/web*/log/error.log'] has failed. Received ValueError("File option must be 'head' or 'tail'",)

Der Patch dafür ist bereits 4 Jahre alt und hier zu finden, aber aus unerfindlichen Gründen nicht in dieser Version enthalten. Es müssen lediglich einige Zeilen in der Datei jailreader.py geändert werden. Diese ist im NeuroDebian-Paket hier zu finden:

/usr/lib/python3/dist-packages/fail2ban/client/

Danach kann die Datei /etc/fail2ban/paths-overrides.local angelegt werden, in der z.B. das hier stehen könnte:

[INCLUDES]
before = paths-debian.conf
after = paths-overrides_2.local
[DEFAULT]
apache_error_log = /apache2/*error.log
                            /clients/client*/web*/log/error.log
apache_access_log = /apache2/*access.log
                              /clients/client*/web*/log/access.log

Nach einem Neustart von fail2ban werden nun alle von ISPConfig angelegten Webseiten durch fail2ban überwacht, zumindest was Apache betrifft.

Die restlichen Filterregeln dürft ihr euch selbst konfigurieren 🙂

Dieser Beitrag hat 0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

An den Anfang scrollen