Wie du den WordPress Login schützen kannst

Der WordPress Login ist ein beliebtes Angriffsziel für Hacker. Selbst wenn du ein starkes Passwort nutzt, kann es von hartnäckigen Angreifern irgendwann geknackt werden. Diese sogenannten Brute-Force-Attacken können zudem auch die Performance deiner Webseite stark belasten. Dabei ist es ziemlich einfach, den Zugang zum Admin-Bereich zu schützen.

Wie jede Webseite ist auch eine WordPress Seite nie zu 100% sicher. Angreifer können über die verschiedensten Wege ins System gelangen. Am häufigsten geschieht dies über:

  • Sicherheitslücken in Plugins oder Themes
  • eine veraltete WordPress Version
  • Sicherheitsprobleme beim Provider oder Webserver
  • unsichere Passwörter

Doch dagegen kann man einiges tun. Ein paar Tipps für den Basisschutz habe ich vor einiger Zeit schon mal zusammengestellt. Heute möchte ich dir noch eine zuverlässige Möglichkeit zur Absicherung des WordPress Logins zeigen.

Serverseitigen Schutz für den WordPress Login (wp-login.php) einrichten

Wie meldest du dich im Admin-Bereich deiner Webseite an? Über meineseite.de/wp-admin oder /wp-login.php. Das wissen leider auch Hacker. Daher sollte man genau diesen Bereich durch ein zusätzliches Passwort absichern. D.h. nur wer diese Zugangsdaten kennt, gelangt auch auf die eigentliche Login-Seite.

Der serverseitige Schutz wird durch die Datei .htaccess eingerichtet. Darin werden Regeln für den Webserver festgelegt wie z.B. für Weiterleitungen, Caching oder auch Zugriffschutz. Genau das nutzen wir nun, um speziell die Datei wp-login.php mit einem Passwort zu schützen.

Für die Einrichtung des zusätzlichen Schutzes, benötigst du.

  • Zugangsdaten zu deinem FTP-Server
  • ein FTP-Programm (z.B. FileZilla)
  • einen Texteditor (Windows-Editor, Notepad++)
  • den Pfad zu deiner WordPress-Seite

Wie finde ich den Pfad zur WordPress Installation?

Den genauen Datei-Pfad zur WordPress-Installation findest du bei deinem Hoster im Kundenmenu. Vermutlich an einer Stelle, die gut versteckt ist.
Eine weitere Möglichkeit ist die Anzeige der PHP-Einstellungen deines Servers. Dazu erstellst du eine PHP-Datei und fügst folgenden Code ein:

<?php
phpinfo();
?>

Anschließend benennst sie z.B. info.php und lädst sie in dein WordPress Verzeichnis. Nun kannst du im Browser unter meineseite.de/info.php alle PHP-Einstellungen sehen. Bei dem Punkt DOCUMENT_ROOT findest du dann den richtigen Pfad.

Falls du z.B. Sucuri oder UpdraftPlus installiert hast, kannst du auch dort schnell nachschauen.

Pfadangabe Sucuri
Bei Sucuri findest den Pfad unter Site Info > Access File Integrity
Root Pfad bei updraftPlus
Bei UpdraftPlus klickst du einfach auf > Erweiterte Werkzeuge

Htpasswd erstellen

Zuerst erstellt du die Datei .htpasswd. Darin wird der Benutzername und das Passwort für den serverseitigen Login gespeichert.
Das geht ganz einfach mit dem Online-Tool Htpasswd Generator.

Hier gibst du im ersten Feld den gewünschten Benutzernamen ein. Im nächsten Feld kannst Du dann dein Passwort eingeben.

screenshot htpasswd generator
Der Online-Generator hilft dir beim Anlegen einer htpasswd Datei.

Der htpasswd Generator verschlüsselt anschließend dein Passwort. Der Benutzername bleibt im Klartext stehen. Die folgende Textzeile kannst du nun einfach kopieren und in die Datei .htpasswd einfügen.

generator verschlüsselt passwort
Verschlüsseltes Passwort

htaccess anpassen

Im nächsten Schritt musst du die Datei .htaccess öffnen. Diese findest du im Hauptverzeichnis deiner WordPress Installation. Also dort, wo auch die wp-config-Datei zu finden ist.
Falls dort keine angelegt sein sollte, kannst du einfach eine neue erstellen. Achte aber auf den Punkt vor dem Namen, also .htaccess.

Upload htaccess mit filezilla
Verbind mit dem FTP-Server

Nun verbindest du dich per FTP mit deinem Server und lädst die Datei herunter. Auf jeden Fall solltest du die .htaccess Datei vorher sichern.

Nun öffnest du die Datei mit einem Texteditor wie z.B. Notepad++.  (Nicht Word). Dort sind vermutlich schon einige Anweisungen von WordPress oder einem Caching-Plugin zu finden.

Füge nun folgende Zeilen ein:

# Protect wp-login.php
<Files wp-login.php>
  AuthName "Protected Admin-Area"
  AuthType Basic
  AuthUserFile /der/genaue/pfad/zu/wp/.htpasswd
  Require valid-user
</Files>

Im Klartext bedeutet das: schütze die Datei wp-login.php mit den Zugangsdaten aus der Datei .htpasswd.

 
Achtung: den Pfad zur .htpasswd-Datei musst du natürlich noch anpassen.

Geschützter Admin-Bereich

Durch diese zusätzlichen Zeilen wird nun der WordPress Login doppelt geschützt. D.h. wenn Du dich nun über deineseite.de/wp-admin anmeldest, geht zunächst ein extra Fenster auf. Hier gibst du die zuvor angelegten Zugangsdaten ein. Erst danach wird dir der eigentliche Login-Screen von WordPress angezeigt.

Zusatz-Login per htaccess
Vorgeschaltetes Login-Fenster. Nachdem der Login überkprüft wurde, wird der Zugang zum WP-Login möglich.

Wie wirkungsvoll diese zusätzliche Absicherung ist, zeigt eine Auswertung der Sucuri Logs.

Bei dieser Webseite gab es keinen Passwortschutz der wp-login.php. Wie man in den Failed Logins sieht, gab es täglich mehrere Login-Versuche.

Failed logins

Nachdem der WordPress Login der Seite abgesichert wurde, gibt es keinen einzigen Eintrag mehr.

keine login versuche

Zusätzliche Sicherheitseinstellungen

Abschließend solltest du noch die beiden Dateien .htaccess und htpasswd selbst vor Zugriffen schützen. Zusätzlich kannst du auch noch die wp-config-Datei schützen und die XML-RPC-Schnittstelle deaktivieren.

# Zugriff verweigern
<FilesMatch "(\.htaccess|\.htpasswd)">
  Order deny,allow
  Deny from all
</FilesMatch>
# Konfigurationsdatei schützen
<files wp-config.php>
Order allow,deny
Deny from all
</files>
# Schnittstelle abstellen
<Files xmlrpc.php>
 Order Deny,Allow
 Deny from all
</Files>

Darüber hinaus gibt es noch viele weitere Einstellungen, die über die .htaccess- und auch die wp-config-Datei gemacht werden können.
Auf GitHub gibt es eine übersichtliche Sammlung nützlicher htaccess-Schnipsel. Auf jeden Fall zu empfehlen!

Wie hat Dir dieser Beitrag gefallen? Gar nichtNa jaOKGutSehr gut
(12 Stimmen, Ø: 4,50 von 5)

Dieser Beitrag hat 9 Kommentare

  1. User Avatar

    Hallo
    Vielen Dank – super beschrieben, doch habe ich das Problem, wenn ich bei der Passwortabfrage alles korrekt eingebe, komme ich nicht zur zweiten Passwortabfrage, sondern ich bekomme eine “500 internel server error” Meldung.
    Wenn ich aus der .htaccess den Code wieder entferne funktioniert alles wieder einwandfrei.
    Die Seite selbst bleibt von allem unberührt und funktioniert.

    1. Webtimiser

      Hallo Martin,
      leider kann ich dir keinen konkreten Rat geben, da die Fehlermeldungen viele Ursachen haben kann. Stimmt denn die Pfadangabe? Stimmen die Verzeichnisrechte? Mit welchem Editor hast du die Datei erstellt? Unterstützt der Provider das überhaupt?
      Viele Grüße
      Sonia

  2. User Avatar

    Hallo,
    vielen Dank für Deinen super Artikel. Ich habe also heute meine Seite nach Deinen Anweisungen abgesichert. War gut zu machen. Aber schon nach ein paar Stunden haben sich die nächsten login-Versuche gesammelt. Ich nutze “All In One WP Security” und bin eigentlich damit sehr zufrieden. Kannst Du Dir vorstellen, woran das liegen könnte? Ich hatte nun wirklich damit gerechnet, ein wenig Ruhe vor den Brute-Force-Attacken zu haben.
    Viele Grüße
    Susanne

    1. Webtimiser

      Hallo Susanne,

      vielen Dank für dein Lob!
      Könnte mir vorstellen, dass die Versuche über die XML-RPC-Schnittstelle kommen. Hast du die deaktiviert? Vielleicht bietet All in One Security das sogar an? Ansonsten hilft nur ein Blick in die Log-Dateien.

      Viele Grüße
      Sonia

      1. User Avatar

        Hallo Sonja,
        vielen Dank für Deine schnelle Antwort. Und ja, All in One Security bietet das an. Ich habe es nur nicht gesehen. Vielen vielen Dank.
        Viele Grüße Susanne

  3. User Avatar

    Hallo
    und Danke erst mal für den Artikel.

    4. Fragen habe ich dazu:
    1. Wo genau muss die .htpasswd abgelegt werden, wenn meine WordPress-Installation in einem Unterverzeichnis liegt, die Startseite aber im root-Verzeichnis? (Dashboard – Einstellungen – Allgemein – siteurl und home.)
    2. Kann man an Stelle der .htpasswd auch eine .htuser verwenden? Und wo muss diese dann gespeichert werden?
    3. Gilt der code “requre valid-user” in der .htaccess auch, wenn man eine .htuser verwendet? Oder müsste es dann “require user [username]” heißen?
    4. XML-RPC-Schnittstelle: wenn ich es richtig weiß, wird diese Schnittstelle nicht benötigt, wenn man WP-Artikel und Seiten ausschließlich direkt in WP verfasst und wenn man auf Pingbacks verzichten kann.
    Kann es darüber hinaus an anderen Stellen zu Fehlern führen, wenn man diese Schnittstelle deaktiviert? Plugins, Themes …?

    Danke und Grüße
    Rudi

    1. Webtimiser

      Hallo Rudi,
      wichtig ist, dass der Pfad zur .htpasswd-Datei stimmt: /der/genaue/pfad/zu/wp/.htpasswd
      Mit einer .htuser-Datei sollte es nach dem gleichen Prizinip funktionieren, habe es selbst aber noch nie ausprobiert.
      Die meisten Seiten können auf XML-RPC verzichten – Ausnahmen gibt es aber auch hier immer. Einige Plugins (ich glaube JetPack) nutzen die Schnittstelle. D.h. da muss man das individuell prüfen.
      Viele Grüße
      Sonia

  4. User Avatar

    Hey kann es sein, dass das nur bei opera & chrome funktioniert aber nicht bei firefox?

    1. Webtimiser

      Hallo Julian,

      eigentlich sollte es mit allen Browsern funktionieren. Nutze selbst meistens Firefox und hatte nie Probleme.
      Viele Grüße
      Sonia

Schreibe einen Kommentar

Menü schließen