Obrana proti brute force útokům

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: .cCuMiNn.
Datum: 7.2.2011
Hodnocení/Hlasovalo: 2.57/7

Události včerejšího dne, kdy jsem byl nucen se blíže zabývat problematikou omezení přístupu k aplikaci během brute force útoku, mě přivedly k sepsání těchto pár řádků. Pokusím se na nich v krátkosti popsat útoky pro uhádnutí hesla a zkusím také nastínit správnou ochranu, která by těmto útokům měla bez vedlejších účinků účinně zabránit.

Představení slovníkových a brute force útoků

Během útoků tohoto typu se útočník snaží uhádnout uživatelské heslo k aplikaci. Zadává různá slova ze slovníku nebo textové řetězce, které jsou tvořeny různými variacemi zvolených znaků. Při samotném útoku je tak serveru, zasíláno velké množství různých hesel a aplikace odpovídá na každé špatně zadané chybovou zprávou. Pokud je ovšem heslo správné, aplikace ho přijme a útočníka přihlásí. Různých variací hesel, která jsou útočníkem během útoku vyzkoušena, mohou být klidně miliony a pokud uživatel nemá zvoleno opravdu bezpečné heslo, je pravděpodobné, že jeho účet podobnému útoku podlehne a útočník jeho heslo uhodne. Mezi aplikace, které jsou pro podobné útoky volně k dispozici patří například nechvalně známý WWW hack nebo Brutus.

Proč ochranu proti brute force implementovat

Téměř ve všech publikacích, které se věnují otázkám zabezpečení, se dočtete, že by měla být bezpečnostní opatření proti brute force útokům implementována. Tato opatření spočívají v zabránění přístupu do aplikace ve chvíli, kdy během definované doby zadáte určitý počet nesprávných údajů. Aplikace v té chvíli začne odmítat i správně zadané autentifikační údaje a přihlášení umožní a po odeznění útoku. To je ve chvíli, kdy další chybně zadaný pokus nepřijde během definované doby, po kterou je účet uzamčen. Ochrana tohoto druhu je velmi účinná a útočníkům spolehlivě zabrání v uhádnutí uživatelského hesla.

Proč ochranu proti brute force implementovat

Každá mince má ovšem dvě strany. Tím, že implementujeme podobný typ ochrany, zabráníme sice útočníkovi v odhalení hesla, ale dáváme mu do rukou zbraň, které může využít při DoS útoku na uživatelský účet. DoS v překladu znamená odepření služeb a pokud by útočník spustil brute force útok směřující ke spuštění výše popsaných obranných mechanismů, nemohl by se tak k aplikaci přihlásit nejen útočník, ale také ani oprávněný uživatel. Řekněme si na rovinu, že toto bezpečnostní opatření by se uživateli asi nelíbilo. Jak by také mohlo, když by se několik dní nemohl přihlásit například ke svému e-mailovému účtu.

Ochrana proti zneužití ochrany

Někoho by mohlo napadnout, že by stačilo uvedenou ochranu implementovat jen na pokusy o uhádnutí hesla, které přicházejí z jedné IP adresy. V tom případě by se zabránilo útočníkovi v uhodnutí hesla a oprávněný uživatel by měl přístup k účtu volný. Bohužel v době distribuovaných útoků, při kterých může na brute force útok využít útočník celé armády zombií, by toto opět mohlo vést k uhádnutí hesla.

Zavádět či nezavádět

Jen těžko tak lze rozhodnout o tom, zda zavedení výše zmíněných obranných prvků nepřinese nakonec více škody než užitku. Doba ovšem pokročila, uživatelé jsou dnes již více obeznámeni s nutností použití bezpečných hesel, která se skládají z malých a velkých znaků, obsahují číslice a speciální znaky a jsou přiměřeně dlouhá. Proti takto zvoleným heslům namají slovníkové a brute force útoky žádnou šanci na úspěch. Proč tedy uživatele nepřinutit k použití těchto hesel? Stačí jen uživateli nedat na výběr a bezpečné heslo mu jednoduše při tvorbě účtu přikázat. Toto je ta nejlepší ochrana proti brute force útokům viz. Brute Force kalkulačka. Nač tedy potom implementovat ještě další stupeň ochrany, která může vést k odepření služeb? Myslím si, že není nad čím přemýšlet. Pokud tedy budete vytvářet novou aplikaci s autentifikací užitavelů, zkuste si na tento článek vzpomenout…