Wie man WordPress mit Fail2Ban schützt
English version: How to protect WordPress with Fail2Ban
WP Cerber und Fail2Ban können gemeinsam Brute-Force-Angriffe stoppen, bevor diese Ihre WordPress-Installation erreichen. WP Cerber erkennt fehlgeschlagene Anmeldeversuche auf Anwendungsebene; Fail2Ban reagiert darauf auf Betriebssystemebene und blockiert Angreifer mithilfe von iptables . Diese Kombination verhindert Brute-Force- und DoS-Angriffe mit minimalem Aufwand.
Was ist Fail2Ban?
Fail2Ban ist ein Log-Monitoring-Dienst, der auf Ihrem Server läuft. Er überwacht Logdateien auf Muster, die auf einen Angriff hindeuten, wie z. B. wiederholte Authentifizierungsfehler von derselben Adresse. Sobald ein Host einen von Ihnen festgelegten Schwellenwert überschreitet, wird diese Adresse für einen bestimmten Zeitraum an der System-Firewall gesperrt. Fail2Ban selbst weiß nichts über WordPress; es reagiert ausschließlich auf die in den Logs gefundenen Informationen. Hier kommt WP Cerber ins Spiel: WP Cerber überwacht und protokolliert fehlgeschlagene Anmeldeversuche in einem Format, das Fail2Ban verarbeiten kann, und liefert dem Dienst so die notwendigen Ereignisse für entsprechende Maßnahmen.
Lesen Sie mehr über Angriffe: Brute-Force-, DoS- und DDoS-Angriffe – worin besteht der Unterschied?
Hinweis: Sie benötigen Root-Zugriff auf Ihren Linux-Server, um Fail2Ban einzurichten.
Mit WP Cerber haben Sie drei Möglichkeiten, Fail2Ban zu nutzen.
- Verwenden Sie die HTTP-403-Antwortheader, wenn Sie das Apache-Zugriffsprotokoll überwachen möchten.
- Verwendung von Syslog-Dateien zur Überwachung fehlgeschlagener Anmeldeversuche
- Verwendung einer benutzerdefinierten Protokolldatei zur Überwachung fehlgeschlagener Anmeldeversuche
Überwachen Sie das Apache-Zugriffsprotokoll auf HTTP-403-Antworten.
Schlägt ein Anmeldeversuch fehl, sendet WP Cerber den HTTP-Statuscode 403 zurück. Apache protokolliert diese Antwort in seinem Zugriffsprotokoll, wo Fail2Ban sie auslesen kann. Dieses Verhalten ist standardmäßig aktiviert. Der Nachteil besteht darin, dass Fail2Ban das gesamte Zugriffsprotokoll durchsuchen muss, um diese Versuche zu finden, was auf stark frequentierten Websites ineffizient ist.
Verwendung von syslog zur Überwachung fehlgeschlagener Anmeldeversuche
Standardmäßig protokolliert WP Cerber fehlgeschlagene Anmeldeversuche über die LOG_AUTH -Funktion. Um eine eigene Funktion zu verwenden, definieren Sie die Konstante CERBER_LOG_FACILITY mit einem ganzzahligen Wert. In jedem Fall erfolgt das Schreiben in syslog oder eine benutzerdefinierte Datei (siehe unten) erst, nachdem Sie in den Haupteinstellungen des Plugins die Option „Fehlgeschlagene Anmeldeversuche in eine Protokolldatei schreiben“ aktiviert haben.
define('CERBER_LOG_FACILITY', LOG_AUTHPRIV);
Mithilfe einer benutzerdefinierten Datei werden fehlgeschlagene Anmeldeversuche überwacht.
Um jeden fehlgeschlagenen Anmeldeversuch in eine von Ihnen gewählte Protokolldatei zu schreiben, legen Sie deren absoluten Pfad mit der Konstante CERBER_FAIL_LOG fest. Vergessen Sie nicht, Ihrem Webserver Schreibrechte für den Ordner oder die Datei zu erteilen und die Option „Fehlgeschlagene Anmeldeversuche in eine Protokolldatei schreiben“ zu aktivieren. WP Cerber erstellt die Protokolldatei, falls sie noch nicht existiert. Sobald CERBER_FAIL_LOG definiert ist, schreibt WP Cerber nicht mehr in das Standard-Syslog. Beachten Sie, dass Sie mit einer benutzerdefinierten CERBER_FAIL_LOG -Datei die Datenkontrolle behalten, im Gegensatz zum Syslog, dessen Speicherung den Richtlinien des Servers oder der Hosting-Umgebung unterliegt.
define('CERBER_FAIL_LOG','/var/log/wp-cerber-auth.log');
Stellen Sie sicher, dass der PHP-Prozess Ihres Webservers Schreibzugriff auf die angegebene Datei hat.
Angleichen der Zeitstempel an die Serveruhr
Eine Zeitzonenabweichung ist der übliche Grund dafür, dass Fail2Ban zwar Angriffsversuche aufzeichnet, aber niemanden sperrt. Daher ist es wichtig, dies zu verstehen, selbst wenn alles andere korrekt konfiguriert ist.
Fail2Ban reagiert nur auf Ereignisse, die innerhalb seines findtime liegen. Dies wird durch einen Vergleich des Zeitstempels jeder Logzeile mit der lokalen Serverzeit ermittelt. WordPress verwendet eine eigene Uhr in UTC, unabhängig von der auf der Website eingestellten Zeitzone. Auf einem Server, der beispielsweise in der Zeitzone Europe/Madrid läuft, erscheint jede von WordPress geschriebene Zeile ein bis zwei Stunden alt. Fail2Ban verwirft diese Ereignisse als veraltet und löst keine Sperre aus, obwohl die Versuche im Log protokolliert sind.
WP Cerber umgeht dieses Problem, indem es seine Zeitstempel in der Systemzeitzone Ihres Servers anstatt in der WordPress-Uhr speichert, sodass sie standardmäßig den Erwartungen von Fail2Ban entsprechen. Auf den meisten Servern geschieht dies automatisch und erfordert keine weiteren Einstellungen Ihrerseits.
Wenn WP Cerber die Systemzeitzone nicht selbst auflösen kann, legen Sie sie manuell mit der Konstante CERBER_LOG_TIMEZONE fest und verwenden Sie dabei einen beliebigen gültigen Zeitzonenbezeichner:
define('CERBER_LOG_TIMEZONE', 'Europe/Madrid');
Dieser Wert überschreibt die automatische Zeitzonenerkennung und ist daher die zuverlässigste Methode, die Zeitzone festzulegen, falls Zeitstempel abweichen. Jede Kennung aus der Standard-Zeitzonendatenbank funktioniert, beispielsweise „America/New_York“ oder „Asia/Tokyo“. Diese Konstante ist ab WP Cerber Version 9.7.4 verfügbar.
Was wird protokolliert?
Dieses Protokoll erfasst personenbezogene Daten. Wenn Ihre Website also einer Datenschutzregelung wie der DSGVO unterliegt, betrifft Sie das direkt. Im Folgenden erfahren Sie, welche Daten darin gespeichert werden.
Bei jedem fehlgeschlagenen Anmeldeversuch wird eine Zeile protokolliert: die Quell-IP-Adresse, der eingegebene Benutzername, der Servername, die Prozess-ID und ein Zeitstempel. Passwörter werden in keiner Form protokolliert, und es werden keine weiteren Kontodaten gespeichert.
Zwei dieser Felder gelten gemäß DSGVO als personenbezogene Daten: die IP-Adresse (das Breyer-Urteil hat bestätigt, dass eine IP-Adresse relevant ist) und der Benutzername. Da WordPress die Anmeldung per E-Mail ermöglicht, kann der Benutzername auch die E-Mail-Adresse des Nutzers sein. Dies gilt selbst für fehlgeschlagene Anmeldeversuche, bei denen dennoch protokolliert wird, dass eine bestimmte Person anvisiert wurde.
Das macht Sie zum Verantwortlichen für diese Daten, was einige praktische Konsequenzen hat. Nehmen Sie diese Protokolle in Ihre Aufbewahrungsrichtlinie auf und rotieren oder löschen Sie sie, anstatt sie unbegrenzt anwachsen zu lassen. Behalten Sie im Blick, wo die Datensätze gespeichert und weitergeleitet werden: Eine benutzerdefinierte CERBER_FAIL_LOG Datei hält die Daten unter Ihrer Kontrolle, während syslog die Datensätze an zentrale oder externe Server senden kann, wo Speicherung und Verarbeitung systemweiten Richtlinien unterliegen, die Sie möglicherweise nicht festgelegt haben. Anfragen von betroffenen Personen auf Auskunft oder Löschung gelten auch für diese Protokolle.
WP Cerber verzichtet bewusst auf die automatische Löschung dieser Protokolle, da es keinen Einfluss darauf hat, wie Syslog mit den Einträgen umgeht oder wie das Serverbetriebssystem Protokolldateien verarbeitet. Eine in WP Cerber integrierte Bereinigungsfunktion würde nur einen Teil des Problems abdecken und fälschlicherweise den Eindruck erwecken, die Daten seien entfernt worden, obwohl dies nicht der Fall ist.
Dies ist eine praktische Zusammenfassung, keine Rechtsberatung. Wenn Sie Daten aus der EU, Großbritannien oder ähnlichen Rechtsordnungen verarbeiten, behandeln Sie die IP-Adresse und den Benutzernamen als personenbezogene Daten und klären Sie Ihre Pflichten mit der für den Datenschutz zuständigen Stelle Ihres Unternehmens.