Napadnutie webovej stránky patrí medzi najvážnejšie situácie, s ktorými sa môže správca Joomla webu stretnúť. Útočník môže zmeniť súbory, vložiť škodlivý kód, vytvoriť si skrytý administrátorský účet, rozosielať spam alebo presmerovať návštevníkov na podvodné stránky.
Pri obnove preto nestačí iba nahrať zálohu alebo opraviť poškodený súbor index.php. Cieľom musí byť návrat stránky do dôveryhodného a overeného stavu, odstránenie všetkých zadných vrátok a uzatvorenie zraniteľnosti, cez ktorú sa útočník na web dostal.
Oficiálna dokumentácia Joomla odporúča postupovať pri napadnutí systematicky. Skratkovité riešenia môžu viesť k tomu, že web bude síce chvíľu fungovať, ale útočník sa naň čoskoro vráti.
Ako sa môže napadnutie Joomla stránky prejaviť
Napadnutie nemusí byť vždy viditeľné na prvý pohľad. Stránka môže fungovať normálne, zatiaľ čo na pozadí rozosiela nevyžiadané e-maily alebo sprístupňuje útočníkovi údaje.
Medzi časté príznaky patria:
- presmerovanie návštevníkov na inú stránku,
- neznáme reklamné alebo podvodné stránky vo výsledkoch vyhľadávania,
- zmenený súbor
index.phpalebo.htaccess, - nové PHP súbory a neznáme adresáre,
- neznáme používateľské alebo administrátorské účty,
- neobvyklé zaťaženie servera,
- veľké množstvo odoslaných e-mailov,
- upozornenie od hostingu na škodlivý obsah,
- zablokovanie stránky prehliadačom alebo bezpečnostnou službou,
- opakované zmeny súborov aj po ich ručnej oprave.
Samotná chyba stránky však ešte nemusí znamenať napadnutie. Problém môže vzniknúť aj po neúspešnej aktualizácii, zmene PHP alebo inštalácii nekompatibilného rozšírenia. Rozhodujúca je preto kontrola súborov, databázy a serverových záznamov.
Základné fázy obnovy
Obnovu napadnutého webu možno rozdeliť do štyroch hlavných fáz:
| Fáza | Hlavná úloha |
|---|---|
| Izolovanie | Zastaviť ďalšie škody a obmedziť prístup k napadnutému webu |
| Analýza | Zistiť rozsah napadnutia a pravdepodobnú príčinu |
| Vyčistenie | Odstrániť škodlivé súbory, účty, kód a zraniteľné rozšírenia |
| Obnova | Spustiť čistú, aktualizovanú a zabezpečenú verziu stránky |
Jednotlivé kroky sa môžu čiastočne prekrývať. Dôležité je, aby sa stránka nevrátila do prevádzky skôr, než bude odstránený nielen viditeľný škodlivý kód, ale aj pôvodná príčina napadnutia.
1. Odstavte napadnutú stránku
Prvým krokom je zabrániť ďalšiemu využívaniu stránky útočníkom. Web by mal byť dočasne odstavený alebo prístupný iba z vybraných IP adries.
Pokiaľ je Joomla vážne kompromitovaná, nestačí zapnúť režim Webová lokalita je offline v globálnej konfigurácii. Tento režim stále používa súbory napadnutej inštalácie. Bezpečnejšie je obmedziť prístup:
- v ovládacom paneli hostingu,
- pomocou pravidiel webového servera,
- presmerovaním domény na samostatnú statickú informačnú stránku,
- dočasnou zmenou koreňového adresára domény,
- zablokovaním prístupu okrem IP adresy správcu.
Ak hosting stránku už pozastavil, nežiadajte jej okamžité odblokovanie bez toho, aby ste mali pripravený plán obnovy.
2. Uchovajte dôkazy a serverové záznamy
Pred vymazaním poškodených súborov vytvorte pracovnú kópiu aktuálneho stavu webu. Táto kópia nie je určená na neskoršiu obnovu, ale na analýzu incidentu.
Uložte najmä:
- všetky súbory stránky,
- export databázy,
- prístupové a chybové logy webového servera,
- zoznam súborov s dátumami poslednej zmeny,
- zoznam používateľov a administrátorov,
- nastavenia plánovaných úloh a cron úloh,
- záznamy o odosielaní e-mailov,
- dostupné bezpečnostné hlásenia hostingu,
- presný čas, keď bol problém prvýkrát zistený.
Logy môžu ukázať, ktorý súbor útočník volal, akú požiadavku odoslal alebo z akej IP adresy útok prišiel. NIST upozorňuje, že záznamy sú dôležitou súčasťou detekcie, reakcie aj následnej obnovy po bezpečnostnom incidente.
Staršie záznamy sa môžu na hostingu automaticky prepisovať, preto ich treba stiahnuť čo najskôr.
3. Zmeňte všetky prístupové údaje
Pri napadnutí treba predpokladať, že útočník mohol získať heslá alebo prihlasovacie údaje uložené na serveri.
Z bezpečného počítača preto zmeňte heslá k:
- ovládaciemu panelu hostingu,
- SFTP, FTP a SSH účtom,
- databáze,
- Joomla účtom s oprávnením Super User,
- e-mailovým schránkam používaným na obnovu hesla,
- registrátorovi domény a DNS službe,
- CDN, firewallu alebo reverznému proxy serveru,
- SMTP službe,
- externým API a platobným službám.
Nestačí zmeniť iba heslo hlavného administrátora Joomla. Oficiálny bezpečnostný kontrolný zoznam Joomla odporúča po napadnutí zmeniť prihlasovacie údaje k hostingu, databáze, FTP aj administrácii systému.
Skontrolujte tiež, či útočník:
- nevytvoril ďalší účet Super User,
- nezmenil e-mail existujúceho správcu,
- nepridal nový autentifikačný plugin,
- nevytvoril nový FTP alebo databázový účet,
- nezmenil DNS záznamy domény.
4. Zistite rozsah a pravdepodobnú príčinu napadnutia
Pred obnovou je potrebné odpovedať aspoň na tri otázky:
- Kedy sa napadnutie pravdepodobne začalo?
- Ktoré súbory, účty a údaje boli zmenené?
- Akým spôsobom sa útočník na web dostal?
Najčastejšou príčinou býva zastaraná verzia Joomla, zraniteľné rozšírenie, odcudzené heslo, nesprávne nastavené oprávnenia alebo problém na úrovni hostingu.
Pri kontrole sa zamerajte najmä na:
- verziu Joomla a dátum jej poslednej aktualizácie,
- verzie všetkých komponentov, modulov, pluginov a šablón,
- nepoužívané alebo dávno neaktualizované rozšírenia,
- neznáme súbory v adresároch
images,media,tmp,cachealogs, - zmeny v súboroch
.htaccess,index.phpaconfiguration.php, - PHP súbory uložené medzi obrázkami alebo dokumentmi,
- neznáme naplánované úlohy,
- vložené skripty v článkoch, moduloch a šablónach,
- podozrivé presmerovania,
- zmenené súbory šablóny a jej overrides.
Aktuálne bezpečnostné oznámenia jadra Joomla zverejňuje Joomla Security Centre. Pri rozšíreniach treba skontrolovať informácie priamo u ich vývojárov, pretože Joomla Security Strike Team rieši predovšetkým jadro CMS, Joomla Framework a infraštruktúru projektu Joomla.
5. Neobnovujte zálohu bez overenia
Záloha je pri havárii mimoriadne dôležitá, ale pri napadnutí predstavuje aj riziko. Škodlivý súbor mohol byť na serveri niekoľko týždňov predtým, než si ho správca všimol. Rovnaký súbor sa preto mohol dostať aj do posledných záloh.
Oficiálna dokumentácia Joomla upozorňuje, že slepé obnovenie napadnutej stránky zo zálohy môže spolu s obsahom obnoviť aj samotný škodlivý kód.
Zálohu možno bezpečnejšie použiť vtedy, keď:
- je preukázateľne staršia než začiatok napadnutia,
- bola uložená mimo napadnutého servera,
- boli skontrolované jej súbory aj databáza,
- po obnovení sa okamžite aktualizuje Joomla a všetky rozšírenia,
- zároveň sa odstráni pôvodná príčina incidentu.
Ak neviete určiť, odkedy bol web kompromitovaný, je bezpečnejšie nepoužiť kompletnú zálohu bez ďalšej kontroly.
6. Vytvorte čistú inštaláciu
Najspoľahlivejším riešením býva vytvorenie stránky v čistom prostredí. Namiesto postupného mazania nájdených škodlivých súborov sa vytvorí nová inštalácia a prenesú sa do nej iba overené údaje.
Odporúčaný postup je:
- Vytvoriť nový prázdny adresár alebo dočasnú subdoménu.
- Stiahnuť aktuálny inštalačný balík Joomla z oficiálneho zdroja.
- Vytvoriť novú databázu a nového databázového používateľa.
- Nainštalovať čisté jadro Joomla.
- Nainštalovať iba potrebné rozšírenia z dôveryhodných zdrojov.
- Použiť nové balíky šablóny a rozšírení, nie súbory zo starého webu.
- Preniesť iba skontrolované obrázky, dokumenty a vlastné úpravy.
- Importovať dôveryhodné údaje z databázy.
- Skontrolovať používateľské účty, obsah, moduly a menu.
- Stránku otestovať pred zverejnením.
Jednoduché prepísanie súborov jadra novým balíkom nemusí stačiť. Prepíšu sa síce pôvodné súbory Joomla, ale na serveri môžu zostať dodatočné súbory vytvorené útočníkom.
Oficiálny kontrolný zoznam preto odporúča súbory a šablóny nahradiť čistými kópiami, skontrolovať médiá, analyzovať logy a preveriť oprávnenia súborov.
7. Skontrolujte databázu
Škodlivý kód nemusí byť uložený iba v súboroch. Útočník môže zmeniť aj obsah databázy.
Skontrolujte najmä:
- všetky účty s oprávnením Super User,
- používateľské skupiny a prístupové úrovne,
- neznáme komponenty, pluginy a moduly,
- vlastné HTML moduly,
- články obsahujúce neznáme skripty alebo odkazy,
- presmerovania v položkách menu,
- nastavenia šablóny,
- vložené kódy v globálnej konfigurácii alebo rozšíreniach,
- neobvyklé plánované úlohy,
- záznamy používateľských akcií.
Pri rozsiahlejšom napadnutí je vhodné databázu porovnať so starším exportom. Automatizovaný antivírusový skener nemusí databázový škodlivý kód rozpoznať, najmä ak je vložený do bežného článku alebo modulu.
8. Aktualizujte Joomla, rozšírenia aj server
Po prenesení obsahu musí stránka používať podporovanú a opravenú verziu:
- Joomla,
- všetkých komponentov, modulov a pluginov,
- šablóny a jej frameworku,
- PHP,
- databázového servera,
- ďalších knižníc používaných webom.
Nepoužívané rozšírenia úplne odinštalujte. Samotné vypnutie pluginu alebo modulu nemusí odstrániť jeho zraniteľné súbory zo servera.
Pred aktualizáciou treba overiť kompatibilitu rozšírení a vytvoriť novú zálohu čistého webu. Rovnaký postup odporúča aj odborná literatúra o správe Joomla dostupná v knižnici mojcms.
9. Nastavte správne oprávnenia
Súbory a adresáre nesmú byť zapisovateľné pre každého používateľa servera. Hodnota 777 by sa na bežnom Joomla hostingu nemala používať.
Typické nastavenie býva:
- súbory:
644, - adresáre:
755, - súbor
configuration.php: podľa možností hostingu prísnejšie nastavenie.
Konkrétne hodnoty však závisia od konfigurácie servera. Ak hosting používa odlišný model vlastníctva súborov alebo PHP procesov, riaďte sa jeho dokumentáciou. Joomla vo svojom bezpečnostnom kontrolnom zozname uvádza hodnoty 644 pre súbory a 755 pre priečinky ako bežné odporúčanie a výslovne varuje pred oprávneniami 777.
10. Pred spustením stránku otestujte
Obnovenú stránku najskôr otestujte na dočasnej adrese alebo v staging prostredí.
Overte:
- prihlasovanie do administrácie,
- používateľské účty a oprávnenia,
- formuláre a odosielanie e-mailov,
- odkazy a presmerovania,
- aktualizácie Joomla a rozšírení,
- funkčnosť šablóny,
- HTTPS certifikát,
- serverové logy,
- plánované úlohy,
- vytvorenie a obnovenie novej zálohy.
Po spustení sledujte niekoľko dní zmeny súborov, nové používateľské účty, neúspešné prihlásenia, odosielanie e-mailov a podozrivé požiadavky v logoch.
Ako web zabezpečiť po obnove
Po odstránení incidentu je vhodné zaviesť opatrenia, ktoré znížia riziko opakovania útoku.
Zapnite viacfaktorové overovanie
Viacfaktorové overovanie výrazne sťažuje prihlásenie pomocou ukradnutého hesla. Používajte ho minimálne pri všetkých účtoch s oprávnením Super User.
Obmedzte počet správcov
Každý používateľ má mať iba oprávnenia, ktoré potrebuje. Nepoužívané účty odstráňte alebo zablokujte.
Odstráňte nepotrebné rozšírenia
Čím viac rozšírení web používa, tým viac kódu treba aktualizovať a kontrolovať. Ponechajte iba doplnky, ktoré sú potrebné a pravidelne udržiavané.
Vytvárajte zálohy mimo servera
Záloha uložená iba na rovnakom hostingu môže byť pri útoku zmazaná alebo zmenená. Aspoň jedna kópia má byť uložená mimo produkčného servera.
Dôležité je uchovávať viac generácií záloh, aby bolo možné vrátiť sa do obdobia pred začiatkom napadnutia. Pred inštaláciou alebo aktualizáciou rozšírení Joomla odporúča zálohovať súbory aj databázu.
Sledujte zmeny a logy
Zapnite záznam používateľských akcií, sledujte neúspešné prihlásenia a podľa možností používajte nástroj na kontrolu zmien súborov.
Používajte SFTP alebo SSH
Ak hosting umožňuje bezpečný prenos súborov cez SFTP alebo SSH, uprednostnite ho pred nešifrovaným FTP.
Aktualizácie neodkladajte
Bezpečnostné aktualizácie jadra aj rozšírení inštalujte čo najskôr po ich otestovaní. Sledujte bezpečnostné oznámenia Joomla a informácie od vývojárov používaných rozšírení.
Najčastejšie chyby pri obnove napadnutej stránky
Oprava iba viditeľne poškodeného súboru
Zmenený index.php môže byť iba dôsledkom útoku. Skrytý škodlivý súbor môže zostať v inom adresári a poškodenie zopakovať.
Obnovenie poslednej zálohy bez kontroly
Posledná záloha už môže obsahovať zadné vrátka alebo škodlivého používateľa.
Zmena iba hesla Joomla administrátora
Útočník môže mať prístup cez hosting, FTP, databázu, ukradnutý e-mail alebo samostatný PHP súbor.
Prepísanie jadra bez vymazania starých súborov
Nový balík Joomla neodstráni súbory, ktoré do inštalácie pridal útočník.
Spustenie stránky bez odstránenia príčiny
Ak zostane nainštalované zraniteľné rozšírenie alebo nezmenené odcudzené heslo, web môže byť opätovne napadnutý v priebehu krátkeho času.
Vymazanie všetkých dôkazov pred analýzou
Bez logov a pôvodných súborov môže byť veľmi ťažké zistiť, ako sa útočník na web dostal.
Kontrolný zoznam pred opätovným spustením
Pred zverejnením stránky by mali byť splnené tieto podmienky:
- web bol obnovený z čistých a dôveryhodných súborov,
- databáza bola skontrolovaná,
- všetky prístupové heslá boli zmenené,
- neznáme používateľské účty boli odstránené,
- Joomla a všetky rozšírenia sú aktualizované,
- zraniteľné a nepoužívané rozšírenia boli odinštalované,
- boli skontrolované súbory
.htaccess,index.phpaconfiguration.php, - serverové logy boli analyzované,
- boli nastavené primerané oprávnenia súborov,
- bola zapnutá viacfaktorová autentifikácia,
- bola vytvorená nová čistá záloha,
- záloha bola uložená aj mimo produkčného servera,
- po spustení je zabezpečené monitorovanie webu.
Záver
Obnova Joomla stránky po napadnutí nie je iba technické sprevádzkovanie webu. Je to proces, pri ktorom treba zastaviť útok, uchovať dostupné dôkazy, zistiť rozsah incidentu, odstrániť škodlivý kód a vytvoriť dôveryhodné prostredie.
Najbezpečnejším riešením býva čistá inštalácia Joomla, opätovná inštalácia potrebných rozšírení z dôveryhodných zdrojov a prenos iba overeného obsahu. Záloha môže obnovu výrazne urýchliť, ale iba vtedy, keď pochádza z obdobia pred napadnutím a bola dôkladne skontrolovaná.
Dobre zvládnutá obnova by mala skončiť nielen funkčnou stránkou, ale aj lepším systémom aktualizácií, zálohovania, kontroly prístupov a monitorovania. Práve tieto opatrenia rozhodujú o tom, či sa podobný incident zopakuje.
