Mehr WordPress-Website Schutz

Heute hat eine blöde Mail dafür gesorgt, dass ich mich den ganzen Nachmittag mit etwas anderem beschäftigt habe, als ich es eigentlich wollte. Die Mail war eine automatisierte Info von meiner Website, dass jemand das Zurücksetzen meines Passworts beantragt hat. Wenn ich das gewesen wäre, wäre das ja sogar sehr sinnvoll. Aber ich war es nicht! Die angegebene IP-Adresse stammte aus China. Also sehr wahrscheinlich ein Bot …

Eine schnelle Internet-Recherche gab erst einmal Entwarnung. So etwas scheint eher häufiger zu passieren. Mich beruhigte noch zusätzlich, dass auf meine Nachfrage im Fediverse einige von ähnlichen Fällen in den letzten Tagen berichteten. Zugleich erhielt ich aber auch ein paar Hinweise, was ich für mehr Sicherheit auf meiner WordPress-Website tun könnte. Ich merkte schnell, dass ich von dem ganzen Thema viel zu wenig Ahnung hatte – und beschloss mir direkt die Zeit zu nehmen und die Herausforderung anzugehen …

Die Grundlagen

Ich bin kein absoluter Newbie in dem Feld, sondern kümmere mich bereits um ein sicheres Passwort und regelmäßige Updates meiner Plugins. Damit scheint schon einmal ziemlich viel im grünen Bereich zu sein :-)

Umfassendes Plugin oder Handarbeit?

Bei der Recherche, was ich noch tun könnte, stieß ich auf zwei grundlegende Möglichkeiten:

  • eine Absicherung über Plugins, die ganz viele Maßnahmen auf einmal umfassen und oft nur in der Basisversion kostenfrei sind.
  • mehrere kleinere Plugins und auch Anpassungen über FTP

Bei den großen und umfassenden Plugins las ich einige kritische Stimmen, die damit Probleme beim Datenschutz sahen. Und ich finde es für mich immer ein bisschen schwierig, etwas zu installieren, von dem ich eigentlich gar nicht so genau weiß, was das Ding eigentlich macht … Darum habe ich mich für den zweiten Weg – die einzelnen, kleineren Anpassungen – entschieden.

Meine neuen Maßnahmen

Was ich umgesetzt habe, hat Simon mir in drei Punkten im Fediverse empfohlen.

Wie lässt sich das umsetzen?

1. Zwei-Faktor-Authentifizierung

Die Zwei-Faktor-Authentifizierung kenne ich bereits durch viele weitere Anwendungen. Darum war das die einfachste Umsetzung. Da es auf meiner Website nur meinen Account und keine weiteren Logins gibt, musste ich da nichts erzwingen, sondern es eben einfach für mich einrichten. Ich habe dazu das Plugin WP 2FA verwendet. Die kostenfreie Basisversion scheint mir ausreichend. Nach der Aktivierung des Plugins wird man erst durch ein allgemeines Einrichtungsmenü geführt. Danach kann man dann direkt die Zwei-Faktor-Authentifizierung für den eigenen Account anlegen.

2. Login Seite mit zusätzlichem Passwort schützen

Bei dieser Herausforderung war ich mir erst unsicher, ob ich das gut hinbekomme, aber die Internet-Anleitungen im Netz klangen komplizierter, als es dann bei der Umsetzung tatsächlich war.

Ich bin so vorgegangen:

  • Ich habe eine Passwort-Datei erstellt. Das geht ganz wunderbar mit diesem Tool. Man bekommt dort einen kleinen Code-Schnipsel, den man in einen Texteditor reinkopiert und unter .htpasswd abspeichert.
  • Über FTP habe ich den Ordner wp-admin meiner WordPress-Installation geöffnet und die Datei dort hochgeladen.
  • Als nächstes habe ich auf meiner WordPress-Website unter Website-Zustand -> Bericht -> Verzeichnisse und Größen das Verzeichnis meiner WordPress-Instanz herauskopiert. Das brauchte ich für den nächsten Schritt.
  • Ich habe eine .htaccess Datei erstellt und ebenfalls via FTP in das wp-admin Verzeichnis hochgeladen. Der Inhalt dieser Datei ist wie folgt:
AuthType Basic
AuthName "Passwortgeschützter Bereich (oder irgendein anderer Text)"
AuthUserFile /Kopierter Pfad vom Schritt davor/wp-admin/.htpasswd
require user [verwendeter Benutzername in .htpasswd]

Ich habe die Website neu aufgerufen und habe versucht mich via wp-admin einzuloggen. Statt der WordPress-Anmeldemaske kam ich zur Passwort-Eingabe-Seite. Mit dem verwendeten Passwort von .htpasswd und dem gewählten Benutzernamen wurde ich dann weiter geleitet und konnte mich ‚richtig‘ anmelden. Wenn ich mich via wp-login anmelden will, kann ich darauf zunächst ohne zusätzliche Passworteingabe zugreifen. Nach der Anmeldung gelange ich aber nur ins Dashboard, wenn ich die zusätzliche Anmeldung mache.

Update 1: Ich habe mich jetzt doch noch zusätzlich dazu entschieden, auch die wp-login.php Datei mit Passwort zu schützen. Hauptsächlich deshalb, damit Bots nicht Anmeldeversuche starten und so die Seite verlangsamen. Von der Einrichtung her ging das genau so wie oben beschrieben, nur eben im Hauptverzeichnis und nur in Bezug auf diese Datei.

Update 2: Inzwischen habe ich den Passwortschutz im wp-admin Ordner wieder gelöscht und behalte nur den Passwortschutz für die wp-login-Datei bei. Denn im wp-admin Ordner scheinen auch Dateien zu liegen, auf die z.B. H5P zugreift. Das führte dazu, dass H5P-Inhalte, die von meiner Website aus irgendwo anders eingebettet waren, nur noch mit Passwort abgerufen werden konnten. Das wollte ich natürlich nicht.

3. Regelmäßige Updates

Ich habe bis jetzt das ‚All in One WP Migration‘ Plugin verwendet, was vor allem sehr cool ist, wenn man eine WordPress-Website von einem Server zu einem anderen Server umziehen will. Für eine kluge Backup-Routine scheint es mir aber bessere Plugins zu geben. Ich habe mich hier schließlich für WP Staging Pro entschieden, weil ich hier – wie der Name vermuten lässt – auch gleich noch ein Staging-Feature habe, d.h. ich kann an der Website im Hintergrund rumbasteln, ohne dass die richtige Website beeinträchtigt wird. Wenn alles gut läuft, kann ich die Änderungen dann übertragen. Dieses Staging habe ich bis jetzt aber noch nicht eingerichtet, sondern mich erstmal um automatisierte Sicherungen gekümmert. Meine Einrichtung ist jetzt, dass ich wöchentliche Sicherungen sowohl lokal als auch in einer Cloud speichere und jeweils immer 5 Sicherungen aufhebe. Ich kann bei dem Plugin einstellen, dass die Sicherungen nachts gezogen werden. So stört das wahrscheinlich sehr wenig. Und ich muss nicht mehr selbst an Updates denken … Zusätzlich kan ich jederzeit, z.B. vor der Installation eines neuen Plugins, auch manuell eine Sicherung herunterladen.

Um ganz sicher zu sein, dass das alles so funktioniert, wie ich mir das vorstelle, habe ich dann direkt auch ein erstes Update manuell erstellt und auf einer leeren WordPress-Website die ‚Restore‘ Funktion ausprobiert. Es scheint alles so zu funktionieren, wie es soll :-)

Fazit

Wenn sich jetzt doch schon heute Mittag jemand in die Website gehackt haben sollte, kann es sein, dass ich mit diesen Maßnahmen zu spät bin. Aber erst einmal scheint alles wieder normal zu laufen – und ich fühle mich jetzt in jedem Fall deutlich abgesicherter. Denn die Website ist nun besser gegen Angriffe geschützt. Und sollte doch etwas passieren, müsste ich relativ unproblematisch ein Backup einspielen können.