Start Magazin Tipp: WordPress-Webseiten sicher machen – Teil 2

Tipp: WordPress-Webseiten sicher machen – Teil 2

164
0
Teilen

Im vorigen Teil haben wir bereits einiges getan, um unser WordPress sicher zu machen. Es gibt aber noch mehr zu tun. Heute beschäftigen wir uns daher mit der XML-RPC-Schnittstelle, was sie ist, was sie tut und wie man sie abschaltet.

Was ist die XML-RPC-Schnittstelle?

Die XML-RPC-Schnittstelle ist dafür da, um entfernte Funktionsaufrufe über das HTTP-Protokoll zu ermöglichen. Zum Beispiel kannst du über diese Schnittstelle Beiträge posten, editieren und löschen, Kommentare auslesen und editieren. Auch Browser-Erweiterungen, Desktop- sowie Smartphone-Apps arbeiten mit ihr. Weiterhin kümmert sich die Schnittstelle um Pingbacks. Pingbacks sind, kurz gesagt, ein automatischer Hinweis, dass einer deiner Artikel in einem anderen WordPress-Blog verlinkt wurde. Genauso umgekehrt: Wenn du in einem deiner Blogartikel auf einen Artikel eines anderen Blogs verlinkst, dann erhält der Betreiber des verlinkten Blogs einen Pingback.

XML-RPC als Einfallstor für Bruteforce-Attacken

Auch wenn die XML-RPC-Schnittstelle nützlich ist, so bietet sie leider auch eine Angriffsfläche. Passwortgeschützte Bereiche sind seit je her ein beliebtes Angriffsziel. Du kannst deinen WordPress-Login noch so gut absichern; sofern die XML-RPC-Schnittstelle aktiviert ist lassen sich über diese wesentlich effektivere Angriffe ausführen. Mit den geeigneten Tools kann ein Angreifer mit nur einer Anfrage an die XML-RPC-Schnittstelle über 500 Passwörter unterbringen. Die Datei xmlrcp.php ermöglicht den Angreifern über Funktionsaufrufe an wp-getUserBlogs und wp-getComments Kombinationen von Benutzernamen und Passwörtern zu erproben.

BruteForce-Angriffe erkennen

Aber wie erkennt man, ob die XML-RPC-Schnittstelle angegriffen wird? Hier kannst du dich eines Plugin behelfen. Im letzten Teil hatten wir bereits das WordPress-Plugin Limit Login Attempts Reloaded empfohlen. Dieses protokolliert Anmeldeversuche und liefert zudem noch Informationen darüber mit, worüber welches Gateway die Anmeldung durchgeführt wurde.

Dies ist nur ein kleiner Ausschnitt aus der Protokoll-Datei. Täglich werden hier Dutzende Login-Versuche protokolliert. Ich habe in diesem Plugin eingestellt, dass die IP-Adresse direkt nach dem ersten fehlgeschlagenen Anmeldeversuch gesperrt wird. So muß sich der Angreifer zunächst eine neue IP-Adresse besorgen, indem er den Router neustartet, oder einen anderen VPN-Knoten nutzt. Da wir, wie in unserem letzten Teil besprochen, keinen Nutzer mit dem Benutzernamen admin haben, ist das hier noch nicht allzu kritisch. Allerdings kann eine permanente BruteForce-Attacke deinen Blog auch langsam machen. Deshalb setzen wir nun hier an und deaktivieren die XMP-RPC-Schnittstelle!

Die XML-RPC-Schnittstelle deaktivieren

Seit WordPress 3.5 ist die XMPRCP-Schnittstelle standardmäßig aktiviert. Um diese nun zu deaktivieren sind folgende Schritte notwendig:

1. Die Schnittstelle über einen Filter deaktivieren

Füge den folgenden Code in deinem Wartungs-Plugin (alternativ in die functions.php) ein.

/*
 * XML-RPC-Schnittstelle deaktivieren
*/
add_filter('xmlrpc_enabled', '__return_false'):

Damit ist die Schnittstelle nun deaktiviert. Allerdings erscheint sie noch im HTTP-Header der Webseite.

2. Den http-Header deaktivieren

Im Grunde reicht es bereits aus, den Filter zu deaktivieren. Allerdings kann die Schnittstelle noch angesprochen werden und das beeinträchtigt evtl. unnötig die Geschwindigkeit deine Webseite. Daher füge den folgenden Code ebenfalls in das Wartungs-Plugin ein:

/*
 * XML-RPC-Eintrag aus dem http-Header entfernen
*/
add_filter( 'wp_headers', 'AH_remove_x_pingback' );

function AH_remove_x_pingback( $headers )
{
  unset( $headers['X-Pingback'] );
  return $headers;
}

Nun kannst du das WartungsPlugin per FTP in dein Plugins-Ordner hochladen. Damit du nicht alles abtippen musst, kannst du das komplette Wartungs-Plugin auch gerne hier herunterladen.

3. Die Datei xmlrpc.php in der .htaccess blockieren

Die Datei xmlrpc.php ist natürlich immer noch von außen erreichbar und somit entstehen versteckte Zugriffe auf diese Datei. Daher sollte die xmlrpc.php in der .htaccess-Datei geblockt werden. Du findest die .htaccess-Datei direkt in deinem WordPress-Root-Verzeichnis. Bevor du nun allerdings loslegst erstelle dir bitte eine lokale Kopie der .htaccess-Datei. Denn falls du dich vertippst und die Datei dann wieder hochlädst, hat das zur Folge, dass deine Webseite nicht mehr funktioniert. Da die .htaccess-Datei einen „.“ (Punkt) an erster Stelle trägt, wird diese von manchem Betriebssystemen als Systemdatei erkannt. D.h. die Datei wird nicht vom Dateiexplorer dargestellt, sobald sie sich auf deinem Rechner befindet. Du kannst die Datei aber über die Eingabeaufforderung von Windows, oder über das Terminal unter OSX, öffnen.

Nachdem du die .htaccess-Datei geöffnet hast suche nach dem Eintrag # BEGIN WordPress. Nun füge folgende Zeilen überhalb dieses BEGIN-Eintrags ein:

#XML-RPC Schnittstelle deaktivieren
<Files xmlrpc.php>
 Order Deny,Allow
 Deny from all
 </Files>

Wenn alles geklappt hat, kannst du die xmprpc.php nicht mehr über den Browser aufrufen.

Test erfolgreich!

Fazit

Ein Angriff über die XML-RPC-Schnittstelle ist nun unmöglich und auch ein Zugriff auf die xmprpc.php kann nicht mehr stattfinden, da du sie in der .htaccess-Datei blockiert hast. Somit wird die Geschwindigkeit deiner Webseite durch solche Zugriffe nicht mehr beeinträchtigt. Leider kannst du mit diesen Schritten nun keine WordPress-Beiträge mehr mit externen Apps verwalten und du hast auch keine Möglichkeit mehr Pingbacks zu empfangen. Das ist aber nur ein kleiner Preis, den du zahlen musst. Denn mit diesen kleinen Schritten hast du einen enormen Gewinn an Sicherheit gemacht.