Die „XML-RPC“-Schnittstelle ist als Standardeinstellung in „WordPress“ (seit Version 3.5) aktiviert und sie ist schon ein nützliches Werkzeug, allerdings werden die meisten Benutzer von „WordPress“ diese Option gar nicht gebrauchen. Sie wird z.B. für Pingbacks von anderen Blogs benötigt, auf die man aber wohl ohne Weiteres verzichten kann.
Die „XML-RPC“-Schnittstelle wird gebraucht für:
1. Pingbacks und Trackbacks (= Kommunikation mit anderen Blogs) · Wer als WP-Benutzer gar nicht weiß, was das überhaupt ist, wird sie weder vermissen noch als wichtigen Bestandteil betrachten.
2. „Jetpack“ (= Plugin-Paket von wordpress.com) · Viele ergänzende Helferlein, die zum Teil durchaus ganz interessant sind, für eine funktionierende WP-Homepage jedoch nicht Voraussetzung sind.
3. Mobile Apps (= zum Bearbeiten via Tablet und Smartphone) · Das Backend von „WordPress“ ist inzwischen „Responsive“, insofern besteht eigentlich keine Notwendigkeit mehr dafür.
Sicherheitsrisiko: die „XML-RPC“-Schnittstelle
Auch wer Artikel mit der für Tablets und Smartphones verfügbaren „Mobile App“ schreiben und veröffentlichen will, benötigt dafür die „XML-RPC“-Schnittstelle. Seitdem nun aber das Backend von WP „Responsive“ ist, ist die Darstellung auf mobilen Geräten wirklich sehr gut und übersichtlich, weshalb ich jedenfalls bei keinem Projekt die Möglichkeiten dieser Schnittstelle in Anspruch nehme. Im Gegenteil. Sie zu deaktivieren ist alleine deshalb eine gründliche Überlegung wert, weil sie ein nicht zu unterschätzendes Sicherheitsrisiko darstellt.
Zum Deaktivieren müssen nur ein paar Codeschnipsel in die „functions.php“-Datei (liegt im Ordner des verwendeten WordPress-Themes) und in die „.htaccess“-Datei (liegt auf dem Server im selben Ordner wie die WordPress-Installation) eingefügt werden.
1) In Datei „functions.php“ einfügen
//* XMLRPC-Schnittstelle abschalten
add_filter( 'xmlrpc_enabled', '__return_false' );
Damit ist die Schnittstelle geblockt und stellt kein Sicherheitsrisiko mehr dar. Da sie aber noch im HTTP-Header erscheint und von dort angefragt werden kann, was schlimmstenfalls die Performance der Homepage beeinträchtigt, sollte sie dort ebenfalls entfernt werden.
2a) In Datei „functions.php“ einfügen
//* HTTP-Header von XMLRPC-Eintrag bereinigen
add_filter( 'wp_headers', 'remove_x_pingback' );
function remove_x_pingback( $headers )
{
unset( $headers['X-Pingback'] );
return $headers;
}
Der obige Codeschnipsel (2a) wird sehr häufig und in vielen Artikeln empfohlen, scheint allerdings bei neueren „WordPress“-Versionen (ab Version 4.4) nicht mehr zu greifen, da der Link zur „xmlrpc.php“ trotzdem nach wie vor im Quelltext* der Homepage sichtbar ist. Ob der Link tatsächlich beseitigt wurde, läßt sich z.B. mit „Redbot“ überprüfen.
* Quelltext einer Homepage sichten: bei Firefox die „cmd“-Taste halten und „U“ tippen
Alternativ nehmen wir den folgenden Codeschnipsel (2b) und der besagte Link ist verschwunden. Falls er weiterhin sichtbar bleibt, macht das aber eigentlich nix, denn die beiden anderen Codeschnipsel (1 und 3) erfüllen den gewünschten Zweck und blockieren die Funktion.
2b) In Datei „functions.php“ einfügen
//* RSD-Link beseitigen
remove_action('wp_head', 'rsd_link');
Als letzten Schritt fügen wir den folgenden Codeschnipsel (als erstes vor allen anderen Angaben) in die „.htaccess“-Datei, damit auch versteckte Zugriffe grundsätzlich unterbunden werden. Von der „functions.php“-Datei sowie der „.htaccess“-Datei sollte man am Besten vorher eine Sicherheitskopie anlegen, falls dabei unerwarteterweise doch etwas schiefgeht.
3) In Datei „.htaccess“ einfügen
# XML-RPC Schnittstelle abschalten
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Das war’s und wir haben die Sicherheit erhöht. Das Thema Sicherheit sollte man nicht auf die leichte Schulter nehmen, denn schließlich ist „WordPress“ inzwischen das weltweit beliebteste Content-Management-System (= CMS), was es auch für Hacker immer interessanter macht.
Kommentar schreiben!