WordPress Login absichern

  1. Hintergründe und Ziele
  2. Tipp 1: Login verstecken
    1. Verändern des Standard-Pfades
    2. Berücksichtigen der Besucherstatistik
    3. Hinweis
  3. Tipp 2: Zusätzlicher Passwortschutz
  4. Zusatztipp: ErrorDocument
  5. Fazit

Hintergründe und Ziele

Bei einem Angriff muss man unterscheiden, ob es sich um einen automatisierten Angriffsversuch auf zufällige WordPress Installationen oder um einen gezielten Angriff auf die eigene Seite (z.B. durch einen Konkurrenten) handelt. Der zweite Fall ist zum Glück selten, und automatisierte Brute-Force-Angriffe gehen oft nach einem ähnlichen Schema vor. Dabei ist das Durchprobieren von Anmeldeinformationen eine beliebte Strategie, um sich Zugriff auf ein WordPress zu verschaffen und dieses für eigene Zwecke auszunutzen.

Da diese Angriffe eben nicht zielgerichtet sind, kann wirklich jeder betroffen sein. Das schließt sogar Websites mit ein, die gar nicht mit WordPress betrieben werden. Ich habe schon öfters in den Zugriffsprotokollen von Joomla! oder TYPO3 Seiten Aufrufe auf `wp-login.php`, das Login-Formular von WordPress, gesehen. Also denkt bitte nicht „Meine kleine Seite … Wer sollte die schon hacken wollen?“, sondern nehmt die Sicherheit ernst.

Aber wie kann man das Formular vor solch willkürlichen Aufrufen schützen? Der Schutz sollte dabei gleich zwei Ziele verfolgen:

 

  1. Absichern des Formulars
  2. Berücksichtigen der Besucherstatistik

Bevor wir uns aber genauer mit diesen zwei Methoden zur zusätzlichen Absicherung des Logins beschäftigen, hier die stärkste und wichtigste Methode, die durch nichts ersetzt werden kann: sichere Passwörter! Wählt ein sicheres Passwort für euren WordPress Benutzer. Wenn ihr dies beherzigt und euer System stets aktuell haltet (Stichwort Updates installieren!), ist dies bereits für 80% der WordPress Seiten ausreichend. 

Tipp 1: Login verstecken

Das Backend von WordPress ist standardmäßig über „/wp-admin“ bzw. „wp-login.php“ erreichbar. Das wissen natürlich auch alle Angreifer. Daher kann es eine Strategie sein, diesen Standard zu verändern, um zumindest viele allgemeine Angriffsversuche abwehren zu können.

Verändern des Standard-Pfades

Ändert ihr die Login-URL „/wp-admin“ oder „/wp-login.php“, werden viele der einfachen Attacken direkt abgewehrt. Ist der Login verändert, gehen die einfachen, automatisierten Angreifer nicht mehr davon aus, dass es ein WordPress ist und geben meist schon auf.

Die Änderung des Login-Pfades geschieht über ein Plugin, beispielsweise WPS Hide Login. Es gibt zwar noch weitere Plugins, diese sind aber teilweise veraltet.

Berücksichtigen der Besucherstatistik

Über das Plugin „WPS Hide Login“ wird zwar der Aufruf von „/wp-admin“ verhindert, wenn dieser Aufruf aber auf die eigentliche Website weitergeleitet wird, zählt er trotzdem für die Besucherstatistik. Damit die unerwünschten Aufrufe des jetzt versteckten Logins nicht als Besucher zählen, können diese mit einem Fehler-Statuscode beantwortet werden.

Die einfachste Möglichkeit ist die Definition über eine `.htaccess`-Datei. Legt dazu in eurem WordPress Verzeichnis (unterhalb von /html/wordpress/) einen Ordner (z.B.`error`) an und erstellt dort die Datei `.htaccess` (Achtet unbedingt auf den Punkt am Anfang) mit folgendem Inhalt:

RewriteEngine On
Options +FollowSymLinks
RewriteEngine on
RewriteRule .* - [R=404,NC,L]

Als Response-Code habe ich `404` gewählt, was für NOT FOUND (Inhalt nicht gefunden) steht. Tragt nun als „Redirect url“ in den Einstellungen des Plugins „WPS Hide Login“ (Einstellungen → Allgemein → WPS Hide Login) „error“ ein (oder wie auch immer euer erstellter Ordner heißt). Somit werden nun alle Aufrufe von „deineDomain.de/wp-admin“ umgeleitet in den Ordner und mit dem angegebenen Status-Code quittiert. Der Besucher wird so nicht mehr gezählt. Für das Plugin „Easy Hide Login“ gibt es diese Möglichkeit allerdings nicht.

Hinweis

Das Verstecken des Logins ist zwar sehr einfach umzusetzen und komfortabel in der Anwendung, es stellt aber keine echte Sicherheitsmaßnahme dar, sondern ist nur das: ein Verstecken des Logins. Der etwas irreführende Fachbegriff lautet „Security by obscurity“. Wird das Formular trotzdem gefunden – und euer Admin-Passwort ist kurz oder einfach zu erraten –, stehen einem Angreifer trotzdem alle Türen offen. Also nochmal: Nutzt sichere Passwörter!

Eine kurze Analogie aus der echten Welt: Versteckt ihr euren Haustürschlüssel unter der Fußmatte, kommt ja trotzdem jeder rein, der das Versteck kennt – und sind wir mal ehrlich: Das Versteck ist ja auch leicht zu erraten :) Besser wäre da doch eine Box mit einem Zahlenschloss, also ein weiterer Sicherheitsfaktor. Dazu kommen wir jetzt … 

Tipp 2: Zusätzlicher Passwortschutz

Multi-Faktor-Authentifizierung ist der Gold-Standard bei Logins. Beim Login bei der Bank wird beispielsweise eine TAN gefordert, um bestimmte Aktionen zu bestätigen. Auch bei WordPress könnt ihr über das Plugin Two-Factor eine solche Zwei-Faktor-Authentifizierung aktivieren.

Eine andere Möglichkeit, um ungewollte Besucher vom Login durch einen zweiten Faktor fernzuhalten, ist das Einrichten eines zusätzlichen serverseitigen Passwortschutzes. Bevor der Aufruf des Logins die WordPress Installation erreicht, wird er durch den Webserver verarbeitet. Schon auf dieser Ebene kann man einen zusätzlichen „Türsteher“ einbauen.

Das könnt ihr entweder im Kundencenter über die Funktion Tools → Verzeichnis-Schutz einstellen. Eine ausführliche Anleitung dazu findet ihr im FAQ-Verzeichnisschutz.

Alternativ könnt ihr hierfür aber auch manuell eine`.htaccess`-Datei erstellen. Diesmal im Verzeichnis `html/wordpress/wp-admin` und mit folgendem Inhalt:

AuthType Basic
AuthName "Passwortgeschützter Bereich"
AuthUserFile /home/www/p123456/html/wordpress/wp-admin/.htpasswd
require valid-user

In die Datei `.htpasswd`, die im selben Verzeichnis platziert wird, schreibt ihr dann die User-Passworthash-Kombinationen. Diese Datei könnt ihr euch zum Beispiel mit dem .htpasswd-Generator erstellen. Das könnte dann so aussehen:

Lukas:$1$rapNxkdm$wJf8sp5Obk2IItayLC35e.

Hier steht nicht das Passwort im Klartext, sondern ein Hash des Passwortes. Der Login erfolgt später natürlich mit dem Ursprungspasswort.

Habt ihr alles richtig gemacht, wird beim Aufruf von `/wp-admin` jetzt zuerst ein Loginfenster direkt vom Browser angezeigt, bei dem ihr euch mit den Informationen aus der `.htpasswd` anmeldet. Erst nach dieser Hürde wird das eigentliche Login-Formular von WordPress ausgeliefert. Kann sich ein Aufrufer beim Server nicht authentifizieren, erhält er den Status-Code 401 Unauthorized und wird daher auch nicht in der Besucherstatistik gezählt.

Zusatztipp: ErrorDocument

Mit der Angabe eines `ErrorDocument` könnt ihr versehentlichen Besuchern eine schönere Fehlermeldung anzeigen. Da automatisierte Bots das oft nicht auswerten – erst recht nicht eure individuell gestaltete Meldung – könnt ihr hier nach Bedarf auch verraten, an wen man sich wenden kann, wenn man Probleme beim Login hat, oder den Pfad verraten, zu dem der Login verschoben wurde.

Fazit

Die zwei vorgestellten Methoden erreichen auf unterschiedlichen Wegen etwas Ähnliches: Das WordPress Login-Formular kann bei vielen einfachen Angriffen nicht mehr aufgerufen werden. Das kann die Sicherheit der Website erhöhen. Wenn ihr noch tiefer in das Thema einsteigen möchtet, findet ihr im Blogartikel „WordPress – aber sicher!“ weitere Informationen.

Kommentar hinzufügen