Stručne: Automatizované útoky na webové servery prebiehajú vo vlnách: programy prehľadávajú internet kvôli dostupným serverom, zaraďujú ich podľa vonkajších znakov a hromadne skúšajú známe zraniteľnosti ako PHP2Shell. Veľkosť podniku pritom nehrá rolu. Ochranu poskytuje zaplátané PHP, malá útočná plocha a monitorovanie, ktoré rýchlo zaznamená úspešné zásahy.
Východisko: „Koho by mal náš web zaujímať?“
Túto otázku po PHP2Shell počúvame často, najmä od menších podnikov. Úprimná odpoveď: pravdepodobne nikoho osobne. Pri zraniteľnostiach tohto druhu to však ani nie je potrebné. Útoky vykonávajú programy, ktoré nehľadajú mená, ale príležitosti.
BSI (nemecký Spolkový úrad pre informačnú bezpečnosť) počítalo pri PHP2Shell s rýchlym, plošným zneužívaním. Cloudflare informoval o pokusoch o útok a o tom, že útočníci menili svoje vzory, aby obišli ochranné pravidlá. Oboje zodpovedá tomu, čo sa pri kritických zraniteľnostiach v rozšírenom softvéri pravidelne deje.
Ako prebiehajú automatizované útoky na webové servery
Automatizované kampane sa riadia zvyčajne podobným vzorcom. Nasledujúci prehľad popisuje fázy všeobecne, bez detailov útoku:
| Fáza | Čo sa deje | Čo pomáha |
|---|---|---|
| Hľadanie | Programy prehľadávajú veľké rozsahy adries alebo verejné zoznamy, ako sú protokoly certifikátov, kvôli dostupným webovým serverom | málo verejne dostupných systémov, inventár všetkých adries |
| Zaradenie | Odpovede sa vyhodnocujú: webový server, verzia PHP, CMS, typické cesty | skryť údaje o verzii, odstrániť nepotrebné súbory |
| Vyskúšanie | známe zraniteľnosti sa testujú hromadne, často bez predchádzajúceho zaradenia | aktuálne PHP, reštart, WAF ako doplnková vrstva |
| Zakotvenie | pri úspechu sa uloží zadné vrátka, napríklad webshell alebo cronjob | obmedzené práva zápisu, žiadne spúšťanie PHP v priečinkoch s uploadmi |
| Zužitkovanie | server sa využíva, napríklad na spam, kryptominovanie, presmerovania alebo krádež údajov | monitorovanie procesov, súborov a odchádzajúcich spojení |
Dôležitý je tretí riadok. Mnohé kampane sa ani neunúvajú servery vopred presne zaradiť. Jednoducho skúšajú všetko, čo je dostupné. Preto samotná nenápadnosť nechráni.
Prečo útoky prichádzajú vo vlnách
Automatizované kampane zriedka prebehnú raz a už nikdy. Typický je vzorec vo vlnách. Prvá vlna nasleduje krátko po zverejnení zraniteľnosti, často ešte s nedopracovanými nástrojmi. Ďalšie vlny prichádzajú, keď útočníci svoje nástroje zlepšia alebo prispôsobia ochranným pravidlám. Cloudflare pozoroval pri PHP2Shell presne to: zmenené vzory útoku, aby pravidlá obišli.
Pre vás to znamená: server, ktorý prvú vlnu prežil bez ujmy, nie je trvalo bezpečný, kým je nezaplátaný. A novo zriadený server je cieľom od okamihu, keď je dostupný. Kto napríklad nechá vystaviť nový certifikát TLS, urobí názov viditeľným vo verejných protokoloch certifikátov, ktoré vyhodnocujú aj skenery. Nový systém by sa preto mal pripojiť k sieti až vtedy, keď je už aktualizovaný.
Prečo sú malé firmy dotknuté rovnako
Pre automatizované útoky nezáleží na hodnote jednotlivého cieľa, ale na množstve. Server malého podniku ponúka výpočtový výkon, doménu s dobrou povesťou, odosielanie pošty a niekedy údaje zákazníkov. Pre útočníkov to stačí.
K tomu pristupuje: menšie podniky často nemajú vlastné IT, ktoré by aktualizácie nasadilo okamžite. Ich servery zostávajú zraniteľné dlhšie a preto častejšie končia vo výsledných zoznamoch skenerov. Kto záplatuje ako prvý, z týchto zoznamov vypadne.
Ďalším bodom je dodávateľský reťazec. Mnohé malé weby ležia na serveroch agentúr alebo malých poskytovateľov hostingu, na ktorých vedľa seba beží desiatky zákazníckych projektov. Pre útočníkov je taký server mimoriadne lákavý, pretože jediný zásah zasiahne naraz mnoho webov. Vaše riziko potom nezávisí len od vašej vlastnej starostlivosti, ale aj od starostlivosti vášho dodávateľa.
Skeny vo vašich logoch sú normálne a nie sú dôkazom vlámania. Úspešný útok sa prejaví inými stopami: nové súbory, cudzie procesy, neznáme účty, nezvyčajné odchádzajúce spojenia.
Čo môžete skontrolovať sami
Pohľad do logov ukáže, ako silno sa váš server skenuje. Nasledujúce príkazy len čítajú a nič nemenia:
# Desať adries s najviac požiadavkami v aktuálnom prístupovom logu
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# Požiadavky zodpovedané ako „nenájdené“, podľa početnosti
awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# Prezrádza server svoju verziu PHP v hlavičke?
curl -sI https://www.example.de/ | grep -i "x-powered-by"
Mnohé požiadavky na neexistujúce cesty sú typický šum skenov. Pozornejší by ste mali byť, ak na takéto požiadavky náhle nasledujú úspešné odpovede, ak sa v priečinkoch s uploadmi volajú súbory, ktoré nepoznáte, alebo ak používateľ webového servera spúšťa procesy, ktoré inak nikdy nespúšťa. Potvrdené rozpoznávacie znaky špeciálne pre PHP2Shell zatiaľ neexistujú, zaradenie sa preto opiera o takéto nápadnosti v správaní. Ako logy vyhodnotiť dôkladnejšie, popisuje sprievodca Vyhodnotenie logov webového servera. Ak tretí dotaz zobrazí verziu PHP, oplatí sa nastavenie expose_php = Off; súvislosti nájdete pod Skrytie údajov o verzii.
Ochranné vrstvy v správnom poradí
- Aktualizovať PHP a reštartovať: Bez tohto kroku zostávajú všetky ostatné opatrenia záplatovaním.
- Zmenšiť útočnú plochu: nepoužívané weby, testovacie systémy a staré mikrosite vypnúť alebo dať za prihlásenie.
- Pravidlá na okraji: Web Application Firewall s udržiavanou sadou pravidiel, napríklad OWASP Core Rule Set s ModSecurity, zachytí časť pokusov.
- Spomaliť opakované pokusy: Nástroje ako Fail2ban blokujú adresy, ktoré vyvolávajú nápadne veľa chýb. Proti distribuovaným skenom to pomáha len obmedzene.
- Monitorovať: Mať na očiach procesy používateľa webového servera, nové súbory PHP a odchádzajúce spojenia, aby úspešný zásah nezostal týždne nepovšimnutý.
Ako konkrétne pomáha PHP SOS?
- Zmapovať útočnú plochu: Zistíme, ktoré z vašich systémov sú dostupné zvonka a čo o sebe prezrádzajú.
- Záplatovať a zabezpečiť: Aktualizujeme PHP, reštartujeme a obmedzujeme údaje o verzii, práva zápisu a nepotrebné služby.
- Pravidlá a blokovanie: Nastavíme pravidlá WAF a mechanizmy blokovania vhodné pre vašu aplikáciu.
- Priebežné monitorovanie: Hlásime nápadné procesy, súbory a spojenia, než sa zásah stane incidentom.
Ako to vyzerá v trvalej prevádzke, popisuje bezpečnostný monitoring webových serverov.
Záver
Automatizované útoky sa nepýtajú, komu server patrí. Pýtajú sa len, či je zraniteľný. Najlepšia odpoveď je nenápadná: rýchlo záplatovať, ponúkať málo, pozorne sledovať. Kto to robí, bude sa naďalej skenovať, ale už ho nenájdu.
Časté otázky
Sú malé podniky cieľom automatizovaných útokov?
Áno. Automatizované skeny kontrolujú dostupné servery bez ohľadu na prevádzkovateľa. Či za ním stojí koncern, alebo remeselnícka firma, softvér nezaujíma. Rozhodujúce je, či server pôsobí zraniteľne.
Podľa čoho spoznám skeny vo svojich logoch?
Typické sú mnohé požiadavky na cesty, ktoré na vašom webe vôbec neexistujú, často z meniacich sa adries a s nápadnými identifikátormi. Takéto záznamy sú normálne a ešte nie sú dôkazom úspešného útoku, ukazujú však, že váš server sa kontroluje.
Pomôže skryť verziu PHP?
Skenerom to trochu sťaží cielené zaradenie vášho servera a je to zmysluplné základné nastavenie. Pred útokmi, ktoré jednoducho vyskúšajú každý server, však nechráni. Aktualizácia zostáva povinnosťou.
Môžem skenom úplne zabrániť?
Nie. Každý verejne dostupný server sa pravidelne skenuje. Cieľom nie je skenom zabrániť, ale zabezpečiť, aby nič nenašli: aktuálny softvér, malá útočná plocha a monitorovanie, ktoré hlási nápadnosti.