Wer sein Blog seit Jahren betreibt, kennt das Problem: Immer wieder gibt es Attacken auf das Blog, bei dem durch Brute-Force versucht wird, sich ins System einzuloggen. Hier bei mir versuchen einige Plug-Ins der Sache Herr zu werden, bisher eigentlich erfolgreich. Dumm wird’s halt dann, wenn die Sache dann schon ein Bisschen in Richtung „Denial-of-Service“ entgleitet, man also im Grunde vor lauter Attacke selbst nicht mehr zum Login durch kommt. So ist es mir dieser Tage geschehen.
Als alter Systemadministrator ist mir da natürlich relativ zügig die Lösung eingefallen – was auch prima funktioniert seit dem: Ich sperre per .htaccess-Eintrag den Zugriff auf die Login-Seite von WordPress! Bedeutet für mich, dass ich zur Anmeldung vorher halt noch einmal Benutzername und Passwort angeben muss, um eben die htaccess-Geschichte hinter mich zu bringen, aber da ich damit leben kann, dass mein Browser diese Nutzer/Passwort-Kombi abspeichert, ist das auch nur ein einziger Mausklick. Seit diesem Eingriff hat sich die Sache bei mir jedenfalls mit den Attacken gelegt!
Was habe ich gemacht? Nun, im Verzeichnis der WordPress-Installation existiert ja in der Regel (wenn man die URL umschreiben lässt und so weiter) eh schon eine .htaccess-Datei. Diese wird mit folgender Passsage erweitert:
AuthUserFile "/path/to/password-file" AuthType Basic AuthName "Admin-Login" <Files "wp-login.php"> require valid-user </Files>
Was passiert hier nun? Ganz einfach erklärt:
In der ersten Zeile wird festgelegt, wo (absolute Pfadangabe) im Dateisystem des Servers für den Webserver lesbar das Passwort-File liegt, welches mit htpasswd -c
erzeugt wird.
Die zweite Zeile wiederum sagt an, dass nun eine Basic-Passwortabfrage abgeschossen werden soll.
Im AuthName wird einfach nur die Fensterüberschrift definiert. Also vollkommen belanglos eigentlich.
Die interessanten Zeilen kommen eigentlich jetzt, denn hier wird zunächst die mit dem Passwort zu schützende Datei angegeben (wp-login.php in dem Fall) und mit dem require valid-user sagt man, dass eben eine gültige Benutzername/Passwort-Kombination anzugeben ist.
Die letzte Zeile schließt einfach den Files-Block wieder ab.
Damit war im Grunde der ganze Zauber behoben und es kommt niemand mehr an die Login-Seite ran, er nicht Benutzername und Passwort kennt. Und dass hier natürlich nicht die gleiche Kombi gilt wie für den Login selbst, ist wohl auch jedem klar.