Fail2Ban mit ISPConfig und open basedir restriction in effect
Aus znilwiki
Changelog:
- 15.03.2026 erste Version
Vorwort
Ich betreibe schon seit Jahren Webserver mit diversen Webseiten. Basis ist bei mir immer Ubuntu-Server, schon länger setze ich dabei ISPConfig als Verwaltungssoftware ein.
Über diese kann ich bequem die Subdomäne anlegen. ISPConfig sorgt dann dafür das die Webseiten immer unter einem jeweils eigenen Benutzer laufen, mit der gewählten PHP-Version oder auch ganz ohne.
Gerade diese Seite hier wird dabei regelmäßig nach Sicherheitslücken aller Art abgesucht.
ISPConfig führt die Logs pro Webseite, diese finden sich unter
/var/www/znil.net/log/access.log /var/www/znil.net/log/error.log
bzw. die echten Pfade
/var/www/clients/client*/web*/log/access.log /var/www/clients/client*/web*/log/error.log
Gerade im error.log find ich ständig Versuche irgendwelche Shell/Bash Befehle auszuführen:
[Sun Mar 15 09:35:37.043222 2026] [fcgid:warn] [pid 368061] [client 85.208.96.195:64110] mod_fcgid: stderr: PHP Warning: file_exists(): open_basedir restriction in effect. File(/bin/bash) is not within the allowed path(s):(/var/www/clients/client0/web1/web:/var/www/clients/client0/web1/private:/var/www/clients/client0/web1/tmp ...
Ich habe beschlossen, die Quelladressen solcher Versuche für 2h zu sperren.
Nachfolgend ist die Lösung dafür.
Voraussetzungen
Voraussetzung ist für dieses Beispiel, ein Webserver mit Apache2 und installierten Fail2Ban.
Ich habe vor Begin der nachfolgenden Befehle per
sudo -i
dauerhaft zum root gewechselt!
Filter erstellen
nano /etc/fail2ban/filter.d/apache-basedir.conf
Inhalt:
[Definition]
# Erläuterung der Regex:
# ^ = Zeilenanfang
# .* = Beliebige Zeichen (Datum/PID)
# \[client <ADDR>(:\d+)?\] = Sucht nach [client IP] oder [client IP:Port]
# .* = Beliebige Zeichen dazwischen
# open_basedir restriction in effect = Der Zieltext
failregex = ^.*\[client <ADDR>(:\d+)?\].*open_basedir restriction in effect.*$
ignoreregex =
