Eine vollständige Anleitung zu xmlrpc.php in WordPress (Was es ist, Sicherheitsrisiken, wie man es deaktiviert)

Veröffentlicht: 2020-07-06

Die XML-RPC-WordPress-Spezifikation wurde entwickelt, um die Kommunikation zwischen verschiedenen Systemen zu standardisieren, was bedeutet, dass Anwendungen außerhalb von WordPress (wie andere Blogging-Plattformen und Desktop-Clients) mit WordPress interagieren können.

Diese Spezifikation war von Anfang an Teil von WordPress und hat sehr nützliche Arbeit geleistet. Ohne sie wäre WordPress in seinem eigenen Silo gewesen, getrennt vom Rest des Internets.

xmlrpc.php hat jedoch seine Schattenseiten. Es kann Schwachstellen in Ihre WordPress-Site einführen und wurde jetzt durch die WordPress-REST-API ersetzt, die WordPress viel besser für andere Anwendungen öffnet.

In diesem Beitrag erklären wir, was xmlrpc.php ist, warum Sie es deaktivieren sollten, und helfen Ihnen dabei, festzustellen, ob es auf Ihrer WordPress-Site ausgeführt wird.

Bereit? Tauchen wir ein!

Was ist xmlrpc.php?

XML-RPC ist eine Spezifikation, die die Kommunikation zwischen WordPress und anderen Systemen ermöglicht. Dazu wurde diese Kommunikation standardisiert, wobei HTTP als Transportmechanismus und XML als Kodierungsmechanismus verwendet wurden.

XML-RPC ist älter als WordPress: Es war in der b2-Blogging-Software vorhanden, die 2003 zum Erstellen von WordPress gegabelt wurde. Der Code hinter dem System ist in einer Datei namens xmlrpc.php im Stammverzeichnis der Website gespeichert. Und es ist immer noch da, obwohl XML-RPC weitgehend veraltet ist.

In frühen Versionen von WordPress war XML-RPC standardmäßig deaktiviert. Aber seit Version 3.5 ist es standardmäßig aktiviert. Der Hauptgrund dafür war, dass die mobile WordPress-App mit Ihrer WordPress-Installation kommunizieren konnte.

Wenn Sie die mobile WordPress-App vor Version 3.5 verwendet haben, erinnern Sie sich vielleicht, dass Sie XML-RPC auf Ihrer Website aktivieren mussten, damit die App Inhalte veröffentlichen kann. Das lag daran, dass die App WordPress selbst nicht ausführte; Stattdessen war es eine separate App, die über xmlrpc.php mit Ihrer WordPress-Site kommunizierte.

Aber es war nicht nur die mobile App, für die XML-RPC verwendet wurde: Es wurde auch verwendet, um die Kommunikation zwischen WordPress und anderen Blogging-Plattformen zu ermöglichen, es ermöglichte Trackbacks und Pingbacks und es trieb das Jetpack-Plugin an, das ein selbst gehostetes WordPress verknüpft Website zu WordPress.com.

Aber seit die REST-API in den WordPress-Kern integriert wurde, wird die Datei xmlrpc.php nicht mehr für diese Kommunikation verwendet. Stattdessen wird die REST-API verwendet, um mit der mobilen WordPress-App, mit Desktop-Clients, mit anderen Blogging-Plattformen, mit WordPress.com (für das Jetpack-Plugin) und mit anderen Systemen und Diensten zu kommunizieren. Die Bandbreite der Systeme, mit denen die REST-API interagieren kann, ist viel größer als die von xmlrpc.php zugelassene. Außerdem gibt es viel mehr Flexibilität.

Da die REST-API XML-RPC abgelöst hat, sollten Sie jetzt xmlrpc.php auf Ihrer Website deaktivieren. Mal sehen warum.

Warum Sie xmlrpc.php deaktivieren sollten

Der Hauptgrund, warum Sie xmlrpc.php auf Ihrer WordPress-Seite deaktivieren sollten, ist, dass es Sicherheitslücken einführt und das Ziel von Angriffen sein kann.

Jetzt, da XML-RPC nicht mehr benötigt wird, um außerhalb von WordPress zu kommunizieren, gibt es keinen Grund, es aktiv zu halten. Aus diesem Grund ist es ratsam, Ihre Website sicherer zu machen, indem Sie sie deaktivieren.

Wenn xmlrpc.php ein Sicherheitsproblem darstellt und nicht mehr funktioniert, warum wurde es dann nicht vollständig aus WordPress entfernt?

Der Grund dafür ist, dass eines der Hauptmerkmale von WordPress immer die Abwärtskompatibilität sein wird. Wenn Sie Ihre Website gut verwalten, wissen Sie, dass es wichtig ist, WordPress sowie alle Plugins oder Themes auf dem neuesten Stand zu halten.

Aber es wird immer Websitebesitzer geben, die ihre Version von WordPress nicht aktualisieren wollen oder können. Wenn sie eine Version ausführen, die älter als die REST-API ist, benötigen sie weiterhin Zugriff auf xmlrpc.php.

Sehen wir uns die spezifischen Schwachstellen genauer an.

DDoS-Angriffe über XML-RPC-Pingbacks

Eine der Funktionen, die xmlrpc.php aktiviert hat, waren Pingbacks und Trackbacks. Dies sind die Benachrichtigungen, die in den Kommentaren auf Ihrer Website erscheinen, wenn ein anderer Blog oder eine andere Website auf Ihre Inhalte verlinkt.

Die XML-RPC-Spezifikation hat diese Kommunikation ermöglicht, aber sie wurde durch die REST-API ersetzt (wie wir bereits gesehen haben).

Wenn XML-RPC auf Ihrer Website aktiviert ist, könnte ein Hacker möglicherweise einen DDoS-Angriff auf Ihre Website starten, indem er xmlrpc.php ausnutzt, um in kurzer Zeit eine große Anzahl von Pingbacks an Ihre Website zu senden. Dies könnte Ihren Server überlasten und Ihre Website außer Betrieb setzen.

Brute-Force-Angriffe über XML-RPC

Jedes Mal, wenn xmlrpc.php eine Anfrage stellt, sendet es den Benutzernamen und das Passwort zur Authentifizierung. Dies stellt ein erhebliches Sicherheitsrisiko dar und ist etwas, was die REST-API nicht tut. Tatsächlich verwendet die REST-API OAuth, das anstelle von Benutzernamen oder Passwörtern Token zur Authentifizierung sendet.

Da xmlrpc.php bei jeder Anfrage Authentifizierungsinformationen sendet, könnten Hacker damit versuchen, auf Ihre Website zuzugreifen. Ein solcher Brute-Force-Angriff könnte es ihnen ermöglichen, Inhalte einzufügen, Code zu löschen oder Ihre Datenbank zu beschädigen.

Wenn ein Angreifer genügend Anfragen an Ihre Website sendet, jede mit einem anderen Paar aus Benutzername und Passwort, besteht die Möglichkeit, dass sie schließlich die richtige finden und ihnen Zugriff auf Ihre Website gewähren.

Wenn Sie eine aktuelle Version von WordPress verwenden, die die REST-API zur Kommunikation mit externen Systemen verwendet, sollten Sie daher xmlrpc.php deaktivieren . Es ist nicht erforderlich und könnte Ihre Website anfällig machen.


Läuft xmlrpc.php auf Ihrer WordPress-Seite?

Als Erstes müssen Sie feststellen, ob xmlrpc.php auf Ihrer WordPress-Site ausgeführt wird.

Ob die Datei vorhanden ist, muss nicht einfach überprüft werden: Sie gehört zu jeder WordPress-Installation und ist auch dann vorhanden, wenn XML-RPC deaktiviert ist.

Um zu überprüfen, ob xmlrpc.php auf Ihrer Website aktiviert ist, verwenden Sie den WordPress XML-RPC-Validierungsdienst. Dadurch wird Ihre Website überprüft und Ihnen mitgeteilt, ob xmlrpc.php aktiviert ist.

WordPress XML-RPC-Validierungsdienst
WordPress XML-RPC-Validierungsdienst

Hier ist das Ergebnis, das ich erhalten habe, als ich diese Seite auf dem Dienst überprüft habe.

Kinsta XML-RPC-Prüfung
Kinsta XML-RPC-Prüfung

Dies zeigt, dass xmlrpc.php auf kinsta.com deaktiviert wurde. Wenn Sie also die Überprüfung durchführen und feststellen, dass xmlrpc.php auf Ihrer Website immer noch aktiviert ist, wie schalten Sie es aus?

So deaktivieren Sie xmlrpc.php

Es gibt drei Möglichkeiten, xmlrpc.php zu deaktivieren:

Schauen wir uns jeden einzeln an.

So deaktivieren Sie xmlrpc.php mit einem Plugin

Die Installation eines Plugins zum Deaktivieren von xmlrpc.php ist der einfachste Weg, dies zu tun. Das Plugin XML-RPC deaktivieren deaktiviert es vollständig. So verwenden Sie es.

Ausgangspunkt ist meine eigene Website, auf der xmlrpc.php aktiviert ist. Sie können dies anhand der Überprüfung sehen, die ich durchgeführt habe:

Rachel McCollin-Website - XML-RPC-Prüfung
Rachel McCollin-Website – XML-RPC-Prüfung

Installieren Sie das Plugin über Ihren Plugins -Bildschirm im WordPress-Admin und aktivieren Sie es.

Sie müssen nichts weiter tun: Die Aktivierung des Plugins führt dazu, dass XML-RPC deaktiviert wird. Wenn ich jetzt eine Überprüfung auf meiner Website durchführe, erhalte ich ein anderes Ergebnis:

Rachel McCollin-Website - zweiter XML-RPC-Check
Rachel McCollin-Website – zweiter XML-RPC-Check

So einfach ist das!

Deaktivieren Sie XML-RPC-Pingbacks mit einem Plugin

Aber was ist, wenn Sie einige Aspekte von xmlrpc.php deaktivieren möchten und andere nicht? Mit dem Plugin „XML-RPC Pingback deaktivieren“ können Sie nur die Pingback-Funktionalität deaktivieren, was bedeutet, dass Sie bei Bedarf weiterhin Zugriff auf andere Funktionen von XML-RPC haben.

Das Plugin funktioniert genauso wie das Plugin XML-RPC deaktivieren: einfach installieren, aktivieren und es funktioniert.

Konfigurieren Sie die XML-RPC- und REST-API-Aktivierung mit einem Plugin

Wenn Sie eine genauere Kontrolle darüber wünschen, wie sowohl xmlrpc.php als auch die REST-API auf Ihrer Website konfiguriert sind, können Sie das REST XML-RPC Data Checker-Plug-in installieren.

Nachdem Sie dieses Plugin installiert und aktiviert haben, gehen Sie zu Einstellungen > REST XML-RPC Data Checker und klicken Sie auf die Registerkarte XML-RPC .

REST XML-RPC-Datenprüfer
REST XML-RPC-Datenprüfer

Auf diese Weise können Sie genau konfigurieren, welche Aspekte von xmlrpc.php auf Ihrer Website aktiv sind.

Benötigen Sie ein blitzschnelles, sicheres und entwicklerfreundliches Hosting? Kinsta wurde speziell für WordPress-Entwickler entwickelt und bietet zahlreiche Tools und ein leistungsstarkes Dashboard. Sehen Sie sich unsere Pläne an

Alternativ können Sie es auch einfach ganz ausschalten. Und wenn Sie auch die Kontrolle über die REST-API haben möchten, gibt Ihnen das Plugin eine weitere Registerkarte dafür.

So deaktivieren Sie xmlrpc.php ohne ein Plugin

Wenn Sie lieber kein weiteres Plugin auf Ihrer Website installieren möchten, können Sie xmlrpc.php deaktivieren, indem Sie Code in einen Filter oder in Ihre .htaccess-Datei einfügen. Schauen wir uns beide Methoden an.

Deaktivieren Sie xmlrpc.php über einen Filter

Eine Option hier ist die Verwendung des Filters xmlrpc_enabled , um xmlrpc.php zu deaktivieren. Füge diese Funktion zu einem Plugin hinzu und aktiviere sie auf deiner Seite:

 add_filter( 'xmlrpc_enabled', '__return_false' );

Sie könnten dies zu Ihrer Themenfunktionsdatei hinzufügen, aber es ist besser, ein Plugin zu schreiben.

Die andere Option hat mit der Bearbeitung Ihrer .htaccess-Datei zu tun, die bei Hosting-Providern verfügbar ist, die Apache verwenden, indem Sie sich über FTP oder cPanel mit dem Server Ihrer Website verbinden.

Deaktivieren Sie xmlrpc.php über die .htacess-Datei

Fügen Sie in Ihrer .htaccess -Datei diesen Code hinzu:

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

Stellen Sie sicher, dass Sie eine Kopie der alten Datei erstellen, bevor Sie dies tun, nur für den Fall, dass Sie auf Probleme stoßen.

Lassen Sie xmlrpc.php von Ihrem Hosting-Provider deaktivieren

Alternativ deaktivieren einige Hosting-Anbieter xmlrpc.php, wenn ein Angriff erkannt wird.

Wenn bei Kinsta ein Angriff über XML-RPC erkannt wird, wird der Nginx.config-Datei automatisch ein Code-Snippet hinzugefügt:

 location ~* ^/xmlrpc.php$ { return 403; }

Dies erzeugt einen 403-Fehler und stoppt den Angriff in seinen Spuren.

Wenn Sie dies selbst tun, verwenden Sie am besten eine der oben genannten Methoden. Aber bevor Sie dies tun, erkundigen Sie sich immer zuerst bei Ihrem Hosting-Provider.

Wann müssen Sie xmlrpc.php aktivieren?

Es kann vorkommen, dass Sie xmlrpc.php auf Ihrer WordPress-Site aktivieren müssen oder wenn Sie es nicht vollständig deaktivieren sollten.

Diese sind:

  • Sie führen die REST-API nicht aus (nicht empfohlen, aber in manchen Situationen notwendig), müssen aber zwischen Ihrer WordPress-Site und anderen Systemen kommunizieren.
  • Sie können WordPress nicht auf Version 4.4 oder höher aktualisieren, haben also keinen Zugriff auf die REST-API. Dies kann an Einschränkungen in Ihrem Hosting-Setup liegen (in diesem Fall würde ich den Hosting-Provider wechseln) oder an der Inkompatibilität von Themes oder Plugins (in diesem Fall würde ich diese ersetzen oder aktualisieren).
  • Sie arbeiten mit einer externen Anwendung, die nicht auf die WP-REST-API, aber auf XML-RPC zugreifen kann (langfristig würde ich empfehlen, diese Anwendung zu aktualisieren oder zu einer REST-kompatiblen Anwendung zu wechseln).

Das ist es! All dies sind keine besonders guten Gründe dafür, die XML-RPC-Spezifikation eingeschaltet zu lassen.

Der einzige Grund, warum es immer noch in WordPress ist, ist die Abwärtskompatibilität und Sie würden es nur verwenden, wenn Sie mit veralteten Systemen arbeiten. Für alle, die ihre Websites auf dem neuesten Stand halten und mit der neuesten Technologie arbeiten möchten, ist das Deaktivieren von xmlrpc.php der richtige Weg.

XML-RPC war einst ein wesentlicher Bestandteil von WordPress. Jetzt stellt es ein Sicherheitsrisiko dar - Diese Anleitung zeigt Ihnen genau, wie Sie es auf Ihrer Website deaktivieren können. Zum Twittern klicken

Zusammenfassung

Die XML-RPC-Spezifikation wurde entwickelt, bevor WordPress überhaupt erstellt wurde, als Mittel für WordPress, mit externen Systemen und Anwendungen zu kommunizieren. Es hat inhärente Sicherheitslücken und könnte Ihre Website anfällig für Angriffe machen.

Jetzt, da die REST-API Ihre Website mit anderen Anwendungen kommunizieren lässt, können Sie xmlrpc.php sicher deaktivieren. Wenn Sie die obigen Schritte befolgen, verbessern Sie durch Deaktivieren die Sicherheit Ihrer Website.