Fail2ban verwenden, um falsche ISPConfig-Anmeldungen zu blockieren
Zunächst einmal:Wenn Sie nicht paranoid sind, brauchen Sie das nicht. ISPConfig leistet hervorragende Arbeit, um alle Benutzeranmeldungen zu blockieren, die mehr als fünf Mal pro Minute fehlschlagen.
Andererseits möchten Sie vielleicht in der Lage sein, dies ein wenig zu verfeinern.
In diesem Tutorial schreiben wir ein ISPConfig-Plugin, um fehlgeschlagene Anmeldungen in Syslog zu protokollieren, filtern diese Einträge mit rsyslogd und fügen eine fail2ban-Regel hinzu, um die IPs böswilliger Benutzer zu blockieren.
Nochmal:Auch dieses Teil bräuchten wir nicht. Wenn Sie den Loglevel von ISPConfig auf DEBUG setzen, werden fehlgeschlagene Anmeldungen trotzdem protokolliert. Aber wir wollen den ganzen anderen Kram nicht, oder?
Wir brauchen also ein Plugin, um zuerst fehlgeschlagene Anmeldungen in Syslog zu protokollieren:
~ispconfig/interface/lib/plugins/login_fail2ban_plugin.inc.php
class login_fail2ban_plugin {
var $plugin_name = 'login_fail2ban_plugin';
var $class_name = 'login_fail2ban_plugin';
function onLoad() {
global $app;
$app->plugin->registerEvent('login_failed',$this->plugin_name,'log_fail');
}
function log_fail($event_name,$data) {
openlog("ispconfig", LOG_PID | LOG_PERROR, LOG_LOCAL0);
syslog(LOG_WARNING, "Login failed for user ".$_POST['username']." on IP ".$_SERVER['REMOTE_ADDR']);
}
}
ISPConfig hat eine seltsame Art, seine Plugins zwischenzuspeichern, daher sollten Sie jetzt vielleicht Ihren Browser-Cache für Ihre Domain löschen.
Nun, wir wollen das nicht in /var/log/syslog. Wenn Ihr Server überfüllt ist, wird dort massiv geloggt und fail2ban muss diesen ganzen Mist nicht filtern.
Verwenden wir dafür rsyslogd:
/etc/rsyslog.d/12-ispconfig.conf
if $programname == 'ispconfig' then /var/log/ispconfig.log
Starten Sie nun rsyslog neu
service rsyslog restart
Erstellen Sie eine fail2ban-Filterregel:
/etc/fail2ban/filter.d/ispconfig.conf
[Definition]fehlgeschlagen
failregex = (.*) Login failed for user (.*) on IP <HOST>
ignoreregex =
Testen Sie es (Sie sollten versuchen, sich mit einem falschen Benutzernamen/Passwort anzumelden, damit dies etwas anzeigt).
fail2ban-regex /var/log/ispconfig.log /etc/fail2ban/filter.d/ispconfig.conf
und fügen Sie Ihrer /etc/fail2ban/jail.conf ein Jail hinzu:
[ispconfig]
enabled = true
port = http,https
filter = ispconfig
logpath = /var/log/ispconfig.log
Fail2ban neu starten und fertig.
service fail2ban restart
Viel Spaß!