Schützen Sie Ihre PHP-Skripte/-Anwendungen und vor allem wenn es um eine Anmeldeseite (Login) geht mit Fail2Ban.

Dazu müssen Sie nur wenig PHP-Code in Ihrem PHP-Skript bzw. in Ihrer PHP-Anwendung einfügen.

1. Kennwort falsch

Fügen Sie folgenden PHP-Code in Ihrer PHP-Routine ein, wo es heißt „Kennwort falsch“:

<?php
openlog('myApp', LOG_PID | LOG_PERROR, LOG_LOCAL0);
syslog(LOG_INFO, 'php-login: login incorrect: ' . $_SERVER['REMOTE_ADDR']);
?>
2. Benutzername nicht gefunden

Fügen Sie folgenden PHP-Code in Ihrer PHP-Routine ein, wenn ein Benutzername nicht gefunden wurde:

<?php
openlog('myApp', LOG_PID | LOG_PERROR, LOG_LOCAL0);
syslog(LOG_INFO, 'php-login: user not found: ' . $_SERVER['REMOTE_ADDR']);
?>
3. Fail2Ban-Filter

Jetzt benötigen Sie noch die entsprechenden Filter für Fail2Ban, die Sie hier herunterladen können. Diese Dateien legen Sie in Ihr Fail2Ban filter.d-Verzeichnis ab.

Aktivieren Sie die Filter nun in Ihrer Fail2Ban-Konfiguration, indem Sie folgende Zeilen in Ihrer jail.local-Datei hinzufügen:

[php-login-usernotfound]
enabled = true
filter = php-login-usernotfound
maxretry = 3
logpath = /var/log/messages
port = http,https
bantime = 10

[php-login-wrongpassword]
enabled = true
filter = php-login-wrongpasswd
maxretry = 3
logpath = /var/log/messages
port = http,https
bantime = 10

Die Werte für maxretry, logpath, bantime passen Sie für Ihre Bedürfnisse an.

Danach starten Sie Ihren Fail2Ban-Dienst neu.