V Azure je perfektní prostředí pro moderní řízení a ověřování identit - Azure AD postavená na OAuth 2.0 pro aplikace a podpora velmi bezpečného více-faktorového ověřování (kromě jména a hesla i telefonát, SMS, aplikace v mobilu apod.). Ale co on-premise svět? Váš Exchange s OWA, remote desktop, VPNky, intranet a především lokální Active Directory? Potřebovali byste bezpečnější více-faktorové ověřování, ale s on-premise AD a aplikacemi? Podívejme se, jak s využitím ADFS a MFA Serveru napojit váš on-premise svět na Azure Multi-Factor Authentication.
Určitě máte na dveřích zámek a klíče v kapse. Ty ovšem můžete s jistou (doufejme ne velkou pravděpodobností) ztratit či vám je někdo sebere a pak se dostane do vašeho bytu či domu. Pomůže vám dát na dveře druhý zámek a klíč od něj dát na stejný svazek jako ten první? Zvyšujete ochranu před někým, kdo nemá klíč, ale sekeru - nicméně pro scénář vytažených klíčů z kapsy jste si nepomohli. Co potřebujete je druhý faktor zabezpečení. Něco jiného, co funguje jinak a neztrácí se současně s klíči. Mohl by to být alarm s kódem. Mít jedno nebo druhé je málo, musíte mít/znát oboje. Pravděpodobnost, že útočník nepozorovaně získá jak klíč, tak kód na alarm, je relativně nízká.
Více-faktorové ověření (MFA) dělá právě tohle. Kromě tradičního hesla se musíte prokázat ještě jinak. Například vám zavolá robot na váš telefon a vy musíte zadat PIN. Nebo vám pošle jednorázový kód SMSkou. Nebo se robot spojí s autentizační aplikací na vašem mobilu.
Microsoft službu více-faktorového ověřování v cloudu nabízí. Zdarma je k dispozici pro administrátory Azure subscription, je součástí některých balíčků Office365, je v ceně Azure AD Premium nebo se dá platit po uživatelých. Je velmi dobře integrovaná se systémem ověřování v cloudu, tedy moderním protokolem OAuth 2.0. Ten používá právě Azure Active Directory. Zapnutí MFA pro Office365, správu Azure, webovou aplikaci v App Services či mobilní aplikaci je otázkou zaškrtávátka v portálu případně ve Visual Studio.
V cloudu je to jasné - moderní protokoly, čistý stůl. Ale jak dostat bezpečnou MFA do on-premise prostředí? Většina firem cílí na hybridní řešení, takže i pro aplikace ve svých datových centrech hledají efektivní MFA. Možná se rozhodnete identity (a hashe hesel) replikovat mezi cloudem a on-prem, ale třeba ze strategických důvodů potřebujete mít účty jen v on-premise Active Directory. I přesto můžete MFA použít a zvýšit tak svou bezpečnost.
Ověřování v on-premise světě používá stále řadu klasických protokolů. Windows Login pro intranetové aplikace, LDAP, RADIUS typicky pro VPN a jiné síťové technologie a tak podobně. Active Directory ve Windows Server není o OAuth (jak je tomu u Azure AD), ale naopak o klasických protokolech. Jak tedy na to?
Prvním krokem je "překládat" on-premise protokoly do světa propojených aplikací, například OAuth. K tomu slouží služba Active Directory Federation Service. Tu typicky nasadíte na separátní server (servery), začleníte do domény a napojíte na Active Directory. Externí systémy (aplikace, partneři) se napojují přes ADFS. Pokud z bezpečnostních důvodů nechcete, aby server začleněný v doméně (byť ne řadič) měl externí přístup, můžete tento oddělit do separátního serveru mimo doménu - ADFS Proxy (ADFS mluví s AD a ADFS Proxy, ale s externím světem mluví jen ADFS Proxy). Tímto krokem se přiblížíme k možnosti nasazení MFA... jak za chvilku uvidíme.
Nejprve jsem si podle návodu na webu rozjel AD a ADFS. Pro ten potřebujete certifikát, typicky podepsaný veřejnou autoritou (pokud se chcete federovat s okolím nebo přistupovat ze světa mimo firmu, například z počítačů mimo doménu). Pokud máte všechny stanice ve správě (třeba s MDM jako je Intune) a dostanete do nich interní root CA, pak můžete i s certifikátem od vlastní CA.
Pro dnešek jsem všechno testoval jen přes přímý web ADFS. Otevřete na klientovi prohlížeč a pošlete ho na váš ADFS server (nebo proxy) na této adrese: https://mfaadfs.mfa.demo/adfs/ls/idpinitiatedsignon
Vyzkoušejte, že se můžete připojit jménem a heslem doménového uživatele.
Nejprve si v portálu (pozor, v okamžiku kdy tento článek píšu, je tato funkce zatím stále pouze v klasické, tedy starší verzi portálu) založíme MFA providera.
Já volím platbu per uživatel (v širším nasazení myslím budete volit premiovou službu Azure AD či Office365 balíček obsahující MFA).
Pokud máte Windows Server 2016, budete to mít docela jednoduché. Ten má totiž už zabudovanou integraci do Azure MFA, kterou stačí nastavit. Protože ale dnes popisuji tradiční on-premise svět, předpokládám tam spíše verzi 2012 R2. Do té musíme doinstalovat MFA Server.
V portálu u MFA providera klikněte na Manage a následně dáme Download.
Stáhneme si MFA Server pro náš systém.
Začínám instalovat na moje ADFS (pokud používáte i ADFS Proxy, tak tam).
K dispozici je průvodce nastavením různých integrací (většinu si probereme až v jiném článku), který ale doporučuji zatím přeskočit (jinak rozjedete mraky konfigurací a mě to mate, raději chci jít krok za krokem a ověřovat si, že jsem to stále ještě nerozbil).
V portálu, kde jsme stáhli MFA Server, si vygenerujeme login. To jsou credentials, jakými se moje on-premise prostředí prokáže mému Azure MFA.
Údaje zadám do instalátoru MFA Server.
Takových serverů můžete mít z důvodu redundance víc a různě je združovat, ale u mě v labu to nepotřebuji.
Všimněte si ale, že vícero serverů si replikuje nastavení, takže HA se dobře spravuje.
Nainstalováno máme, pojďme dál.
Všechno je připraveno, teď už musíme jen začlenit MFA do různých služeb. Dnes si zkusíme jen jednu - ADFS.
V MFA Serveru klikněte na ADFS a nainstalujte adaptér.
Až to bude, zapneme si možnost výběru ověření apod.
Teď musíme AD FS říct, že má adaptér používat. Spusťte tento skript a následně restartujte ADFS službu.
C:\Program Files\Multi-Factor Authentication Server\Register-MultiFactorAuthenticationAdfsAdapter.ps1
ADFS a adaptér jsou propojeny a my tak můžeme v ADFS nastavit používání našeho MFA Serveru.
Výchozí stav je takový, že pokud u uživatele je evidován druhý faktor, bude se po něm chtít. Pokud není, postačí jednofaktor (heslo). To můžete změnit a zakázat explicitně jednofaktorový přístup třeba pro skupinu uživatelů, při komunikaci z externího světa nebo z neznámých zařízení (typicky při integraci s MDM).
V on-premise Active Directory mi existuje uživatel tom. Pojďme teď pro něj ručně založit druhý faktor (jiné varianty jsou samoobslužná registrace nebo třeba import z AD či souboru apod.).
Zadal jsem mu tam můj telefon a nastavil PIN (jak vidíte možností ověření je víc).
Ještě jsem mu nastavil, že ověřovací telefonát či SMSka bude v češtině. Mimochodem máte nejen standardní nahrávku od nějaké české herečky, ale můžete si natočit hlasové zprávy svoje! To se dělá v portálu a zkusíme si někdy jindy.
Jdu na klienta a otevřu přímo login stránku ADFS.
Zadám jméno a heslo uživatele tom.
Jenže to nestačí. Vybírám tedy jako druhý faktor telefonát.
Volá mi nahraná česká paní a vyzvala mě k zadání PIN. Hned jak to udělám, okno automaticky skočí do přihlášeno.
MFA Server podporuje webový portál, kam se uživatel přihlásí jménem a heslem a může si tam založit druhý faktor (typicky by například tato stránka byla dostupná jen z vnitřní sítě). Musíme si to rozchodit.
V Users Portal ho nejprve nainstalujte (on si sám řekne o další návaznosti, konkrétně IIS na tomto serveru).
Tady zadáváme URL budoucího portálu.
Uživatelský portál vyžaduje HTTPS, takže ho musíme na IIS zapnout.
Zapněte možnost rolování uživatelů portálem.
V on-premise AD mám uživatele tom2. Založím si ho v MFA Serveru (nebo naimportuji apod.), ale tentokrát k němu nic dalšího neuvedu - druhý faktor nezaložím.
Na klientovi jdu do samoobsluhy, v mém případě na https://mfaadfs.mfa.demo/multifactorauth/
Přihlásím se jako tom2 a uvedu své heslo.
A teď už si registruji druhý faktor, třeba telefonní číslo. Vyzkoušejte si třeba mobilní aplikaci Authenticator (v okamžiku ověření se s ním Azure spojí a ověří se, že telefon máte a s ověřením souhlasíte).
Na to se podíváme detailněji někdy příště. Aktuálně jsme si rozjeli ADFS, takže naše klasické AD jsme zpřístupnili v moderní OAuth 2.0 a propojili s Azure MFA. Můžeme tedy například ověřovat moderní webové aplikace, ať už běžící on-premise nebo v Azure App Services nebo kdekoli jinde. Jde o nejuniverzálnějí a velmi moderní metodu.
Kromě toho ale MFA Server nabízí specifické integrace na klasičtější protokoly. Integrace do RADIUS umožňuje dvou-faktorově ověřovat VPN přístupy (z libovolného klienta). Je také možné mít plugin do vašeho IIS (tedy nemusíte jít do plně aplikační roviny, ale využít službu ve web serveru). Specifická je také integrace do Exchange OWA nebo Windows ověřování pro tradiční aplikace. Na některé z těchto možností se podívám někdy příště.
Azure Multi-Factor Authentication dokáže zlepšit zabezpečení vašeho on-premise světa. Využijete ho i u aplikací a systémů, které do cloudu migrovat nechcete. Vaše lokální AD, lokální web servery, OWA, VPN koncentrátor, aplikace a přesto vám cloud razantně zvýšil bezpečnost. Díky tomu můžete k tradičnějším aplikacím dát s klidným svědomím i přístup "zvenku", uspokojit tak palčivou poptávku uživatelů a aplikace přepsat do cloud-native podoby později, až budete připraveni.