Nedávno jsme zaznamenali útok, který lze označit jako DoS[1] útok na e-mailové schránky. Nejpravděpodobnější vysvětlení tohoto útoku je, že se útočník pokoušel získat přístup do schránky hádáním hesel podle slovníku nebo hrubou silou. Po překročení stanoveného počtu pokusů o přihlášení k dané e‑mailové schránce server tuto schránku zablokoval. Do vypršení časového limitu blokace se tedy ke schránce nemohl přihlásit nikdo (tzn. ani oprávněný uživatel, který zná správné heslo). Tento útok může postihnout nejen webové rozhraní pro přístup k e-mailu, ale také protokoly IMAP nebo POP3.
Tento útok byl možný díky tomu, že přihlášení do e-mailové schránky je volně dostupné z internetu a také díky nedostatečnému ošetření a obraně před tímto typem útoků. Pro ošetření tohoto typu útoku tak, aby neomezilo běžné uživatele, je potřeba využít sofistikovanějších metod než je zablokování účtu.
Zamezení pokračování při detekci takového útoku je správný přístup, ale v tomto případě byl implementován na špatné straně. Vždy je potřeba opatření provádět co nejblíže směrem k útočníkovi, aby bylo účinné proti němu, ale ostatní uživatele omezovalo v co nejmenší míře. Možnosti jsou následující a je možné je i kombinovat. Vždy záleží na druhu služby a jejím použití.
CAPTCHA je technologie, která v případě chybného ověření vyžaduje interakci uživatele (člověka), který musí přečíst automaticky vygenerovaný a strojově zdeformovaný obrázek a opsat ho do předem definovaného pole. Předpokladem této technologie je, že člověk oproti automatickému stroji bude schopný takový text rozpoznat.
Další možností je blokace IP adresy, ze které se automatizovaný robot pokouší hesla zadávat. Pro tento účel existuje mnoho produktů, které jsou toho schopné dosáhnout. Můžeme jmenovat např. Fail2ban[2] nebo DenyHosts[3].
Další možností je nastavit stavový firewall tak, aby na portu, na kterém je služba nastavena, filtroval určitý počet připojení za určitý časový interval. Takové jednoduché pravidlo může vypadat například následovně:
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 11 -j DROP
-A INPUT -p tcp --dport 80 -j ACCEPT
V této podobě by pravidlo sice zabránilo (nebo alespoň značně zkomplikovalo) útoku na hesla, ale nezabránilo by zmíněnému DoS útoku, tedy zamezení přístupu k e-mailovým schránkám. Pro tento účel je potřeba upravit pravidlo tak, aby bylo konkrétnější a postihlo pouze útočníka. Toho je možné dosáhnout například specifikováním zdrojové IP adresy.
V případě nutnosti přístupu k protokolům POP3, IMAP apod. z internetu stojí za zvážení provozovat komunikaci skrze VPN. V takovém případě se útočník může snažit o prolomení do VPN, ale dokud se mu to nepodaří, nebude mít možnost dostat se k e-mailovým schránkám.
Tento seznam možných opatření pro zabezpečení služeb před hádáním hesel není vyčerpávající. Měl by spíše sloužit pro inspiraci, jaký zvolit obecný přístup pro řešení tohoto problému.
[1] Denial of Service, https://cs.wikipedia.org/wiki/Denial_of_service
[2] Fail2ban, http://www.fail2ban.org/wiki/index.php/Main_Page
[3] DenyHosts, http://denyhosts.sourceforge.net/