Kui sul on WordPressi koduleht või e-pood, siis oled võib-olla kuskilt kuulnud nime XML-RPC. Kõlab tehniliselt ja natuke tüütu teemana. Aga vaata – see on üks neist vanematest WordPressi osadest, mida botid armastavad päris tihti rohkem kui peaks.
Asi on selles, et XML-RPC ei ole iseenesest pahatahtlik. Probleem tekib siis, kui seda pole sul tegelikult vaja, aga see on ikka lahti. Siis saab sellest ründajatele mugav uks, kust proovida paroole, koormata serverit või teha muud jama.
Selles postituses räägin lihtsas keeles, mis see XML-RPC on, miks see turva mõttes probleemiks muutub ja millal võib selle rahulikult kinni panna. Nii et kui tahad oma lehte vähem haavatavaks teha ilma keerulise setup’ita, siis loe edasi.
Mis XML-RPC üldse on?
XML-RPC on vana suhtlusviis, mille kaudu saab WordPressiga väljastpoolt ühendust võtta. Ehk siis mõni teine rakendus või teenus saab sinu lehele käske saata. Kunagi oli see päris vajalik, sest inimesed kirjutasid blogipostitusi eraldi desktop-programmides või kasutasid mobiilirakendusi, mis ei töötanud nii sujuvalt nagu täna.
Tänapäeval on olukord teine. Enamik asju käib REST API kaudu või otse WordPressi adminis. XML-RPC on aga paljudel lehtedel siiani sees, automaatselt.
Tegelikult tähendab see lihtsat asja: kui sa ei kasuta seda teadlikult, siis on suur võimalus, et sul pole seda vaja.
- See asub tavaliselt aadressil
/xmlrpc.php - See võib lubada kaugelt autentimist ja erinevaid käske
- See on WordPressis kaua olemas olnud, seega botid tunnevad seda hästi
- Kui see jääb kaitseta, võib sellest saada rünnaku point
Miks botid XML-RPC-d nii väga armastavad?
Põhjus on üsna lihtne. XML-RPC kaudu saab teha asju, mis on botile efektiivsed. Näiteks proovida palju paroole järjest või saata korraga suurem hulk päringuid nii, et see koormab lehte rohkem kui tavaline sisselogimisleht.
Üsna sageli kasutatakse XML-RPC-d brute force rünnakuteks. Ehk robot proovib erinevaid kasutajanimesid ja paroole. Kui tavaline wp-login.php on kaitstud, siis vahel jäetakse XML-RPC kahe silma vahele. Ja sealt algabki jama.
Teine teema on pingback-rünnakud. Need on natuke vanakooli värk, aga töötavad ikka mõnel juhul. Bot võib kasutada sinu lehte osana suuremast DDoS-laadsest rünnakust kellegi teise vastu. Ehk sinu sait muutub tööriistaks, ilma et sa ise sellest aru saaks.
Kui tahad üldisemalt aru saada, miks ainult ühe turvaplugina paigaldamine ei lahenda asja, siis see artikkel seletab hästi: “Paigaldasin Wordfence’i ja unustasin” – miks see on ohtlik lõks.
Kuidas aru saada, kas XML-RPC on sinu lehel probleem?
Ausalt öeldes ei pea sa kohe serverilogisid kaevama. Mõned märgid annavad päris hästi vihje kätte. Kui sul on väikeettevõtte leht ja sa ise ei kasuta mingeid spets rakendusi, siis XML-RPC aktiivsus on tihti lihtsalt müra või rünnak.
Vaata neid märke:
- Hostingu logides on palju päringuid aadressile
/xmlrpc.php - Leht muutub aeg-ajalt aeglaseks ilma nähtava põhjuseta
- Sisselogimiskatseid on palju, kuigi keegi tiimist ei logi sisse
- Turvaplugina või seire tooriist näitab XML-RPC vastu huvi tundvaid bote
- Hosting saadab kirju kahtlase koormuse kohta
Samas, ainult see, et xmlrpc.php olemas on, ei tähenda kohe katastroofi. Küsimus on selles, kas seda kasutatakse ja kas seda on üldse vaja kasutada.
Millal võib XML-RPC julgelt välja lülitada?
Enamiku väikeste firmade puhul on vastus lihtne – peaaegu alati võib. Kui sul on tavaline koduleht, teenusteleht, blogi või WooCommerce e-pood, siis suure tõenäosusega ei kasuta sa XML-RPC-d üldse.
Välja võib selle lülitada siis, kui:
- sa ei kasuta WordPressi mobiiliäppi sisu haldamiseks
- sa ei postita välise vana rakenduse kaudu
- sa ei kasuta teenuseid, mis sõltuvad just XML-RPC-st
- sul pole arendaja poolt tehtud erilahendust, mis seda vajab
Praktikas on see nii-öelda vana uks, mis jäeti majale alles, kuigi keegi sealt enam ei käi. Kui ust vaja pole, pane kinni. Täiesti normaalne otsus.
Kui tahad seda teha lihtsamalt koos muude baasseadetega, siis üks võimalus on kasutada lehte turvalisus ühe klopsuga, kus XML-RPC piiramine või sulgemine käib ilma koodi näppimata.
Millal ei tohiks seda pimesi kinni panna?
Siin on see moment, kus ei maksa liiga rutakalt tegutseda. Kui sul on mingi väline süsteem, mis suhtleb WordPressiga vanema meetodi kaudu, siis võib XML-RPC kinnipanek midagi katki teha.
Näiteks:
- vana mobiilirakendus postituste haldamiseks
- mõni automatiseeritud sisusüsteem
- spets plugin või custom integration
- jetpacki vanemad kasutusjuhud
Kui sa ei tea kindlalt, kas seda kasutatakse, testi rahulikult. Pane XML-RPC ajutiselt kinni ja kontrolli üle olulised töövood – kontaktivormid, e-pood, postituste haldus, integratsioonid. Kui miski ei muutu, siis on kõik okei.
Seejuures on mõistlik enne teha backup. Alati. Pisike samm, aga päästab närve.
Kuidas XML-RPC turvaliselt välja lülitada?
Kõige lihtsam variant on kasutada turvaplugina või hoolduslahenduse vastavat seadistust. Ei pea faili muutma ega functions.php-sse midagi kirjutama. Väikeettevõtte omanikule on see päris palju parem variant, sest vähem on võimalusi midagi kogemata sassi ajada.
Variantide loogika on üldiselt selline:
- keelad XML-RPC täielikult
- lubad ainult vajalikud funktsioonid
- piirad ligipääsu tulemüüri või reeglitega
- jälgid, kas botid proovivad seda ikka edasi
Kui tahad, et keegi selle sinu eest üle vaataks ja hoiaks ka edaspidi lehel silma peal, siis vaata WordPressi hooldusteenust. See on eriti mõistlik siis, kui su leht teenib raha ja sa ei taha ise igat update’i ja turvasätet manageerida.
Mis juhtub, kui XML-RPC jääb lahti?
Mitte alati ei juhtu kohe midagi dramaatilist. Ja see ongi petlik. Leht võib töötada näiliselt hästi, aga taustal käib aktiivselt botide toksimine. Omajagu päringuid, omamoodi koormus, vaikselt kasvav risk.
Päris tihti näeb see välja nii:
- server koormub tipptundidel rohkem kui peaks
- logides on kummaline liiklus, mida keegi ei oska seletada
- nõrk parool murtakse lõpuks läbi
- ründaja saab esialgse ligipääsu ja liigub sealt edasi
Kui sind huvitab, kuidas sisselogimise kaitse laiemalt töötab ja miks robotid just neid kohti proovivad, siis loe ka seda: Kuidas kaitsta WordPressi sisselogimist robotrünnakute eest.
Mida ma soovitaks väikeettevõtte omanikule päriselt teha?
Üldiselt ära mõtle XML-RPC-st kui ühest eraldi checkbox’ist. Vaata seda kui osa suuremast pildist. Kui sul on WordPressi leht, siis turvalisus ei tähenda ainult seda, et “parool on olemas”. See on terve komplekt väikseid asju, mis koos hoiavad jamad eemal.
Minu praktiline soovitus oleks selline:
- kontrolli, kas sinu leht kasutab XML-RPC-d päriselt
- kui ei kasuta, lülita see välja
- pane peale sisselogimise kaitse ja 2FA
- hoia pluginad, teemad ja WordPress ise uuendatud
- jälgi logisid ja kahtlast liiklust aktiivselt
- tee regulaarselt backup’e
Lühike lause. Ära jäta vanu uksi lahti.
Kui sul on e-pood, kus tellimused tulevad iga päev, siis see on veel tähtsam. Iga seisak või nakatumine tähendab päris raha kaotust. Nii et natuke ennetust on odavam kui hilisem puhastus.
Kui leht on juba kahtlane, ära jää ootama
Kui sul on tunne, et midagi on valesti – leht aeglustub, hosting kirjutab, adminis on imelikud kasutajad või logides käib veider sagimine -, siis ära looda, et see läheb ise üle. Tegelikult ei lähe.
Sellisel juhul tasub kiirelt kontrollida, kas XML-RPC on üks avatud kohtadest, mida kuritarvitatakse. Ja kui leht on juba pihta saanud, siis ära hakka poolikult katsetama. Mida kauem ootad, seda rohkem võib pahavara laiali minna või SEO pihta saada.
Nii et kõige mõistlikum järgmine samm on lihtne: vaata üle, kas XML-RPC on sul vajalik. Kui ei ole, pane kinni. Kui sa ei taha ise pusida või asi tundub kahtlane, võta hooldus peale ja lase setup normaalseks teha. See on võrdlemisi väike töö, aga turva mõttes annab päris hea võidu.