Du kommst hier nicht rein!

In jüngster Zeit gab es wieder vermehrt Versuche, das Blog zu hacken. Das ist zwar ziemlich aussichtslos, da ein gutes, langes, nicht erratbares Passwort schon eine recht hohe Hürde darstellt. Und wenn man das PW nicht kennt, nützt es dem Angreifer auch wenig, wenn er den Usernamen  des Admins rausfindet – was bei WordPress erstaunlicherweise immer noch ein Kinderspiel ist.

Wie auch immer – ich bin es leid, alle naselang zu sehen, wie sich da irgendwer aus Sankt Petersburg, Moskau, Minsk, Peking oder Pittsburgh am unbefugten Eindringen versucht, entweder persönlich oder per Script-Bot. Daher habe ich den Admin-Zugang nun mit einer zusätzlichen Schranke versehen.

Und das geht so.1)Für diesen Post waren diese beiden Tutorials sehr hilfreich: So schützt du deinen WordPress-Login und Wie du den WordPress Login schützen kannst

Man erstellt zusätzlich zur existierenden Datei .htaccess im Ordner der WP-Installation eine neue Datei namens .htpasswd. Genauer gesagt erstellt man sie zunächst lokal auf dem eigenen Rechner, erstellt eine Sicherheitskopie, editiert sie dort und lädt sie anschließend per FTP wieder hoch.2)Da gibt es haufenweise Möglichkeiten, das zu bewerkstelligen. Daher kann ich hier keinen Exkurs zum Thema FTP anbieten. Aber mein Tipp – für Windowsnutzer – lautet: Total Commander. Das ist seit Jahren mein Schweizer Offiziersmesser. Was TC nicht kann, geht auch nicht. Unter Linux gibt es selbstredend ebenfalls zig Möglichkeiten.

Dann geht man auf diese (vertrauenswürdige) Seite: HTPassword-Generator. Dort lässt man sich den Inhalt der .htpasswd erzeugen.

Dazu gibt man einen Namen ein (nicht identisch mit dem Admin der WP-Installation, die wir schützen wollen) und ein Passwort (ebenfalls ein völlig neues). Ich lasse dieses kryptische Passwort von meinem Schlüsselsafe Keepass generieren.

Nach dem Druck auf den Button »Create .htpassword file« erhält man eine Zeichenkette, die in die lokal erstellte Datei .htpasswd kopiert wird. Sieht so aus wie das hier: maxmuster:$apr1$YkuGOcIp$t6XNHNN8vZd4QRhqylfZA.

Speichern und hochladen.

Damit ist der erste Teil erledigt.

Nun muss WordPress noch erfahren, dass es diese Datei .htpasswd gibt und es sie benutzen soll, um dem eigentlichen Login eine weitere Passwortabfrage vorzuschalten. Das ist ja der Sinn der Übung. Dieser Schritt bedeutet zwar ein klitzekleines bisschen mehr Umstand, aber das ist vernachlässigbar. Außerdem kann man ja auch diesen neuen Login wieder in einem Passwort-Safe wie Keepass hinterlegen und per Tastendruck (Globales Auto-Type) in die entsprechenden Masken einfügen lassen. Wirklich sehr komfortabel.

Nun muss die Datei .htaccess mit einem Texteditor – ich empfehle notepad++ – bearbeitet werden. Auch diese Datei wird temporär per FTP heruntergeladen und lokal bearbeitet.

Wahrscheinlich stehen dort schon einige Einträge drin – zum Beispiel von Cache-Plugins. Man fügt hinzu:

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

Bitte nicht stumpf übernehmen, denn in der drittletzten Zeile muss ja der tatsächliche Pfad der WordPress-Installation eingetragen werden. Wie man den findet, kann man zum Beispiel hier oder auch hier nachlesen. Da kommt dann sowas raus wie /home/www/domainname/wp/.

Login vor dem eigentlichen Login. So soll das.
Login vor dem eigentlichen Login. So soll das.

Nun sollte das mit dem doppelten Login bei WordPress klappen. Wenn nicht, ist sicher irgendwo ein Tipper passiert oder der absolute Pfad stimmt nicht. Notfalls lassen sich auch alle Änderungen leicht rückgängig machen. Entweder die Sicherheitskopie der .htaccess zurückspielen. Oder die .htpasswd löschen und die .htaccess auf dem Server direkt editieren und in den vorherigen Zustand bringen.

Zusätzlich empfiehlt es sich, wichtige (sicherheitsrelevante) Datein der WordPress-Installation zu schützen.

Dazu fügt man in der Datei .htaccess diesen dreiteiligen Block ein:

# 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>

Mit dem letzten Eintrag ab # Schnittstelle... wird Script-Bots der Zugang verwehrt. Nachteil: Pingbacks gehen dann auch nicht mehr. Das ist aber meines Erachtens nachrangig. Hier ist das Problem schön beschrieben.

Hier sieht man gut, dass viele Attacken automatisiert über die XMLRPX-Schnittstelle erfolgen.
Hier sieht man gut, dass viele Attacken automatisiert über die XMLRPC-Schnittstelle erfolgen.

Es kann nicht schaden, zusätzlich ein Plugin wie Limit Login Attempts Reloaded zu installieren.

Alles in allem: wenig Arbeit für viel mehr Sicherheit. Ich finde, das ist ein guter Deal.

 

Update 21. Mai

Zwei Wochen später.

Alles klar? ;)


-- "Du kommst hier nicht rein!" als PDF herunterladen oder drucken --


Anmerkungen   [ + ]

1. Für diesen Post waren diese beiden Tutorials sehr hilfreich: So schützt du deinen WordPress-Login und Wie du den WordPress Login schützen kannst
2. Da gibt es haufenweise Möglichkeiten, das zu bewerkstelligen. Daher kann ich hier keinen Exkurs zum Thema FTP anbieten. Aber mein Tipp – für Windowsnutzer – lautet: Total Commander. Das ist seit Jahren mein Schweizer Offiziersmesser. Was TC nicht kann, geht auch nicht. Unter Linux gibt es selbstredend ebenfalls zig Möglichkeiten.

Schreibe einen Kommentar