Pomalé útoky

 

S postupným rozšiřováním cloudových a webových služeb se pochopitelně množí také různé typy útoků, které se snaží získat v podstatě jakýkoliv typ přístupu k jakékoliv službě. Pokud je útočník trpělivý a chytrý, nebude např. na vaše AD FS útočit hrubou silou a zkoušet najednou tisíce hesel ke všem e-mailovým adresám (které už má pravděpodobně dávno ve své databázi). Stačí zkusit čtyři hesla k jednomu účtu za den, počkat až úspěšné přihlášení uživatele nebo uplynulý čas resetuje čítač neplatných pokusů o přihlášení, a další den zkusit několik dalších hesel. Takto lze testovat hesla k tisícům účtů a obdobné útoky typu „password spray“ jsou poměrně rozšířené – a hlavně velmi těžko detekovatelné.

Rozšíření funkce Extranet Lockout – Extranet Smart Lockout

Pokud uživatele ověřujete v Azure AD, možná ani netušíte, že tyto účty už Microsoft chrání pomocí funkce Smart Lockout, IP lockout, banned passwords a podobně. Pokud ale používáte k ověřování vlastní AD FS službu, funkce Extranet Smart Lockout (ESL), rozhodně stojí za vaši pozornost.

Stručně řečeno, ESL začne rozlišovat mezi pokusy o přihlášení běžného uživatele a pokusy o přihlášení, které mohou pocházet od útočníka. Pokud se tedy uživatel z nějaké IP adresy úspěšně přihlásil, bude se na tuto IP vztahovat jiný čítač neplatných pokusů než na IP adresu, ze které k úspěšnému přihlášení uživatele nedošlo. V ideálním případě jsou pak další pokusy ze strany útočníka ignorovány a oprávněný uživatel přitom není omezen. 

Je potřeba připomenout, že funkcionalita ESL je omezena pouze na pokusy o přihlášení z externích sítí (tedy přes WAP servery), a to pomocí jména a hesla.

 

Co budeme potřebovat

Funkce ESL byla přidána do AD FS 4 (AD FS 2016) jako součást březnových a červnových aktualizací (March 2018 update, June 2018 update). Všechny pravidelně aktualizované servery by tedy již měly být připraveny.

AD FS farma musí být přepnuta do režimu 2016.

AD FS Security Audit Logging musí být povolen (jak na úrovni AD FS, tak na úrovni local policy na AD FS serverech).

 

Aktualizace oprávnění v databázi

Pro správné fungovaní musí mít servisní účet AD FS povoleno vytvoření nové tabulky v AD FS artifact databázi.

Většina AD FS farem používá integrovanou databázi, proto se před aktualizací oprávnění přesvědčte, že všechny servery běží, a že je na nich povolen Windows Remote management.

 

Spusťte příkazy

$cred = Get-Credential #účet AD FS Administrátora

Update-AdfsArtifactDatabasePermission -Credential $cred

 

Na následujícím obrázku vidíte chybovou hlášku zapříčiněnou nedostupným sekundárním AD FS serverem. Druhý pokus (po spuštění serveru) je již úspěšný. Ověření (credential) vyžaduje účet AD FS administrátora, nikoli servisního účtu.

 

Obrázek 1  - aktualizace databáze

 

Pozn.: pokud používáte dedikovanou SQL instanci, nebo nemáte potřebná oprávnění, bude pravděpodobně nutné nastavit oprávnění ručně pro databázi AdfsArtifactStore.

 

Konfigurace ESL

Vaše aktuální konfigurace nyní pravděpodobně obsahuje nastavení „ExtranetLockoutMode:ADPasswordCounter“. Toto je výchozí nastavení, tedy standardní „Extranet Soft Lockout“ režim.

 

Obrázek 2 - kontrola výchozího nastavení

 

Zvažte také nastavení hodnoty „ExtranetLockoutRequirePDC“ na „$false“. Nastavení může vypadat např. takto:

 

Nyní zapneme „testovací režim“, kdy bude veškerá funkcionalita místního zamykání (soft lock) potlačena, a budou pouze logovány události do logu zabezpečení. Tato fáze musí být pouze dočasná, abyste si mohli ověřit správnost nastavení a případně upravit citlivost zamykání účtů.

 

Zapnutí testovacího/logovacího režimu provedeme příkazem

Set-AdfsProperties -ExtranetLockoutMode AdfsSmartlockoutLogOnly

a následně restartujeme služby AD FS na všech serverech ve farmě.

 

Obrázek 3 - Nastavení ESL v logovacím režimu

                        

V logu pak můžeme sledovat události a zamykání účtů (Event ID 1203 nebo Get-AdfsAccountActivity).

Obrázek 4 - Kontrola událostí v režimu logování

 

Nyní nás čeká ta složitější část – porovnat aktuální nastavení doménových politik pro zamykání účtů, konfigurace AD FS Extranet Lockout a také vysledovaných trendů v pokusech o přihlášení. Případné upravení hodnot už je hračka, a můžeme přepnout do režimu „AdfsSmartLockoutEnforce“, kdy se budou účty opět místně zamykat, jen s mnohem chytřejší logikou.

Příkaz „Set-AdfsProperties -ExtranetLockoutMode AdfsSmartLockoutEnforce“ bude opět následovat restart AD FS služeb na všech serverech ve farmě.

 

Obrázek 5 - Zapnutí vynucovacího režimu ESL

 

Nyní by již mělo vše fungovat, můžete se o tom přesvědčit rychlým otestováním z různých IP adres. Užitečné mohou být také příkazy Reset-AdfsAccountLockout, nebo Set-AdfsAccountActivity, který umožní přidat další důvěryhodnou IP adresu v případě potřeby – např. při ladění nastavení.

 

Obrázek 6 - Kontrola funkčnosti ESL

 

 

Gratuluji, vaše prostředí je nyní opět o trochu bezpečnější!