Redovito održavanje CMS-a važno je za njegov stabilan rad, a osobito važno u segmentu sigurnosti. Vaši podatci i sadržaj mogu biti kompromitirani ako se ne vodi računa o redovitom održavanju sigurnosti web aplikacije, posebno kada se radi o open source rješenjima. Zbog velike popularnosti, WordPress je danas daleko najpopularnija meta hakera u svakodnevnim pokušajima zloporabe sigurnosnih propusta otkrivenih u raznim komponentama CMS-a, koji se zbog velikog tržišta otkrivaju na dnevnoj bazi. Kada se problem već dogodi (zbog neredovitog održavanja, nepravilne zaštite ili masovnog sigurnosnog propusta) potrebno je pažljivo slijediti upute u dokumentaciji kako se problem ne bi ponovio. U nastavku je osvrt na takve mjere zaštite i upute koje je bitno temeljito slijediti, upravo radi sprečavanja ponovnog neovlaštenog pristupa Vašem sadržaju.
Nakon što ste samostalno primijetili ili dobili obavijest da je Vaša instalacija WordPressa kompromitirana, prvi korak je – svakako – spremanje kopije trenutnog sadržaja i preuzimanje sadržaja iz backupa koji je napravljen u vrijeme za koje smatrate da je WordPress bio u kontroliranom stanju (da je sve bilo u redu). Preporuka je da sadržaj baze podataka i datoteke vraćate iz backupa starijeg od 14 dana jer se do sad pokazalo kako čišćenje i provjera starije kopije sadržaja traje kraće. U slučaju da često radite izmjene i postavljate novi sadržaj na web stranice (na dnevnoj bazi/više puta tjedno) najbolje je da koristite sadržaj iz kopije napravljene prije 48-72h.
Kako bi suzbili mogućnost proširenja infekcije, nastanka novih kompromitiranih lokacija ili uzrokovanja bilo kakvih problema pružatelju hosting usluga, odmah nakon obavljenog prvog koraka uklonite sav sadržaj s web prostora. Spojite se direktno na server FTP klijentom (Filezilla, WinSCP, FireFTP) ili pomoću "File Manager" alata kroz upravljačko sučelje u cPanelu i uklonite kompletan sadržaj web prostora. Ako ste WordPress instalirali pomoću Softaculous ili nekog drugog rješenja koje nudi mogućnost automatske instalacije popularnih skripti/web aplikacija, brisanje možete napraviti kroz navedeni alat, no važno je napomenuti da ćete tako ukloniti i sadržaj baze podataka te ga nećete biti u mogućnosti koristiti u sljedećem koraku. Ako je baza podataka obrisana, potrebno napraviti novog korisnika s pripadajućim privilegijama i novu bazu podataka. Nakon toga, radi se uvoz sadržaja stare baze podataka koju ćete pregledati u idućem koraku.
Ovaj korak može biti zahtjevan osobito ako se radi o ranije kompromitiranoj bazi podataka gdje je često teško pronaći neželjeni sadržaj. Tablice koje obavezno morate provjeriti su:
prefiks_users | prefiks_posts | prefiks_options
Najčešći tip napada koji narušava integritet baze podataka neke instalacije WordPressa je SQL injection - bilo kroz nedostatak i sigurnosnu rupu neke datoteke kao sastavni dio jezgre CMS-a ili neke dodatne komponente poput dodatka ili predloška. Najbolje je da navedene tablice provjerite silazno prema „id-u“ zapisa (za users i posts) u njima (zadnje dodani = prvi) za bilo kakve sumnjive unose. Kod options tablice pretraga za vrijednostima „generic“, „support“, hash“, „rss“, „hack“, „base64“, „46esab“ za sva polja najčešće može pomoći. U nastavku je primjer upita za pretragu tablice options i posts s nekim generičkim (čestim) uvjetima:
SELECT * FROM `wp_options` WHERE `option_value` REGEXP 'generic|support|hash|rss|hack|base64|46esab' or `option_name` REGEXP 'generic|support|hash|rss|hack|base64|46esab' or `autoload` REGEXP 'generic|support|hash|rss|hack|base64|46esab' or `option_id` REGEXP 'generic|support|hash|rss|hack|base64|46esab'
SELECT * FROM `wp_posts` WHERE 'post_content' REGEXP 'pharmacy|cialis|viagra|xanax|eval|base64|46esab' or `post_title` REGEXP 'pharmacy|cialis|viagra|xanax|eval|base64|46esab'
Preporuka je da se sadržaj predloška ponovno preuzme od izdavača ako nisu napravljene bitne izmjene u postavkama predloška. Druga je opcija da se direktorij predloška preuzme iz starijeg backupa (14 – 30 dana) zbog manje intervencija u čišćenju i pregledavanju integriteta osnovnih datoteka u sklopu predloška. Za navedeno je najbolje pretražiti kompletan sadržaj uz usporedbu s originalom. Prilikom takvih radnji često su jako korisni alati poput:
* Windows Grep (pretraga za čestim ključnim riječima odnosno zlonamjernim kodom ubačenim u neku od datoteka)
* WinMerge (usporedba s prvobitnim/početnim stanjem komponenti predloška).
Nakon provjere sadržaja predloška, on se postavlja u novu instalaciju dok je kod direktorija /wp-content/uploads potrebno u potpunosti pretražiti sve direktorije za datoteke koje nisu slike, pdf ili drugi multimedijski sadržaj. Tu se podrazumijeva brisanje svih .php, .htaccess, php.ini ili drugih datoteka koje tu ne bi trebale biti.
Nakon što je detaljno obrađena faza provjere sadržaja s kojim raspolažete za vraćanje, obavlja se proces instalacije WordPressa. Kako ne bi izgubili određene funkcionalnosti, inačica instalacije mora biti jednaka onoj koju ste prethodno koristili. Preuzmite potrebnu inačicu sa sljedeće poveznice:
https://wordpress.org/download/release-archive/
Pratite upute do koraka unosa postavki za bazu podataka. Kod unosa postavki podatci moraju biti isti kao podatci za bazu podataka (ranije provjerenu) gdje se trenutno nalazi sadržaj za pripadajuću web stranicu. Kroz phpMyAdmin sučelje dostupna je mogućnost promjene prefiksa tablica. Obavezno se kod lozinke i prefiksa tablica koriste nasumično generirani znakovi odnosno podatci koji nisu ranije korišteni. WordPress prilikom instalacije generira nove sigurnosne ključeve. U slučaju da ih trebate ručno generirati, to možete napraviti ovdje:
https://api.wordpress.org/secret-key/1.1/salt/
Napomena: Nije poželjno da preskačete ovaj korak i da koristite datoteke iz vršnog direktorija i direktorija /wp-includes/* i /wp-admin/* iz stare instalacije WordPressa. Najveću mogućnost da ste kvalitetno i uspješno obavili posao kod čišćenja i vraćanja postići ćete ako ste pažljivo pratili sve prethodno preporučene upute. Vraćanje starog sadržaja bazirajte na vraćanju osnovnog (neophodnog) multimedijalnog sadržaja i predloška (za predložak se preporučuje nova instalacija direktno od izdavača). Nikako ne vraćajte dodatke (/wp-content/plugins/) već ih iznova instalirajte i postavite, osim ako se radi o pluginovima gdje se gubi veća količina sadržaja. Za njih svakako prije vraćanja ponovite 4. korak.
Ako ste pravilno odradili sve prethodne korake, kroz administrativno sučelje WordPressa možete iznova instalirati sve potrebne dodatke. No, prije toga, važno je da samu jezgru CMS-a i predloška ažurirate na posljednju dostupnu inačicu. Ako predložak nije ažuriran više od 12 mjeseci i nema dostupnu podršku, trebali bi potražiti alternative. Isto vrijedi i za dodatke. Koristite samo one koji su Vam neophodni i koji imaju pozitivan feedback WordPress zajednice. Nakon instalacije WordPressa možete ukloniti dodatke, datoteke ili predloške koji su automatski postavljeni s WordPressom, a nećete ih koristiti. To su najčešće:
/wp-content/plugins/hello.php
/wp-content/plugins/askimet/
/wp-content/themes/twentyfifteen/
/wp-content/themes/twentyfourteen/
/wp-content/themes/twentythirteen/
/license.txt
/readme.html
/wp-config-sample.php
Treba napomenuti da se prilikom svake veće obnove inačice WordPressa većina ovih komponenti ponovno vraća.
Obzirom na nastalu situaciju, očigledno je da mjere zaštite nisu bile odgovarajuće. Kako bi popravili opću razinu sigurnosti WordPress CMS-a korisno je pratiti trendove i konvencionalne metode zaštite čime smanjujete mogućnost bilo kakvog incidenta ispod 0.1%. Potrebno je redovito (barem 2 puta mjesečno) provjeravati postoje li nove inačice pojedine komponente CMS-a. Posao Vam može pojednostaviti dodatak poput „Wordfence Security“ (preporuka) koji će Vam redovito (na dnevnoj bazi) slati obavijesti o novim inačicama CMS-a, dodataka, predloška ili o bilo kakvim sumnjivim aktivnostima. Detaljnije informacije, zašto i kako zaštititi WordPress dostupne su ovdje:
http://codex.wordpress.org/Hardening_WordPress
Svakako pročitajte naše opće upute za maksimalnu zaštitu WordPress CMS-a koji Vam pritom mogu pomoći: https://www.posluh.hr/pdf-upute/sigurnost/Savjeti-za-maksimalnu-zastitu-WordPress-Open-Source-CMS-a.pdf
Za besplatni savjet ili ponudu za sve navedene i dodatne mjere zaštite WordPressa, slobodno nas kontaktirajte.