Hinterlistige WordPress DOS-Attacke auf xmlrpc.php

Mein WordPress-Blog wird seit einiger Zeit ziemlich heftig attackiert. Die Webseite war auch immer wieder down. Da ich keine Erfahrungen mit dieser Art Attacke hatte, hat es ziemlich lange gedauert, bis ich sie überhaupt erkannt habe.

Bei einer „normalen“ DOS- oder DDOS-Attacke würde man erwarten, dass die Zugriffslogs übervoll von Zugriffen sind, so dass der Server nich fertig wird.

In meinem Fall hatte ich zwar einige Zugriffe, aber sie könnten niemals meinen Server runterkriegen, so dachte ich zumindest. Mein Server ist etwas überdimensioniert für dieses kleine Blog und  läuft mit nginx.

Dann stellt sich heraus, dass es doch mit mit relativ wenigen Zugriffen geht, wenn man nämlich die xmlrpc.php Datei von WordPress angreift, die sich im Root-Verzeichnis befindet. Denn über diese Datei lässt sich gleich ein Feuerwerk von Passwortanfragen übermitteln und so den Server in die Knie zwingen. XMLRPC ist eine Schnittstelle, die es externen Anwendungen erlaubt auf die WordPress-Installation zuzugreifen und einiges mehr.

Das Schnellste, was man in diesem Fall machen kann, ist die Datei umzubenennen, zum Beispiel in  xmlrpc.php_hau_ab. In den meisten Fällen braucht man sie nicht. Manche Plugins, wie JetPack, benötigen aber XMLRPC.

Bei einem Upgrade wird die Datei wahrscheinlich neu angelegt, daher sollte man die Angreifer serverseitig aussperren.

Für nginx Server sollte man folgenden Code in die Konfigurationsdatei deiner Webseite einfügen:

location = /xmlrpc.php {
deny all;
}

und zwar in den server { ... } Block

Wenn du nicht mehr möchtest, dass die Server-Logs die Zugriffe auf
xmlrpc.php protokollieren, dann füge stattdessen diesen Code ein:

location = /xmlrpc.php {
deny all;
access_log off;
}

Für Apache-Server kannst du in die .htaccess folgende Zeilen einfügen und zwar am Anfang der Datei

<Files xmlrpc.php> 
  Order Deny,Allow  
  Deny from all  
</Files>

oder direkt in die Konfigurationsdatei von Apache dann aber folgenden Code:

<FilesMatch "^(xmlrpc\.php)">
Order Deny,Allow
Deny from all
</FilesMatch>

Ich hoffe, dass diese Infos einigen von euch helfen werden 🙂

Autor: Alexander

Hallo, ich bin Alexander. Diese Webseite ist mein Hobby. Ich schreibe gern kurze, übersichtliche Anleitungen und freue mich über Deine Kommentare und Anregungen. ||Mein frischer Twitter Account||