CycleSEC WordPress-Security #01: Login-URL verschleiern
WordPress-Security #01
In der Beitrags-Reihe „CycleSEC WordPress-Security“ befassen wir uns im CycleSEC-Blog mit Härtungsmaßnahmen, die Sie bei entsprechendem Schutzbedarf Ihrer WordPress-Webseite umsetzen können.
WordPress begann 2003 als Blog-Software. Heute liegt das Content Management System (CMS) in der Verbreitung unangefochten auf Platz 1 [1, 2, 3]. Grund genug, sich mit erweiterten Sicherheitsfunktionalitäten für WordPress zu beschäftigen.
Brute-Force-Angriffe und Denial-of-Service-Attacken richten sich häufig gegen die Login-URL einer Webseite. Dadurch sind Webseiten leicht anzugreifen, falls dem Angreifer die Login-URL bekannt ist. Da Login-Seiten und XML-RPCs bei Denial-of-Service-Attacken meistens gleichzeitig angegriffen werden, sollte man neben der Verschleierung der Login-URLs im gleichen Atemzug auch die Deaktivierung von XML-RPCs in Erwägung ziehen. [4]
Schwachstelle
Bei einer Standardinstallation von WordPress sind die Login-URLs standardmäßig gesetzt und öffentlich bekannt:
http://example.com/wp-admin
http://example.com/wp-login
Angriffsszenario
Denial-of-Service (DoS): Angreifer überfluten die bekannten Login-URLs, um eine Überlastung des Servers zu erreichen (und gleichzeitig wird die XML-RPC-API mit Anfragen überhäuft).
Brute-Force: Angreifer nutzen die bekannten Login-URLs, um automatisiert Kombinationen von Nutzernamen und Standard-Passwörtern durchzuprobieren.
Härtungsmaßnahme
Machen Sie immer Backups und regelmäßige Recovery-Tests, bevor Sie Einstellungen an Ihrer WordPress verändern. Die wichtigste Härtungsmaßnahme sind häufig aktuelle und funktionstüchtige Backups!
Zur Härtung Ihrer WordPress gegen die oben beschriebenen Szenarien sollten die Login-URL verändert und ggf. XML-RPCs deaktiviert werden.
Durch die Verschleierung der Login-URL kann der Aufwand für einen Angreifer deutlich vergrößert werden. In Verbindung mit der Deaktivierung von XML-RPCs ist diese Maßnahme ein wirkungsvolles Mittel gegen automatisierte Brute-Force-Angriffe und Denial-of-Service-Attacken, falls die Login-URL durch einen Angreifer nicht erraten oder beispielsweise als Link auf der Webseite gefunden werden kann. Letzteres gilt natürlich nur für den Fall, dass auf der betroffenen WordPress-Instanz die Kommentar-Funktion deaktiviert ist. Die Login-URL entspricht zwar sonst nicht mehr der Standard-URL, ist aber mit wenig Aufwand herauszubekommen.
Umsetzung
Am einfachsten lassen sich die Login URLs über ein Plugin wie WPS Hide Login [5] realisieren. Nach der Installation kann unter „Einstellungen – Allgemein“ am Seitenende eine neue Login-URL eingegeben werden (vgl. Abbildung 1):
Einmal eingerichtet, sind die Standard-Login-URLs „…/wp-admin“ und „…/wp-login“ nicht mehr erreichbar (vgl. Abbildung 2). Sie sollten sich die neue URL daher gut merken. Andernfalls müssten Sie das Plugin manuell deaktivieren, um die ursprünglichen URLs wieder zu erreichen.
Die Änderungen, die das Plugin vornimmt, lassen sich grundsätzlich auch „von Hand“ erledigen, was wir jedoch nur fortgeschrittenen Web-Admins empfehlen.
Neben den Login-URLs sollten jetzt noch die XML-RPCs deaktiviert werden, die über die Datei xmlrpc.php im WordPress Wurzelverzeichnis bereitgestellt werden.
Bedenken Sie jedoch vor der Deaktivierung, dass dies auch die Funktionalität Ihrer WordPress eingeschränkt, da danach keine externen Apps mehr auf WordPress zugreifen können. Hierzu gehört z.B. auch die WordPress-Smartphone-App, mit der Sie z.B. Kommentare moderieren können. Ob die Deaktivierung von XML-RPCs sinnvoll ist, hängt also von Ihrem individuellen Einsatzszenario ab.
Falls Sie sich für die Deaktivierung der XML-RPCs entscheiden oder diese ad-hoc deaktivieren möchten, müssen Sie hierzu die folgenden Zeilen in der .htaccess-Datei im Wurzelverzeichnis einfügen:
# Deaktiviert XML-RPCs
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Alle Beiträge aus der Reihe
CycleSEC WordPress-Security #01: Login-URL verschleiern
CycleSEC WordPress-Security #02: Absichern der wp-config.php
CycleSEC WordPress-Security #03: HTTP TRACE deaktivieren
CycleSEC WordPress-Security #04: Online-Editoren deaktivieren
CycleSEC WordPress-Security #05: Zwei-Faktor-Authentifizierung
Quellen
[1] W3Techs.com, Historical yearly trends in the usage of content management systems for websites
[2] WEBKALKULATOR, CMS Marktanteile & CMS Budgets
[3] CMSCrawler, Statistics for Germany
[4] Mark Maunder, XMLRPC or WP-Login: Which do Brute Force Attackers Prefer
[5] Plugin-Seite von WPS Hide Login
Hinweis
Der Inhalt dieses Beitrags wurde mit Sorgfalt und auf Grundlage der uns bekannten Informationen erstellt. Da wir keine Informationen zu Ihrer konkreten Anwendungssituation und Ihrer spezifischen Bedrohungslage haben, kann für die Umsetzung der hier gegeben Empfehlungen keine Gewähr übernommen werden.
Sicherheitsmaßnahmen können andere, ganz eigene Risiken beinhalten und verursachen. Die durch CycleSEC gegebenen Empfehlungen zielen darauf ab, Risiken für die Informations- und IT-Sicherheit zu reduzieren. In den meisten Fällen können Risiken nicht vollständig vermieden werden.