Mi az az XMP-RPC?
Az XMP-RPC egy XML formátumú távoli meghívási protokoll. Oké, ennek a mondatnak vagy egyszerűbb megfogalmazása is. Ennek segítségével tudunk a WordPress-nek távolról adatokat, utasításokat adni – fogadni, xml formátumban és a curl-et is igényli a működéshez. Ez nem csak a WordPress-ben található, csupán a WP-be is bekerült.
Mit jelent ez egy általános WordPress honlapnál?
Ha csak nem használunk külső API-n vagy közvetlenül XML-RPC -t használó alkalmazást (pl. raktárkészlet kezelő WooCommerce-hez, tömeges oldalkezelő, mobiltelefonos WP menedzselő és hasonló) akkor erre semmi szükségünk sincs és teljesen nyugodtan kikapcsolhatjuk, letilthatjuk. Ezen protokollon keresztül ha nem vigyázunk, akkor hozzászólásokat is tudnak beküldeni.
A JetPack bővítmény használja az XML-RPC kommunikációt, így ha az van, akkor ne tiltsuk, ne kapcsoljuk ki.
Régebben az XML-RPC szerepe fontosabb volt. A külső, adat és hírgyűjtő oldalak irányába ilyen ping-el lehetett tudatni, hogy friss tartalom került fel blogunkra, honlapunkra. Ma már ennek a szerepét a Google News elég jelentősen átvette.
Maga az XML-RPC szerepét fokozatosan felváltja a JSON adatátadási módszer, azonban még jó ideig velünk fog maradni, így érdemes kezdeni vele valamit, nem hagyni kiskaput a honlapunk piszkálására.
Mi a gond az XMP-RPC -vel?
Miként távoli utasításokra alkalmas, így előszeretettel próbálkoznak rajta keresztül támadó robotok. Ez akkor fog problémát jelenteni, ha ezek a próbálkozások nagyon megszaporodnak. Ilyenkor lassul weboldalunk, hiszen a robotok lekötik a szerver teljesítményének egy részét. Olcsóbb osztott tárhely esetén ez jelentős, érezhető problémát okozhat.
Hogyan védjük, kapcsoljuk ki?
A legjobb megoldás, ha a tárhely szolgáltatónk tűzfala ezeket a bot-okat eleve megszűri. Persze sok hosting ezeket nem állítja be eleve, hozzáférést pedig ezekhez nem adnak (Ezt megértem miért nem adnak hozzáférést) és így alternatív megoldásokból kell választanunk. Jó hír, hogy több lehetőségünk is van rá, nézzük is.
Domain szinten blokkolni Cloudflare-el
Amennyiben rendelkezünk Cloudflare fiókkal és ott kezeljük a domain nevünket, van lehetőségünk egyedi tűzfalszabályt beállítani, ráadásul elég részletesen.
- Lépjünk be a Cloudflare fiókunkba és menjünk a domain-ünkre
- Firewall menüpontra menjünk, majd azon belül Firewall Rules
- Kattintsunk arra, hogy „Create a Firewall rule”
- Adjunk meg egy nevet (1), például wp-xmlrpc-blokk
- Válasszuk ki az URI-t (2), az operátor legyen a contains (3)vagy is: tartalmazza a következőt, majd adjuk meg az /xmlrpc.php fájlnevet (4)
- Válasszuk ki, hogy milyen válaszreakciót kapjon (5) a próbálkozó. Lehet Javascript-es szűrést, a Captcha-t vagy teljes blokkolást választani, azonban ha nem használjuk akkor nyugodtan Block, majd jobb alul Deploy / Save gomb
- Várjunk 30 másodpercet, majd próbáljuk a weboldalunkcime.hu/xmlrpc.php -s címet megnyitni.
Htaccess szabállyal
A legtöbb tárhelyen van lehetőségünk .htaccess fájl használatára. A legelső sor elé tegyük be az alábbi kódot:
Funkciós filterrel
A WordPress esetén a saját sablonunk functions.php fájlának 1 soros kiegészítésével is kikapcsolhatjuk. Arra azonban ügyeljünk, hogy sabloncserénél ezt a sort az újhoz is adjuk hozzá. Ne maradjon el a biztonsági mentés készítés mielőtt módosítanánk bármilyen fájlt!
add_filter( 'xmlrpc_enabled', '__return_false' );
Bővítménnyel, plugin-al
Mivel WordPress-ről beszélünk, így mindenre is van bővítmény, erre is természetesen, ráadásul több közül is választhatunk. Elsődlegesen annak vagyok a híve (és azt tanácsolom), hogy amit lehet ne bővítménnyel oldjunk meg. A legjobb megoldás bemutatásával kezdtem (Cloudflare) és direkt a végére hagytam a plugin megoldást. Ez is jó, azonban ha tudjuk, válasszuk a fentiek egyikét inkább. Néhányat xml-rpc blokkoló bővítményt felsorolok:
- Sucuri Security (https://wordpress.org/plugins/sucuri-scanner/)
- Wordfence (https://wordpress.org/plugins/wordfence/)
- Disable XML-RPC-API (https://wordpress.org/plugins/disable-xml-rpc-api/)