Prázdninový bezpečnostní seriál: 6. nejčastějších způsobů jak váš web někdo hackne

V posledních letech nasazují hostingové společnosti různé ochrany, které mají zastavit útoky na weby jejich zákazníků. Často se jedná o sofistikovaná řešení, kterými se rádi chlubí. Reklamu je však třeba brát s dostatečnou rezervou. Za určitých okolností jejich ochrana může pomoct, ale v konečném důsledku nakonec stejně záleží jak přistupujete k bezpečnosti sami. Rozhodl jsem se proto napsat sérii článků, postavených na doporučení a návodech z Google Web Fundamentals, které prozatím nemají český překlad a vlastních zkušenostech. Ano také jsem měl pár napadených webů a není to nic příjemného.

Abyste se mohli napadení webu předcházet, je třeba vědět jak hackeři, tedy spíše jejich roboti, vlastně útočí. V tomto článku bude uvedených 6 nejčastějších způsobů. Pokud by byl zájem tak v dalších toto téma můžeme rozšířit i o “exotičtější” metody.

Slabá hesla

Jsem v kontaktu s lidmi z různých hostingových společností a nezávisle na sobě mi potvrdili, že nejčastějším problémem jsou prostě hesla. Zákazníci často podceňují aktuální situaci. Na VPS si nainstalují operační systém s defaultním heslem a na pár hodin se třeba věnují nějaké činnosti, než začnou s prací. Víte jak dlouho vydrží úplně nové VPS s defaultními hesly? Na BarCamp České Budějovice jsem byl svědkem, že 3 hodiny. A to byla úplně nové VPS s novou IPv4 adresou.

Dalším problémem jsou slabá hesla. Většina redakčních systému v základní instalaci nemá ochranu proti brute force útoku – hádání hesel. Takže případní útočníci mohou použít slovníkový útok anebo vyzkoušet pár desítek tisíc kombinací často používaných hesel aniž byste o tom věděli.

Najít hranici mezi slabým a silným heslem je dnes poměrně těžké. Pokud nepoužíváte generátory opravdu dlouhých hesel, ale vymýšlíte si hesla svá, tak často opakujete nějaký vzorec. Stačí tento vzorec najít a množství kombinací najednou nemusí být až zas tak velké.

Dále je třeba si uvědomit, že oblíbená pravidla pro tvorbu hesel a celé “politiky hesel” vznikla v 80. letech minulého století a vychází ze standardů amerického Národního institutu standardů a technologie. V nich je například i pravidlo měnit hesla každých 90 dní. Ve výsledku však tato pravidla vedou k laxnímu přístupu uživatelů, kteří se je snaží obcházet, což vede k heslům jako pasword123. Samozřejmě už vzniká nový koncept a ten prakticky mění vše – hlavně přesouvá kompletně vše na bedra provozovatelů systémů, protože ti musí nejlépe znát své uživatele a předpokládá se, že zkušenosti s hesly mají větší než běžný uživatel.

Takže co s tím? Fajn je vycházet právě z výše zmíněného konceptu pro politiku hesel. Například když se váš web jmenuje cn130, tak tento řetězec v heslech zakázat. Dále doporučení mluví o neházení uživatelům klacky pod nohy. Pokud chtějí v heslu hvězdičku anebo emoji, tak ať si jej tam dají. Na mobilech vložit emoji není žádný problém a popravdě zkuste brute force prolomit heslo složené jen z pěti emoji. To je teď nějakých 2823 na 5  možných kombinací (cca 179 quadrillion (1015).

Nejen Google také doporučuje dvoufaktorové ověření (2FA). Jedná se o další vrstvu ochrany. Využít můžete nějakou externí službu, třeba Google 2-Step Verification, FreeOTP anebo zaslání jednorázového hesla emailem. Více info jak na 2FA v Joomla!WordPress a Drupal.

No a to nejdůležitější omezte počet pokusů o přihlášení časovým intervalem. Chce to ale omezit opravdu pořádně. Často se používá omezený počet pokusů pro jednu IP adresu. Pokud však někdo využije botnet anebo má dostatek proxy serverů, tak může hádat se spousty IP adres. Navíc u IPv6 byste museli evidovat celé rozsahy. Můžete také jít cestou softcore řešení. Po 3 neúspěšných pokusech nahodíte captcha a po dalších 7 zablokování účtu.

Uživatele je třeba neustále vzdělávat. Je to možná klišé, ale i tak k tomu můžeme všichni přispět. Například existuje spousta volného prostoru kam můžeme psát tipy na bezpečnost – v aplikacích když se něco nahrává, na diskuzních fórech jako tipy v záhlaví, zavedením nové volitelné technologie, ke které napíšeme rozsáhlý návod, článek upravený pro naší čtenářskou skupinu i když to není cílová skupina atd. Nezapomeňte že to děláte i pro sebe. Pokud někdo získá heslo vašeho uživatele a nakombinuje to s bezpečnostní zranitelností ve vašem systémů, tak může získat administrátorská oprávnění.

Chybějící bezpečnostní aktualizace

Stačí jedna bezpečnostní díra a přijdete o data zákazníků, což je v kontextu s novým nařízením GDPR spousta starostí a hlavně ostudy, protože každému kdo přišel o data musíte dát vědět.

Proto je třeba záplatovat a aktualizovat jakmile to bude možné. Bezpečnostní aktualizace mají absolutní přednost. Jakmile vyjdou musíte je “tam narvat” co nejdříve. Často v době kdy aktualizujete, už nějaký robot prochází internet a hledá ty, kde majitel bezpečnost podcenil. Rychle zneužije bezpečnostní díru a vytvoří backdoor. Tento backdoor tam po aktualizaci samozřejmě zůstane.

Aktualizovat je nutné všechno – samotný redakční systém, šablony, pluginy a jakýkoliv kód který tam přidáte. V moderních CMS s dostatečně velkou komunitou, se většinou nebezpečné bezpečnostní díry najdou rychle ještě před vydáním. K zneužití dochází spíše v kombinaci s jinou bezpečnostní chybou, která tam je například kvůli pluginu, který více jak rok nebyl aktualizován. Ostatně začátkem roku 2017 proběhl průzkum, který zjistil, že 25 % českých WordPress není aktualizováno.

Takže co byste měli dělat? Především sledujte blog/zprávy u redakčního systému, který používáte (WordPressDrupal a Joomla!.). Přihlaste se k odběru novinek například přes RSS a nechte si ze čtečky posílat notifikace. Obdobně fungují i jejich profily na sociálních sítích. Když vyjde nová aktualizace projděte si detaily jestli se jedná jen o údržbu anebo se opravují bezpečnostní chyby.

Nespoléhejte na automatickou aktualizace. Vždy zkontrolujte jestli k aktualizaci opravdu došlo. Jednak vám může aktualizace rozbít web, protože to se občas prostě stane (většinou v kombinaci s pluginem, občas i nastavením webserveru) a také nemusela ve skutečnosti proběhnout.

Když už budete vše kontrolovat tak projděte i pluginy a šablony jestli k nim náhodou nevyšla aktualizace. Jestliže delší dobu nevychází, tak zkontrolujte fórum/blog vývojáře. Třeba už s tím skončil a pak je načase podívat se po nějakém jiném. Nejde jen o bezpečnost, ale pluginy a šablony staré několik let už nemusí zvládnout třeba nové verze PHP.

Pokud si spravujete vlastní VPS, tak čelíte daleko větším hrozbám, protože pro útočníka má vaše VPS větší cenu. Je tedy třeba dbát na aktualizace všeho co na něm máte.

Nezabezpečené šablony a pluginy

Redakční systémy dnes pohání téměř polovinu webů na internetu. Jako “redakční systémy” by takovýto podíl nezískaly, proto potřebují různá rozšíření. V dnešní době není problém vytvořit z WordPress prakticky cokoliv. Když něco lidé potřebují, prostě si najdou plugin, nainstalují jej a vyzkouší. Nesledují přitom jak je starý, jak jej hodnotí ostatní uživatelé anebo zdali jeho tvůrce komunikuje s uživateli.

Je třeba si uvědomit, že s každým plugin a šablonou roste riziko že někde bude nějaká bezpečnostní díra. Takže je třeba minimalizovat počet pluginů i šablon na nezbytné minimum. Nezapomínejte také nepoužívané pluginy promazávat.

Poučme se z minulosti

Sociální inženýrství

Sociální inženýrství je snaha zmanipulovat lidi k provedení určité akce anebo získání informací, které povedou k narušení bezpečnosti webu anebo serveru. Patří sem například phishing – snaha vylákat citlivé údaje prostřednictvím podvodných stránek.

Podle studie Google Handcrafted Fraud and Extortion: Manual Account Hijacking in the Wild mohou mít nejefektivnější phishingové kampaně úspěšnost až 45 %, což je opravdu vysoké číslo.

Je třeba si uvědomit, že sociální inženýrství je dnes na velmi vysoké úrovni a některé pokusy jsou extrémně zákeřné. Pár příklad:

  • Z emailové schránky wordpress@vasedomena.tld vám dorazí email, že bezpečnostní aktualizace se nezdařila. Vzhledem k závažnosti bezpečnostní díry, je nutné přihlásit se do administrace a provést manuální aktualizaci. Na konci standardního emailu, který rozesílá WordPress pak bude odkaz na phishingovou stránku nerozeznatelnou od té vaší. Samozřejmě poté co zadáte heslo, dojde k přesměrování na vaši stránku, abyste nepojali podezření. Než se zorientujete, zjistíte že žádná aktualizace není a kouknete, co vám to vlastně přišlo za email, už je robot přihlášený do vašeho účtu a nahrál backdoor. Změna hesla už je zbytečná.
  • Z emailové adresy vašeho hostingu vám dorazí upozornění na neobvyklou aktivitu vašeho webu s žádostí ať si radši změníte heslo.
  • Vašim registrovaným uživatelům dojde email od vás ať si aktualizují hesla.
  • Vaše služba byla zrušena a data smazány, stáhněte si prosím co nejdříve zálohu dat – odkaz na přihlášení do administrace hostingu.
  • Nevyzvedl jste si zboží a pokud okamžitě neudáte důvod bude následovat sankce – odkaz na přihlášení, případně formulář s osobními daty.
  • V důsledku chyby došlo k neoprávněnému odčerpání peněz z vašeho účtu. Prosím přihlaste se a potvrďte nám, kam máme peníze vrátit. Jako omluvu od nás dostanete navíc kredit zdarma.
  • Nezaplacená faktura za služby u společnosti vašeho hostingu (kde máte hosting se dá zjistit z whois anebo podle IP adresy)

Jak vidíte většina je založena na tom, že je email poslán od vás – z vaší domény. Proti tomu se dá bojovat přidáním SPF záznamu do DNS (pokud to mailserver hostingu umí).

A nejlepší ochrana před sociálním inženýrstvím? Především používat hlavu a držet se zaběhnutých postupů. Není třeba v emailu na nic klikat. Přece víte, kde máte přihlašovací stránku. Ujistit se, že email opravdu dorazil odkud deklaruje.

Používat hosting podporující SPF (whitelist IP adres, které smí odesílat emaily) a DKIM (digitální podpis hlaviček). Mimochodem tyto technologie také zvyšují šanci, že váš email nespadne do spamu.

Proškolit všechny uživatele, kteří mají do systému přístup. Vysvětlit jim jak s nimi budete komunikovat a jak poznají, že email dorazil od vás anebo ze systému. Většina lidí netuší že existuje něco jako phishing.

Žádná anebo chabá bezpečnostní politika

Pokud váš systém využívají uživatelé měli by dodržovat nějaká pravidla. Často pro proniknutí do systému je nutné nejdříve získat nějaké přístupy, a pak teprve lze využít bezpečnostní díra například upravením práv.

Co všechno musí bezpečnostní politika řešit:

  • Používání slabých anebo odhadnutelných hesel.
  • Přidělování oprávnění lidem, kteří je nepotřebují anebo už pro vás nepracují.
  • Povolení přihlašování přes HTTP. Kdy naposledy jste aktualizovali router, modem a další síťové prvky, které by mohly odposlouchávat? Nepoužívají vaši uživatele třeba wi-fi zdarma? U přihlašovacích formulářů je nutné mít HTTPS.
  • Nahrávání souborů musí mít nějaká pravidla.

Zároveň byste měli pravidelně provádět:

  • Revizi všech použitých rozšíření. Pokud nějaká nejsou používaná tak je smažte.
  • Kontrolu uživatelů a jejich oprávnění. Mimo backdoor často útočník vytvoří nového uživatele s administrátorským oprávněním.
  • Kontrola logů na zjišťování podezřelé aktivity.
  • Měli byste mít přehled o aktivitě a přihlašování administrátorů – kdy se přihlásil, odkud (IP, země) a zdali neprováděl nějakou podezřelou aktivitu (vytváření dalších účtů, instalace doplňku, úpravu zdrojových kódů).

Prostě je nutné mít o všem přehled.

Prosakování dat

Prosakování dat je označení pro situaci, kdy vlivem nějaké chyby se začnou objevovat informace, které mohou útočníkovi pomoct k nalezení bezpečnostních děr. Například do vyhledávání na webu zadá takový řetěze, na který skript není připraven a dojde k vypsání chyb. V těchto chybách se může nacházet informace o struktuře adresářů, název databázových tabulek a sloupců. V extrémním případě se dokonce může objevit obsah souboru s konfigurací.

Některé chyby jsou také příznakem neaktualizovaných redakčních systémů. Například když přejdete na novou verzi PHP, která začne zobrazovat varování, že určitá funkce už je zastaralá. Útočník rázem ví, že tam máte nějaký neaktualizovaný plugin.

Existuje nespočet robotů, kteří jakékoliv chyby, které by mohli něco zajímavého odhalit hledají ve vyhledávačích a následně pak projdou detailněji váš web.

Co s tím můžete udělat? Především se ujistěte, že jakékoliv chyby zobrazí jen informaci pro uživatele bez jakýchkoliv citlivých informací. Kompletní popis chyby si můžete zapsat do logu anebo poslat emailem.

V rámci vaší bezpečnostní politiky byste také měli projít váš web jestli se nezobrazuje nějaká chyba, případně i vyhledávače jestli tam něco nenašly. Google seznam chyb na vašem webu eviduje v Search Console.

Pokud už se nějaká chyba objeví, obsahuje velmi citlivé informace a Google jí zaindexuje, tak můžete využít nástroj Odstranit adresy URL. Dočasně tak můžete skrýt výsledek z vyhledávání.

Závěr

Tak to máme první díl za sebou. Věřím že jste se něco nového dozvěděli. Budu rád pokud článek nasdílíte. Přeci jen není nic horšího než o víkendu čistit hacknutý web, tohle je zkušenost, kterou nikomu nepřeji.

Článek je postaven na osobních zkušenostech a Google Web Fundaments.

Další díly


Jak bude reklama vypadat?
-
Nechceš zde reklamu napořád jen za 60 Kč?
Zobrazit formulář pro nákup

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.