ADFS 4 a Extranet Smart Lockout
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ší!
Sdílej v médiích