Modul 7 · 7.5
Napadený web: jak ho poznat, obnovit a předcházet napadení
Modul 7: Zabezpečení · Doba čtení: 10 minut
Cíl lekce: Po této lekci budete umět poznat napadení webu, obnovit jej ve správném pořadí a zabránit tomu, aby se to opakovalo.
Klíčové pojmy: signály napadení, zdokumentování, izolace, výměna všech hesel a salts, nalezení vstupního bodu, logy, čistá záloha, čistá reinstalace, kontrolní součty, neznámí administrátoři, PHP v uploads, mu-plugins, Search Console, ohlášení úniku dat
Co je to napadení webu
Web je napadený, pokud nad ním (nebo jeho částí) bez Vašeho souhlasu získal kontrolu někdo jiný: může měnit soubory nebo databázi, nebo spouštět vlastní kód. Útočník často zůstává uvnitř pomocí zadních vrátek (backdoor): skrytého souboru nebo kousku kódu, pomocí kterého se může později vrátit, i když původní bezpečnostní díru zalepíte.
Právě to je jádrem této lekce: pouhé odstranění viditelných škod nestačí. Dokud zadní vrátka existují, nebo dokud je otevřená díra, kterou se útočník dostal dovnitř, bude se to opakovat. Často během pár dní.
Jak napadení poznat
Signály (některé uvidíte sami, jiné musíte hledat):
- Google u Vašeho webu hlásí „Tento web může být napadený hackery“, nebo Search Console hlásí bezpečnostní problém.
- Ve výsledcích vyhledávání (
site:example.com) se objevují stránky, které neznáte, často v jiném jazyce nebo o lécích, hazardu či falešných obchodech. - Návštěvníci jsou přesměrováváni, často jen pokud přicházejí z Google nebo z telefonu. Vy to nevidíte, protože jste přihlášeni nebo přicházíte přes záložku. Otestujte to v anonymním okně přes výsledek vyhledávání.
- V sekci Uživatelé je administrátor, kterého neznáte.
- V
wp-content/uploadsse nacházejí soubory PHP, nebo jsou v kořenové složce či vwp-content/mu-pluginssoubory s podivnými názvy. - Váš hosting nebo skener malwaru hlásí infikované soubory; Vaše pošta je odmítána nebo Váš balíček rozesílá spam.
- Web je najednou pomalý nebo se zaplňuje úložný prostor.
Postup krok za krokem
1. Zachovejte klid a vše zdokumentujte
Hned nic nemažte. Zapište si, co vidíte a od kdy, pořiďte snímky obrazovky a vytvořte kopii aktuálního stavu (souborů a databáze, případně další zálohu přes svého poskytovatele hostingu). Tuto kopii budete potřebovat k nalezení vstupního bodu a jako důkaz. Neukládejte ji do webové složky.
2. Zastavte škody pro návštěvníky
Dočasně web vypněte nebo jej skryjte za stránku s oznámením o údržbě, zejména pokud jsou návštěvníci přesměrováváni na malware nebo phishing. V DirectAdminu můžete doménu pozastavit; jinde může pomoci heslo na celý web nebo dočasný soubor index.html s oznámením.
3. Vyměňte všechna hesla a klíče
Vycházejte z předpokladu, že útočník zná každé heslo, které bylo možné na webu nebo přes web najít. Vyměňte je, nejlépe z jiného (čistého) počítače:
- heslo ke svému hostingovému panelu a ke všem účtům FTP a SFTP (odstraňte účty, které nepoužíváte);
- heslo uživatele databáze a upravte je v souboru wp-config.php;
- hesla všech administrátorů WordPressu a odstraňte účty, které neznáte;
- klíče a salts v souboru wp-config.php (lekce 1.3). Tím zneplatníte všechny přihlašovací cookies, včetně těch útočníkových;
- aplikační hesla (lekce 3.3) a API klíče propojení;
- hesla k e-mailu, pokud přes nějakou schránku probíhalo rozesílání spamu.
Poté všude zapněte dvoufázové ověření (2FA) (lekce 7.3).
4. Najděte vstupní bod
Bez znalosti vstupního bodu si nemůžete být jisti, že je skutečně uzavřený. Nejčastější příčiny (lekce 7.1) a kde je hledat:
- Zastaralý plugin nebo šablona: které součásti nebyly aktuální? Vyhledejte jejich názvy v databázi zranitelností (lekce 5.3).
- Uniklé heslo: podívejte se do historie přihlašování hostingového panelu a FTP.
- Logy webového serveru: kolem okamžiku, kdy se objevily první podezřelé soubory, hledejte POST požadavky na neznámé soubory nebo soubory pluginů, často ze stejné IP adresy.
- Soubory podle data: seřaďte ve Správci souborů nebo přes SFTP podle data úpravy. Pozornost si zaslouží soubory, které byly změněny ve stejnou dobu, zejména mimo aktualizaci.
5. Vyčištění
Dvě cesty, často v kombinaci:
A. Obnovení čisté zálohy z doby před napadením (lekce 8.2). Zvolte zálohu určitě z doby před prvními signály, protože útočníci někdy čekají týdny. Obnovte úplně celý web, aby zmizely i přidané soubory. Poté okamžitě vše aktualizujte (jinak tam díra bude znovu). Nevýhoda: vše po záloze (příspěvky, objednávky) zmizí.
B. Čisté sestavení od začátku se stávajícím obsahem:
- Nahraďte samotný WordPress čerstvou kopií z wordpress.org (wp-admin, wp-includes a jednotlivé soubory; ne wp-content a wp-config.php). Pomocí WP-CLI se nejprve můžete podívat, co se změnilo:
wp core verify-checksums
wp plugin verify-checksums --allTyto příkazy porovnají Vaše soubory s oficiálními verzemi a nahlásí každý změněný nebo přidaný soubor (druhý příkaz jen pro pluginy ze složky pluginů na wordpress.org).
- Odstraňte všechny pluginy a šablony a znovu je nainstalujte ze zdroje, v nejnovější verzi. Co nepotřebujete, se už nevrátí.
- Zkontrolujte
wp-content/uploads, zda tam nejsou soubory PHP a jiné soubory, které nejsou médii, awp-content/mu-plugins. - Zkontrolujte
.htaccess, zda neobsahuje podivná přesměrovací pravidla, a wp-config.php, zda neobsahuje řádky, které neznáte. - Zkontrolujte databázi: neznámé administrátory, volby
siteurl,homeaactive_pluginsvwp_options, a vyhledejte v příspěvcích vložené skripty (<scripts podivnými adresami). - Podívejte se na naplánované úlohy: cronjoby ve svém hostingovém panelu a WP-Cron (pomocí pluginu nebo příkazu
wp cron event list).
Skener malwaru (od Vašeho poskytovatele hostingu nebo plugin) pomůže při hledání, ale slepě mu nedůvěřujte: co nenajde, tam stále může být.
6. Uzavření a kontrola
- Aktualizujte vše, zabezpečte web (lekce 7.4) a znovu jej zapněte.
- Je Váš web u Google označen jako nebezpečný? Požádejte v nástroji Search Console v sekci Bezpečnostní problémy o nové posouzení, ale až poté, co je vše skutečně čisté.
- Následující týdny web sledujte: nové soubory, noví administrátoři, hlášení skeneru. Pokud se problém vrátí, nebyl ještě nalezen vstupní bod nebo zadní vrátka.
Osobní údaje: ohlášení úniku dat
Pokud se útočníci dostali k osobním údajům (údaje zákazníků e-shopu, odeslané formuláře, seznamy členů, uživatelé Vašeho webu), jedná se o únik dat ve smyslu GDPR. V takovém případě musíte do 72 hodin od zjištění ohlásit únik dozorovému úřadu (v Česku: Úřad pro ochranu osobních údajů, ÚOOÚ), pokud není nepravděpodobné, že by to pro dotčené osoby představovalo riziko (článek 33 GDPR). Pokud je riziko vysoké, musíte o tom informovat i samotné dotčené osoby (článek 34). V každém případě si zaznamenejte, co se stalo a co jste udělali, i když nic nehlásíte. Pokud si nejste jisti, podívejte se na web dozorového úřadu ve Vaší zemi (lekce 9.3). Pokud web provozujete z jiné země, platí obdobná pravidla a lhůty podle GDPR a je potřeba obrátit se na místního dohledového úřadu pro ochranu osobních údajů.
Požádání o pomoc
Vyčištění napadeného webu vyžaduje čas a zkušenosti. Pokud si nejste jisti, že jste vše vyřešili, požádejte o pomoc: svého tvůrce webu, specializovanou firmu nebo svého poskytovatele hostingu (někteří poskytovatelé, včetně WebOké, to nabízejí, zpravidla za poplatek). Dejte jim kopii z kroku 1, informace o tom, co jste viděli a kdy, a co jste již udělali.
Shrnutí
- Napadení webu často zanechává zadní vrátka; pouhé odstranění viditelných škod nestačí.
- Pořadí kroků: zdokumentovat, ochránit návštěvníky, vyměnit všechna hesla a salts, najít vstupní bod, vyčistit, uzavřít a zkontrolovat.
- Vyčištění lze provést čistou zálohou z doby dostatečně před napadením, nebo čerstvou instalací WordPressu, pluginů a šablon a kontrolou uploads, mu-plugins, .htaccess a databáze.
wp core verify-checksumsukáže, které soubory WordPressu byly změněny.- Pokud šlo o osobní údaje, ohlaste únik dat do 72 hodin dozorovému úřadu (v Česku ÚOOÚ), pokud není nepravděpodobné, že by to představovalo riziko.
Kvíz
Úkol
Úkol D7.5: Váš krizový plán pro případ napadení. Vyplňte krizový plán pro svůj vlastní web, abyste jej nemuseli vymýšlet až ve chvíli, kdy bude potřeba: kde jsou uloženy Vaše zálohy a jak daleko do minulosti sahají, kdo má jaká hesla a jak je všechna vyměníte (seznam), kde najdete logy svého hostingu, komu zavoláte o pomoc, a jaké osobní údaje se na Vašem webu nacházejí (pro posouzení, zda musíte hlásit únik dat). Poté si procvičte: jakých pět kroků uděláte během první hodiny po obdržení zprávy „Tento web může být napadený hackery“, v jakém pořadí a proč zrovna v tomto pořadí?
Úkol D7.5: Váš krizový plán pro případ napadení
Tento úkol provádíte sami; nikdo ho nekontroluje. Odškrtněte, co jste udělali, a označte úkol jako splněný.
Nejprve vše zdokumentovat (screenshoty, uchovat logy), než cokoliv smažete; ochránit návštěvníky (web offline nebo stránka s údržbou); vyměnit všechna hesla a salts; najít způsob vniknutí; teprve poté čistě obnovit. Pouhé obnovení bez uzavření vstupu nechává dveře otevřené.
Vaše zaškrtnutí a poznámky zůstávají pouze v tomto prohlížeči; nikam je neposíláme. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol splnili.
Doporučené zdroje
Tyto články popisují jednotlivé kroky v panelech WebOké; v jiných panelech fungují obdobně.
- Příručka k DirectAdmin 18.2: Moje webová stránka byla napadena: postup krok za krokem
- Pomoc! Moje stránka byla napadena hackery. Jak to mohu vyřešit a jak tomu mohu předejít?
- Příručka k DirectAdmin 15.11: Imunify360: kontrola webu na malware
- Příručka k DirectAdmin 17.2: Souhrn webu a logy: log chyb a log přístupů
- Příručka k DirectAdmin 3.4: Historie přihlášení: kdo se kdy přihlásil?
- Úniky dat (nizozemský úřad pro ochranu osobních údajů, Autoriteit Persoonsgegevens): https://www.autoriteitpersoonsgegevens.nl/themas/beveiliging/datalekken
- FAQ: můj web byl napaden (wordpress.org, anglicky): https://wordpress.org/documentation/article/faq-my-site-was-hacked/
