Auch Entwickler brauchen Platz zum Spielen

3. Juni 2013 /

Initiative: Mehr Sicherheit für WordPress durch den “Admin”-Schutz

Ein Zugriffsschutz für den Admin-Bereich in WordPress via .htaccess hat sich als zuverlässiger Wächter erwiesen. Mehr Schutz für WordPress.
Sicherheit in WordPress

Man spricht vom schwächsten Glied der Kette im Sicherheitskonzept der WordPress-Blogs und meint automatisch den Administrationsbereich. Als WordPress-Entwickler von Sicherheitslösungen darf man bei der Wiederholung des folgenden Satzes nicht müde werden: Schützt eures WordPress-Backend! Dieser Artikel geht nicht erneut die 10 Punkte für die Sicherheit in WordPress durch, sondern legt den Fokus auf eine bestimmte Abwehrmethode, die rasch eingebunden und äußert effektiv ist: Der Zugriffsschutz für den WordPress-Admin via .htaccess.

Anmeldeformular erzwungen in .htaccess
Anmeldeformular vor WordPress-Admin mittels .htaccess

Sinnvoll: Kritische Trennung der Bereiche
Fakt ist: Das Backend eines Blogs darf nicht öffentlich zugänglich sein! Punkt. Der – durch WordPress generierte Zugangsdaten – bereits geschützte Raum hat nicht umsonst den Namen Administrationsbereich bekommen. Einen Zugriff auf die dahinter liegenden Seiten haben nur Administratoren und diejenigen, die vom Administrator explizit eingeladen wurden – meist Autoren mit beschränkten Rechten. Der Rest der Menschheit darf den Adminbereich einer WordPress-Instanz nie zu Gesicht bekommen, geschweige das mächtige, dennoch empfindliche Segment von innen zu sehen. Nicht mal die Login-Seite.

Gemeinsame Zugangsdaten für die “Eingangstür”
Die praktikable Lösung der vorgeschlagenen Trennung zwischen Back- und Frontend: Admin-Area durch ein zusätzliches Passwort abgrenzen, um dadurch einen weiteren Passierpunkt auf dem Weg zur Login-Maske zu schaffen. “Doppelt hält besser” ist hier die zutreffende Devise. Zugegeben, auf den ersten Blick ein wenig umständlich wirkender Schritt. Der Vorteil der Methode: Bei Angriffsversuchen auf den Administrationsbereich eines WordPress-Blogs übernimmt der Webserver die Auseinandersetzung, WordPress selbst wird nicht mal ausgeführt und schont somit den Server und die Datenbank.

Es existieren zwar WordPress-Plugins, die solche Angriffe protokollieren und nach X gescheiterten Loginversuchen den Roboter aussperren. Doch warum Ruhestörer erst auf WordPress (das System und die Datenbank) lassen, wenn fehlerhafte Anmeldungen bereits auf Server-Ebene abgefangen werden können?

Appell: Lieber eine Passwortabfrage zu viel als zu wenig
Daher der dringende Aufruf an die Blogger: Sichert eure Adminbereiche ab! Die Angelegenheit ist schneller und unkomplizierter erledigt als vermutet. Die in den meisten Fällen bereits vorhandene Server-Datei .htaccess (meist von WordPress für die Steuerung der Permalinks angelegt oder für das Caching-Plugin Cachify benötigt) wird um 2 Code-Blöcke mit minimaler Pfadanpassung erweitert.

Plus die Erstellung der Datei .htpasswd mit Zugangsdaten im gleichen Ordner. Mehr ist da nicht zu machen. Investiert jetzt Minuten anstatt nach einem möglichen Angriff Stunden oder gar Tage für das Suchen nach injizierter Malware und für die Wiederherstellung der Daten hineinzustecken.

Anleitung für einen Zugriffsschutz via .htaccess

  1. Eine leere Datei mit dem Namen .htpasswd (PUNKThtpasswd) im Hauptverzeichnis des Blogs anlegen.
  2. Die erstellte Datei im Texteditor öffnen (Microsoft Word ist keiner).
  3. Den Htpasswd Generator aufrufen. In Eingabefeldern den gewünschten Nutzernamen und ein sicheres Passwort eingeben – diese Kombination aus Benutzernamen und Passwort ist der Zugang für die .htaccess Abfrage. Die vom Htpasswd Generator erzeugte Zeichenfolge wird in die geöffnete Datei .htpasswd eingefügt und gespeichert.
  4. Die Datei .htaccess (PUNKThtaccess) im Editor öffnen und um den nachfolgenden Code erweitern. Der Pfad zu .htpasswd gehört angepasst. Hilfreiche Anleitung: Wie ermittle ich den Pfad?
  5. Änderungen speichern und das Ergebnis kontrollieren.

Zugriffsschutz + Interner Schutz für Systemdateien

<Files wp-login.php>
  AuthName "Admin-Bereich"
  AuthType Basic
  AuthUserFile /pfad/zu/.htpasswd
  require valid-user
</Files>

<FilesMatch "(\.htaccess|\.htpasswd|wp-config\.php|liesmich\.html|readme\.html)">
  order deny,allow
  deny from all
</FilesMatch>

WordPress Apps
Der geschilderte Zugriffsschutz betrifft nur die Web-Oberfläche der Login-Seite. Desktop-Anwendungen wie z.B. Windows Live Writer, iOS- und Android-Apps sind davon nicht betroffen, da dort die Kommunikation mit dem WordPress-Blog über die XML-RPC-Schnittstelle stattfindet.

Zusammenfassung
Natürlich schließt die oben aufgeführte Technik einen eventuellen Einbruch nicht hundertprozentig aus – ein auf dem heimischen Rechner installierter Trojaner würde die Übertragung auch dieser Anmeldewerte heimlich ins Netz unternehmen. Dafür ist die Vielfalt und die Hartnäckigkeit der Einbruchsmethoden zu überdimensional und zu brutal. Doch als weiterer Stolperstein auf dem Weg zur Plünderung eignet sich der Ansatz mehr als perfekt und konnte sich in der Vergangenheit mehrmals als zuverlässiger Wächter beweisen und vor Ausnutzung von bekannt gewordenen WordPress-Lücken auf Backend-Seiten schützen.

Wichtig zu beachten ist die Tatsache, dass nicht der komplette Ordner wp-admin mit einem Zugriffsschutz versehen wird (da sind Webhoster schnell dabei, meinen es aber gut), da WordPress auch im Frontend auf diverse Dateien im Backend zugreift. Der Schutz der Datei wp-login.php – wie oben beschrieben – genügt.

Implementierung in Nginx
Die Absicherung des WordPress-Administrationsbereiches auf einem Nginx Webserver wird im Beitrag WordPress auf Nginx: Performance und Sicherheit optimieren ausführlich dokumentiert.

Sergej Müller

[Der Autor]Sergej Müller ist enthusiastischer Software Engineer mit Schwerpunkten Webentwicklung, Apps und WordPress. Seit 2007 programmiert und vertreibt er wpSEO, das zugkräftige SEO-Plugin für WordPress-Blogs.

Thematisch ähnliche Beiträge