Vdor v WordPress – kako ga preprečiti in kaj storiti, če je stran že okužena?
Vdor v WordPress je ena najbolj neprijetnih stvari, ki se lahko zgodi lastniku spletne strani. Posledice niso samo spremenjena naslovna stran ali nedelujoč WordPress. Napadalec lahko vstavi zlonamerno kodo, preusmerja obiskovalce na druge strani, pošilja neželeno pošto, ustvarja skrite administratorske račune, krade podatke ali pusti stranska vrata, skozi katera se vrne tudi po navideznem čiščenju.
Dobra novica je, da je veliko vdorov mogoče preprečiti z razmeroma osnovnimi ukrepi. Če do vdora vseeno pride, pa je najpomembneje ukrepati sistematično. Naključno brisanje sumljivih datotek pogosto odstrani samo vidni del okužbe, ne pa tudi vzroka.
Zakaj sploh pride do vdora v WordPress?
WordPress sam po sebi ni »nevaren« sistem. Težava je, da spletna stran ni sestavljena samo iz jedra WordPressa. Večina strani uporablja več vtičnikov, temo, različne zunanje integracije in uporabniške račune. Vsak tak del lahko predstavlja dodatno vstopno točko.
Med najpogostejše vzroke sodijo zastareli WordPress, vtičniki ali teme, ranljiv vtičnik, ukradeno geslo, prešibko geslo, okužen računalnik skrbnika, nepreverjena oziroma piratska »nulled« tema ali vtičnik ter slabo zaščiteno strežniško okolje.
Pomembno je tudi razumeti, da vdor ni vedno takoj opazen. Napadalec lahko v spletno stran vstavi skrito kodo in jo uporablja več dni ali tednov, preden lastnik sploh opazi težavo. Prav zato so poleg zaščite pomembni tudi dnevniki, nadzor sprememb in dovolj dolga zgodovina varnostnih kopij.
1. WordPress, vtičnike in teme redno posodabljajte
Najpomembnejši varnostni ukrep je zelo preprost: uporabljajte podprte in posodobljene različice WordPressa, vtičnikov in tem. Ko je ranljivost javno objavljena in je zanjo že na voljo popravek, napadalci pogosto avtomatizirano iščejo spletne strani, ki popravka še niso namestile.
Neuporabljene vtičnike in teme je bolje odstraniti, ne samo deaktivirati. Če kode ne potrebujete, ni razloga, da ostaja na strežniku in povečuje napadalno površino.
Pri pomembnih spletnih trgovinah in poslovnih straneh posodobitev ni treba izvajati brezglavo. Smiselno je imeti varnostno kopijo, posodobiti najprej manj tvegane komponente, nato preveriti delovanje strani in šele potem nadaljevati.
2. Vtičnike in teme nameščajte samo iz zaupanja vrednih virov
Velik varnostni problem so piratske oziroma »nulled« premium teme in vtičniki. Pri takšni datoteki uporabnik ne more vedeti, ali je bila izvorna koda spremenjena in ali vsebuje backdoor, skriti administratorski dostop ali kodo za krajo podatkov.
Vtičnike in teme nameščajte iz uradnega WordPress repozitorija ali neposredno od preverjenega razvijalca. Pred namestitvijo preverite, ali se projekt še aktivno razvija, kdaj je bil nazadnje posodobljen in ali je združljiv z aktualno različico WordPressa.
3. Uporabljajte močna, unikatna gesla in 2FA
Geslo za WordPress ne sme biti enako geslu za e-pošto, cPanel, DirectAdmin, FTP ali druge storitve. Če isto geslo uporabljate na več mestih, lahko že en sam uhaj podatkov napadalcu odpre več različnih poti do spletne strani.
Za administratorske račune uporabite dolgo in unikatno geslo ter vključite dvostopenjsko avtentikacijo. O tem smo že podrobneje pisali v članku Zakaj je dvostopenjska avtentikacija (2FA) pametna izbira za varnost vaših računov?
Vsak uporabnik naj ima samo pravice, ki jih dejansko potrebuje. Oseba, ki samo ureja vsebino, praviloma ne potrebuje administratorskega dostopa.
4. Za prenos datotek uporabljajte SFTP
Če ponudnik gostovanja omogoča SFTP, ga uporabljajte namesto navadnega FTP. Pri SFTP so prijavni podatki in promet med vašim računalnikom in strežnikom šifrirani.
Na računalnikih, s katerih se prijavljate v WordPress ali na gostovanje, redno posodabljajte operacijski sistem in brskalnik ter uporabljajte zaščito pred zlonamerno programsko opremo. Včasih je spletna stran tehnično dobro zaščitena, napadalec pa dostop pridobi prek ukradenega gesla na okuženem računalniku.
5. Omejite, kaj lahko napadalec naredi po prijavi
Če na strani ne uporabljate vgrajenega urejevalnika datotek za teme in vtičnike, ga lahko izklopite z nastavitvijo v datoteki wp-config.php:
define('DISALLOW_FILE_EDIT', true);To ni zaščita pred vsemi napadi, lahko pa omeji eno od poti, po kateri bi nekdo z ukradenim administratorskim računom spreminjal PHP datoteke neposredno iz WordPress nadzorne plošče.
Preverite tudi pravice datotek in map. Na tipičnem Linux gostovanju so pogosto primerne pravice 644 za datoteke in 755 za mape, vendar je končna nastavitev odvisna od strežniškega okolja. Nastavljanje vsega na 777 zaradi »težav z dovoljenji« je zelo slaba praksa.
6. Uporabite varnostni vtičnik, vendar mu ne zaupajte kot edini zaščiti
Varnostni vtičnik lahko pomaga pri omejevanju prijav, 2FA, opozarjanju na spremembe datotek in odkrivanju znanih zlonamernih vzorcev. Vendar WordPress vtičnik deluje znotraj samega WordPress okolja. Če je strežnik ali spletna stran že močno kompromitirana, ne smemo pričakovati, da bo en vtičnik sam rešil vse.
Boljša zaščita je večplastna: varen strežnik, spletni požarni zid, pravilno nastavljene pravice, posodobljen WordPress, varni uporabniški računi, nadzor zlonamerne kode in dobre varnostne kopije.
7. Izberite ponudnika gostovanja, ki skrbi tudi za varnost strežnika
Pri izbiri WordPress gostovanja ni pomembna samo količina prostora in cena. Ponudnik lahko na strežniškem nivoju prepreči ali omeji veliko napadov, še preden pridejo do WordPressa.
Koristne so rešitve, kot so spletni aplikacijski požarni zid (WAF), ModSecurity, strežniško preverjanje zlonamerne kode, omejevanje brute-force napadov, izolacija uporabniških računov in redno posodabljanje strežniške programske opreme.
Pomembna je tudi tehnična podpora. Ko je stran okužena, je velika razlika, ali ponudnik lahko preveri dnevnike, pomaga določiti približen čas okužbe, preveri sumljive procese in uporabniku omogoči obnovo varnostne kopije.
8. Varnostne kopije so zadnja obrambna linija
Če bi morali izbrati en ukrep, ki najbolj zmanjša posledice uspešnega vdora, so to kakovostne varnostne kopije. WordPress stran je sestavljena iz dveh ključnih delov: datotek in podatkovne baze. Za popolno obnovo potrebujete oboje.
Dobro je, da ponudnik spletnega gostovanja izdeluje lastne samodejne varnostne kopije in omogoča več obnovitvenih točk. Še bolje je, če imate poleg kopij ponudnika tudi svojo neodvisno kopijo na drugi lokaciji.
Pri ponudniku preverite:
– kako pogosto se izdelujejo varnostne kopije,
– koliko dni oziroma obnovitvenih točk se hrani,
– ali varnostna kopija vključuje datoteke in podatkovne baze,
– ali lahko obnovo izvedete sami,
– ali ponudnik kopije hrani ločeno od produkcijskega strežnika,
– ali je obnova vključena v ceno ali se dodatno zaračuna.
Zakaj je zgodovina tako pomembna? Če je bil vdor izveden pred desetimi dnevi, vi pa ga opazite šele danes, vam samo včerajšnja varnostna kopija ne pomaga veliko, saj lahko vsebuje isto zlonamerno kodo. Več različnih obnovitvenih točk močno poveča možnost, da boste našli čisto stanje pred okužbo.
Kako prepoznati, da je WordPress morda vdrl?
Znaki niso vedno očitni. Pozorni bodite na nenadne preusmeritve na neznane strani, pojav oglasov ali vsebine, ki je niste objavili, neznane administratorske uporabnike, nenadno pošiljanje velike količine e-pošte, opozorila brskalnika ali Googla, nenavadno visoko porabo procesorja, spremenjene datoteke ter PHP datoteke v mapah, kjer jih ne pričakujete.
Sumljiv je tudi primer, ko se po odstranitvi zlonamerne datoteke ista ali podobna datoteka čez nekaj minut ponovno pojavi. To običajno pomeni, da je v sistemu ostal še drug mehanizem za ponovno okužbo.
Kaj storiti takoj, ko ugotovite vdor v WordPress?
1. Če stran ogroža obiskovalce, omejite dostop
Če stran obiskovalce preusmerja na zlonamerne strani, ponuja okužene datoteke ali aktivno pošilja spam, jo je smiselno začasno dati v vzdrževalni način oziroma omejiti javni dostop. Pri spletni trgovini je treba ukrep prilagoditi tako, da se ohrani čim več podatkov o naročilih in transakcijah.
2. Pred čiščenjem naredite kopijo trenutnega stanja
Tudi okužena kopija je lahko koristna. Ne uporabljate je kot čisto obnovitveno točko, lahko pa kasneje pomaga ugotoviti, katere datoteke so bile spremenjene, kdaj se je napad zgodil in kako je napadalec vzdrževal dostop.
WordPress tudi v uradni dokumentaciji priporoča, da se pred večjimi posegi v okuženo stran shrani posnetek trenutnega stanja.
3. Preverite, ali imate dokazano čisto varnostno kopijo
Če imate varnostno kopijo iz časa pred vdorom, je obnova pogosto najhitrejša in najvarnejša možnost. Toda samo povrnitev stare kopije ni dovolj. Pred ponovno objavo je treba odpraviti ranljivost, zaradi katere je do vdora prišlo, sicer se lahko stran ponovno okuži.
Pri WooCommerce trgovini ali drugem sistemu, kjer se podatki pogosto spreminjajo, previdno z obnovo stare baze. Če obnovite bazo izpred treh dni, lahko izgubite nova naročila, uporabnike ali druge poslovne podatke. V takšnem primeru je pogosto potreben selektiven prenos podatkov ali pomoč strokovnjaka.
4. Preverite administratorske uporabnike
V WordPressu odprite seznam uporabnikov in preverite vse račune z administratorskimi pravicami. Neznanega administratorskega računa ne ignorirajte. Zabeležite podatke za analizo in ga odstranite oziroma mu odvzemite dostop.
5. Zamenjajte WordPress jedro s čistimi datotekami
Pri resnem vdoru je varneje zamenjati jedrne WordPress datoteke s svežo kopijo iz uradnega vira kot iskati vsako posamezno spremenjeno datoteko.
Posebej preverite mapi wp-admin in wp-includes. Pri zamenjavi pazite na wp-content in wp-config.php, ker vsebujeta podatke in nastavitve vaše strani.
6. Vtičnike in teme namestite na novo iz čistih virov
Samo klik na »Update« ni vedno dovolj. Napadalec lahko v mapo vtičnika doda novo datoteko z drugim imenom, ki je običajna posodobitev ne odstrani.
Če sumite na kompromitiran vtičnik ali temo, je varnejši postopek odstranitev njegove obstoječe mape in ponovna namestitev sveže kopije iz uradnega oziroma preverjenega vira. Pri prilagojenih temah pred tem shranite lastne spremembe in jih preglejte.
7. Preverite wp-content, uploads, mu-plugins in posebne datoteke
Napadalci se pogosto skrivajo tam, kjer običajno čiščenje ne pogleda. Preglejte mapo wp-content/uploads za nepričakovane PHP datoteke, mapo mu-plugins, datoteke advanced-cache.php, db.php, object-cache.php, datoteki .htaccess in wp-config.php ter druge nenavadne datoteke v korenu spletne strani.
Ne brišite datoteke samo zato, ker je ne poznate. Nekatere od teh datotek so lahko povsem legitimne in pripadajo predpomnilniku, varnostnemu vtičniku ali drugi funkcionalnosti. Primerjajte jih z znanim čistim stanjem oziroma preverite, kdo jih uporablja.
8. Preverite cron opravila in podatkovno bazo
Vztrajna okužba se lahko obnavlja prek cron opravila ali kode, shranjene v podatkovni bazi. Preverite WordPress cron, sistemske cron naloge, sumljive vrednosti v tabeli z nastavitvami, neznane uporabnike ter nenavadne skripte, vstavljene v vsebino ali gradnike.
9. Zamenjajte vsa pomembna gesla in skrivnosti
Ko je stran izolirana in ste odstranili očitne mehanizme za ponovni dostop, zamenjajte:
– gesla vseh WordPress administratorjev,
– geslo nadzorne plošče gostovanja,
– FTP/SFTP in SSH gesla oziroma ključe,
– geslo podatkovne baze, če obstaja možnost, da je bilo razkrito,
– API ključe in druge skrivnosti, ki so bile shranjene na strani.
Če spremenite geslo podatkovne baze, morate novo geslo vpisati tudi v wp-config.php.
Zamenjajte tudi WordPress varnostne ključe in soli v wp-config.php. S tem razveljavite obstoječe prijavne seje, zato se morajo uporabniki ponovno prijaviti.
10. Preglejte naprave skrbnikov
Če je bilo geslo ukradeno z okuženega računalnika, samo čiščenje strežnika ne bo rešilo težave. Pred ponovno uporabo novih gesel preverite tudi računalnike in druge naprave, s katerih se prijavljate.
11. Posodobite vse in spremljajte stran še nekaj dni
Po čiščenju posodobite WordPress, teme in vtičnike, odstranite vse, česar ne uporabljate, ponovno preverite pravice datotek in vključite dodatno zaščito prijav.
Naslednje dni spremljajte spremembe datotek, porabo procesorja, pošiljanje e-pošte, nove uporabnike in dnevnike dostopov. Če se okužba vrne, prvotni vzrok najverjetneje ni bil odstranjen.
Kaj pa Google opozorila in SEO posledice?
Če je okužena stran gostila spam vsebino, preusmeritve ali zlonamerno kodo, jo lahko iskalniki začasno označijo kot nevarno. Po uspešnem čiščenju preverite Google Search Console in morebitna varnostna opozorila. Če je potrebno, po odstranitvi težave zahtevajte ponovni pregled.
Preverite tudi, ali so se v Googlov indeks uvrstile neželene spam podstrani. Čiščenje strežnika je šele prvi korak; včasih je treba sanirati še posledice v iskalnikih.
Kaj mora dober ponudnik gostovanja omogočati?
Popolne zaščite pred vdorom ne more zagotoviti nihče. Ponudnik gostovanja ne more preprečiti vsake ranljivosti v WordPress vtičniku ali slabega gesla uporabnika. Lahko pa bistveno zmanjša tveganje in predvsem posledice incidenta.
Pri izbiri gostovanja preverite, ali ponudnik omogoča:
– redne strežniške varnostne kopije z več obnovitvenimi točkami,
– možnost hitre obnove datotek in podatkovne baze,
– spletni aplikacijski požarni zid in strežniško zaščito,
– pregledovanje zlonamerne kode,
– zaščito pred brute-force napadi,
– izolacijo uporabniških računov,
– dostop do dnevnikov in odzivno tehnično podporo.
Še tako dober backup na istem strežniku ali znotraj istega uporabniškega računa ni idealna edina varnostna kopija. Pomembne spletne strani naj imajo vsaj eno neodvisno kopijo izven produkcijskega okolja.
Najboljša obramba je kombinacija več ukrepov
Pri WordPress varnosti ni ene nastavitve ali enega vtičnika, ki bi rešil vse. Najboljša zaščita je kombinacija rednega posodabljanja, kakovostnih vtičnikov, močnih gesel, 2FA, varnega gostovanja, strežniške zaščite, nadzora in dobrih varnostnih kopij.
Če pa do vdora že pride, je glavno pravilo: ne odstranite samo tistega, kar je videti okuženo. Ugotoviti je treba tudi, kako je napadalec prišel v sistem in ali je za seboj pustil še kakšen mehanizem za ponovni dostop.
Za dodatna splošna navodila lahko preberete tudi naš starejši članek Kako ravnati po vdoru v spletno stran, za tehnične smernice pa je koristen tudi uradni WordPress vodič Hardening WordPress.
