Co se stalo? Včera kolem tradiční 17. hodiny napadli hacktivisté, kterým už skončila škola, veřejný webový server poslanecké sněmovny. Správci poslanecké sítě zareagovali nejjednodušším možným způsobem – server odpojili od internetu a čekali, až se bouře přežene. Možná šli i domů a server připojili až ráno, po příchodu do práce. Těžko soudit, ale faktem je, že web nefungoval až do časných ranních hodin. Jeho správci mohli podobný útok čekat. Po zahlcení serveru české vlády byli logicky jedním z dalších na řadě. Nevím, nakolik se na něj připravovali, navenek to působí tak, že funkčnosti veřejného webu nepřikládají takovou váhu a odevzdali se osudu. Který se tentokrát postavil proti nim.
Obrana proti útoku typu DDoS (distribuované odmítnutí služby) je sice složitější, ale do jisté míry možná. Útok tohoto typu postupuje podle jednoduchého scénáře – z pokud možno co největšího počtu míst v internetu vyslat co možná největší počet požadavků na zobrazení webových stránek. Většina serverů podobnou zátěž nevydrží, zahltí se a odmítne reagovat.
Jeden z poměrně jednoduchých, levných a účinných způsobů ochrany proti DDoS nabízí kombinace serveru nginx a firewallu. Pokud předřadíte linuxový server s ngixem a dostatkem operační paměti před stávající webové servery jako reverzní proxy, můžete útok typu DDoS zcela odrazit nebo přinejmenším silně zmírnit.
Na internetu najdete řadu návodů na doporučenou konfiguraci, v zásadě je ale dobré začít s několika dobrými radami. První z nich je kešování nejnavštěvovanějších dynamických stránek v paměti serveru proxy. Tyto stránky se obvykle nemění každou vteřinu, proto je možné nabízet jejich časový snímek starý i několik minut. Pokud je uložen v operační paměti, stihne jich server klientům vrátit dostatek na to, aby uspokojil i požadavky útočníků. Druhou je kešování všech stránek, na které odkazují útočníci, v operační paměti serveru proxy. To sice vyžaduje průběžný monitoring a úpravy konfigurace nginxu, ale zajistí to celkem normální fungování webu. Třetí radou je sledování identifikace klienta. Útočníci mohou použít specifické označení klienta. Nginx potom může v době útoku všechny požadavky těchto klientů ignorovat. Poslední rada sahá hlouběji do struktury internetu. Pokud útočníci využívají řádově desítky adres, je možné je blokovat na úrovni internetového protokolu pomocí firewallu umístěného na serveru proxy nebo ještě před ním. Tomu jen vyjmenujete „nebezpečné“ adresy a on jim ani nedovolí vznést požadavek na server.
Řešení samozřejmě existuje více. Je ale určitě dobré mít alespoň jedno v záloze a v případě útoku je nasadit. Potom útočníci pochopí, že by měli zvolit jinou formu protestu než jen „obyčejné“ blokování webu.