Viktigt: stäng av XML-RPC i WordPress

Den vanligaste attacken mot WordPress-baserade hemsidor är en sk. brute force-attack. Det innebär att man försöker få åtkomst/kontroll till en hemsida genom att gissa sig till ett lösenord väldigt många gånger. Med dagens kraftfulla datorer och servrar kan man gissa hundratals, om inte tusentals, lösenord på en minut.

Brute force-attacker är dock rätt så enkla att upptäcka. Om man ansluter x antal gånger, under en viss tid, mot wp-login.php (WordPress-inloggningssida) så kan man anta att en attack pågår. Den senaste veckan har t ex vår brandväggslösning blockerat ca 130 000 brute force-attacker mot våra kunders WordPress-sidor (det är den näst mest ”populära” attacken i vårt nätverk).

– Men tänk om man kan testa flera lösenord via en och samma anslutning?

Sedan WordPress version 3.5 är XML-RPC aktiverat som standard. XML-RPC är ett gränssnitt som används t ex av mobila appar, vissa tillägg (däribland Jetpack) samt för sk. pingbacks (att man automatiskt länkar tillbaka om man får en länk till sig). Det var från början en bra sak, men det har visat sig medföra flera säkerhetsrisker.

En av de mindre kända funktionerna i XML-RPC är en metod som heter system.multicall, som innebär att man kan utföra flera anrop inom en och samma anslutning. Det är bra om man t ex vill köra flera olika kommandon via en HTTP-anslutning. Men det har börjat missbrukas rejält de senaste månaderna.

Via system.multicall i XML-RPC kan man testa 100-tals, om inte 1 000-tals, lösenord med en enda anslutning mot WordPress.

Säkerhetsföretaget Sucuri har även uppmärksammat dessa attacker. Denna graf från dem illustrerar detta tydligt:

Attacker via system.multicall i XML-RPC

Det här är ett allvarligt problem, då dessa attacker inte lika enkelt kan uppfattas/identifieras och stoppas av våra brandväggar (och andra lösningar). Det enda vettiga sätt att skydda sig mot detta är att stänga av XML-RPC i WordPress. Det är vad vi nu vill rekommendera er att göra.

FS Data är ett säkert webbhotell– Stäng av XML-RPC i WordPress

Det enklaste sättet att stänga av XML-RPC i WordPress är att installera och aktivera ett tillägg som heter Disable XML-RPC. Tillägget fungerar bra med senaste versionen av WordPress (4.3.1 i skrivande stund), både för enklare WordPress-sidor samt för WordPress-nätverk (nätverksaktivering).

Man kan även blockera extern åtkomst till filen xmlrpc.php (som används för XML-RPC i WordPress) via .htaccess. Lägg bara in nedanstående kod i filen .htaccess som ligger i rotmappen för din WordPress-sida.

# Blockera anslutningar till xmlrpc.php

order deny,allow
deny from all

Ovanstående kod fungerar med webbservern Apache (som vi använder för våra webbhotellspaket). Man kan även begränsa åtkomsten till xmlrpc.php specifika IP-adresser genom att lägga in följande rad i .htaccess (efter raden som inleds med ”deny”):

allow from 127.0.0.1

Där man då ersätter 127.0.0.1 med den IP-adress som behöver kommunicera med WordPress via XML-RPC.

Ett tredje sätt att stänga av XML-RPC är att lägga in följande rad i wp-config.php (i rotmappen för din WordPress-sida):

add_filter( 'xmlrpc_enabled', '__return_false' );

Den raden behöver läggas in efter följande rad:

require_once(ABSPATH . 'wp-settings.php');

– När ska man inte stänga av XML-RPC i WordPress?

Den enda gång man inte bör stänga av XML-RPC är om man har en viktig applikation eller tillägg som kommunicerar med WordPress via detta gränssnitt. De mobila apparna är nuförtiden överflödiga, då WordPress är fullt ut mobilanpassat. Fundera gärna över om tillägget är tillräckligt viktigt. Att man tappar pingbacks är tråkigt, men det är det värt sett till säkerheten.

– Framtiden för XML-RPC i WordPress

Sedan en tid tillbaka pågår arbete med ett helt nytt REST API (ett annat gränssnitt) för WordPress. Om allt går enligt plan så kommer detta API att erbjudas från WordPress 4.5 (som släpps nästa år). Med det nya API:et på plats är det högst sannolikt att XML-RPC kommer vara inaktiverat som standard för WordPress.

Vi vill avslutningsvis rekommendera er alla att stänga av XML-RPC i WordPress.

Om du har några frågor kring detta, eller kanske förslag på andra lösningar, så får du gärna lämna en kommentar här nedan.

You Might Also Like
5 Comments
    • sulo
      says:

      Felmeddelande 500 är ett internt serverfel. Det kan bero på många olika saker, om du har webbhotell/server hos oss så kan du kontakta vår kundtjänst för felsökning. Har även lagt till ett tredje exempel på hur man kan stänga av XML-RPC här ovan.

      Jetpack kommunicerar med servrar hos WordPress.com. De moduler som är beroende av denna kommunikation fungerar inte utan XML-RPC. För ytterligare detaljer här behöver vi hänvisa till Jetpack.

  • Mikael Hellqvist
    says:

    Jag håller med om att mobilappen är överflödig i dag, med tanke på att gränssnittet är responsivt. Jetpack används dock av många och detta kommer inte att fungera om XML-RPC stängs av. Att lägga in en allow i .htaccess är säkert bra men klarar man sig inte om man kör Wordfence eller liknande säkerhetstillägg?

Lämna ett svar