www.SAMURAJ-cz.com 

02.05.2024 Zikmund Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Fortigate SSL VPN s Azure AD MFA z počítačů v doméně

Sobota, 27.08.2022 08:42 | Samuraj - Petr Bouška |
Článek se věnuje situaci, kdy máme Fortinet FortiGate a na něm využíváme SSL VPN. Připojování do VPN chceme více zabezpečit. Takže se rozhodneme vyžadovat vícefaktorovou autentizaci při přihlašování uživatelů. Také chceme povolit připojení do VPN pouze z firmou spravovaných zařízení. To jsou počítače zařazené do AD domény. Využíváme cloudové služby Microsoft 365, kam replikujeme účty. Jako řešení se tedy nabízí napojení FortiGate na Azure AD pomocí SAML 2.0. A využití Azure AD MFA spolu s Conditional Access Policy.

Pozn.: Popis v článku vychází z FortiGate FG-300E s FortiOS verzí 7.0.6. Který je nakonfigurovaný jako FGCP cluster a využívá VDOM.

Výchozí stav

Účty uživatelů a počítačů v Azure Active Directory (AD)

Vyházíme ze situace, kdy provozujeme lokální (On-Premises) Active Directory doménu a využíváme cloudové služby Microsoft 365, takže máme také Azure AD Tenant. Máme nastaven Azure AD Connect a replikace účtů z On-Premises AD DS. Počítače jsou zařazeny do AD domény a také registrované do Azure AD pomocí Hybrid Azure AD Join.

Azure AD Multi-Factor Authentication (MFA)

V rámci Azure AD můžeme využívat pro ověřování vícefaktorovou autentizaci, Azure AD přihlašování bez hesla a vícefaktorové ověření (MFA) (oficiální dokumentace Azure AD Multi-Factor Authentication), a tím více zabezpečit uživatelské účty.

Azure AD MFA nabízí řadu autentizačních metod, které můžeme využívat při přihlášení. Použitím dalších faktorů při přihlašování se může snižovat uživatelský komfort, proto je snaha co nejvíce využívat Single Sign On (SSO). Ověřovací metody pro SSPR jsme si obecně pospali v článku Azure AD moderní ověřování, samoobslužný reset hesla (SSPR), pro MFA jsou ověřovací metody omezenější.

Vždy potřebujeme nějaké zařízení, což je nejčastěji mobilní telefon, případně HW token. Velmi stručně jsou dostupné metody pro MFA:

  • ověřovací kód - zaslaný pomocí SMS, z aplikace v telefonu nebo HW tokenu (One-time Password - TOTP či OATH Verification Code)
  • notifikace - schválení přihlášení v aplikaci Microsoft Authenticator
  • hlasový hovor - automatizovaný hovor na číslo uživatele
  • přihlašování bez hesla - pomocí aplikace Microsoft Authenticator (podle mne nejpohodlnější možnost)
Azure AD MFA přihlašování bez hesla Microsoft Authenticator přihlášení v aplikaci nově

FortiGate SSL VPN

Fortinet FortiGateFortiOS nabízí řadu možností pro vytvoření a konfiguraci SSL VPN. Zde se bavíme o Remote Access VPN, pro připojení vzdálených uživatelů do firemní LAN, provozované v Tunnel Mode s využitím klienta FortiClient. V rámci VPN můžeme využít různé metody a zdroje ověření (přihlášení) uživatelů.

Rozšíření o MFA a podmíněný přístup

Security Assertion Markup Language (SAML)

Azure AD podporuje moderní ověřování (Modern Authentication), kam spadá také otevřený standard Security Assertion Markup Language (SAML) 2.0. Ten využívá potvrzení na principu tokenů a často se využívá pro SSO v rámci webových aplikací na internetu.

FortiGate (FortiOS) již také nějakou dobu podporuje SAML 2.0. Podpora je postupně rozšiřována, zde se bavíme o minimální verzi FortiOS 7.0.0 (oficiální dokumentace FortiOS 7.2.1 - SAML).

SSL VPN ověřování vůči Azure AD pomocí SAML

Na FortiGate můžeme nakonfigurovat SAML SSO Server napojený na Azure AD (funguje jako poskytovatel identit). Vytvořit uživatelské skupiny mapované na Azure AD skupiny. Pokud tyto skupiny použijeme v konfiguraci VPN, tak probíhá ověření uživatele, při přihlášení do VPN, proti Azure AD. Dojde k přesměrování na web Microsoftu, a pouze při úspěšném přihlášení (a případném splnění definovaných podmínek) se informace o přihlášení předá na FortiGate (nepředávají se autentizační data). Následně dojde k připojení do VPN.

Pro konfiguraci SAML musíme nejprve v Azure AD vytvořit Enterprise Application. Postup je uveden v článku FortiGate přihlášení do SSL VPN pomocí SAML SSO vůči Azure AD - Konfigurace Azure AD.

Pak na straně FortiGate vytvořit SAML SSO Server, definovat skupiny a upravit konfiguraci SSL VPN. Posutp je ve stejném článku v Konfigurace FortiGate.

Ve FortiOS 7.0 již můžeme konfiguraci provádět také v GUI. Vytvořit a upravovat SAML SSO Server můžeme v

  • (Global/VDOM) > User & Authentication > Single Sign-On

Uživatelské skupiny, se zdrojem SAML SSO Server (ten přidáme jako Remote Group a můžeme zadat Object ID skupiny do Group Name), můžeme plně vytvářet a spravovat v 

  • (Global/VDOM) > User & Authentication > User Groups
FortiGate 7.0.6 Single Sign-On

V terminologii SAML je Azure AD označován jako Identity Provider (IdP), FortiGate je Service Provider (SP) a webový prohlížeč, kde proběhne ověření, je User Agent.

Vyžadování MFA pomocí Conditional Access

Naším cílem je používat při přihlašování vícefaktorovou autentizaci. V Azure AD může být MFA zapnuto pro všechny uživatele pomocí Security Defaults, pouze pro vybrané uživatele nebo detailně řízeno pomocí Conditional Access Policy (zásady podmíněného přístupu). Více popsáno v Azure AD přihlašování bez hesla a vícefaktorové ověření (MFA).

Doporučované je využití Conditional Access, které dovoluje nastavit různé podmínky a řízení přístupu (včetně vyžadování MFA) pro vybrané aplikace a uživatele.

Vytvoříme tedy Conditional Access Policy, kde nastavíme Require multifactor authentication, a přiřadíme k Enterprise Application vytvořené pro FortiGate SSL VPN. Postup je uveden v Azure AD Conditional Access.

Omezení autentizační relace

V Conditional Access Policy se může hodit nastavit také položku Session - Sign-in frequency (oficiální dokumentace Configure authentication session management with Conditional Access).

Standardně se při prvním přihlášení vytvoří relace (Sesssion) a pak dlouho probíhá automatické přihlášení (SSO). Jsou různé podmínky, které toto chování řídí. Opakované přihlášení do VPN pak probíhá automaticky a nevyžaduje ověření uživatele. To je sice pohodlné pro uživatele, ale pro připojení do VPN ne zrovna bezpečné. Pokud tedy nemáme super zabezpečené počítače, přihlášení do nich a také fyzickou bezpečnost.

Proto můžeme pro naši aplikaci nastavit frekvenci přihlašování, například v řádu hodin. Když se bude uživatel znovu hlásit do VPN (ze stejného prohlížeče) v kratší době, tak proběhne automatické přihlášení. Pokud bude čas překročen (třeba další den), tak bude vyžadováno provedení MFA přihlášení.

Připojení pouze z počítačů zařazených do domény

Mimo vyžadování MFA také chceme povolit VPN připojení pouze z počítačů, které jsou Hybrid Azure AD Join. Na straně Azure AD to nastavíme jednoduše. Upravíme Conditional Access Policy z minulého kroku a v bodě Grant zatrhneme také Require Hybrid Azure AD joined device.

Azure AD - Conditional Access Policy

Při přihlášení uživatele dojde také k ověření zařízení (Device Authentication) a Azure AD zjistí, o jaké zařízení (Device ID) jde. Ověření uživatele je úspěšné (Success) pouze, pokud jsou splněny definované podmínky. V opačném případě selže (Failure).

Zjištění podrobností specifických pro zařízení (Device-Specific Details) vyžaduje ověření zařízení (Device Authentication). To je podporováno pouze na určité kombinaci operačního systému a prohlížeče. Microsoft uvádí seznam Supported browsers. Prohlížeč musí mít povolené Cookies a nesmí běžet v privátním módu.

Na Windows 10 je podporován (více informací na konci článku)

  • Microsoft Edge s přihlášeným uživatelem
  • Google Chrome po instalaci rozšíření Windows Accounts
  • Mozilla Firefox od verze 91 s nastavením Privacy & Security - Allow Windows single sign-on

Pozn.: Dokumentace uvádí, že má fungovat ověření zařízení také z macOS (a dokonce i iOS a Android). To se mi nijak nepodařilo zprovoznit. Uvítám rady či informace.

Připojení do VPN pomocí aplikace FortiClient

Pokud ve VPN připojení (VPN Connection) v aplikaci FortiClient nastavíme využití SAML (Enabel Single Sign On (SSO) for VPN Tunnel), tak se pro autentizaci vůči Azure AD otevře integrovaný prohlížeč. V něm se otevírá stránka Microsoft, kde probíhá ověření.

Tento prohlížeč se identifikuje jako Chrome, verze jsem zaznamenal 69.0.3497 a 87.0.4280 (stejně z Windows, Linux i MacOS, ale patrně záleží na verzi FortiClient). Bohužel neobsahuje rozšíření Windows Accounts a nepodporuje zjištění informací o zařízení. Takže v našem nastavení podnikové aplikace, kde vyžadujeme počítač zařazený do domény, připojení vždy selže.

FortiClient SAML autentizace v externím prohlížeči

Řešení je použít pro autentizaci externí prohlížeč, který je v operačním systému nastaven jako defaultní. Tato možnost byla doplněna do FortiOS 7.0.1 a FortiClient 7.0.1.

V SSL VPN konfiguraci FortiGate nastavujeme lokální port pro přesměrování na FortiClient po úspěšném ověření. Na tomto portu dočasně poslouchá FortiClient a předá se Authentication ID. Hodnota TCP portu 8020 je defaultní.

config vpn ssl settings
    set saml-redirect-port 8020
end

Ve FortiClient nastavíme VPN připojení tak, že zatrhneme volby:

  • Enabel Single Sign On (SSO) for VPN Tunnel
  • Use external browser as user-agent for saml user authentication
FortiClient 7.0.1 nastavení SAML a externí prohlížeč

XML konfiguračním souboru FortiClient jde o nastavení:

<sso_enabled>1</sso_enabled>
<use_external_browser>1</use_external_browser>

Průběh přihlášení a připojení do VPN

Když se připojujeme do VPN, tak se nevyplňuje jméno a heslo, ale je zde tlačítko SAML Login, které vyvolá vzdálené ověření u Microsoftu.

FortiClient SAML login připojení

Průběh přihlášení je následující

  • ve FortiClient klikneme na SAML Login
  • FortiClient začne poslouchat na definovaném portu (defaultně TCP 8020)
  • https://vpn-sso.firma.cz/remote/saml/start?redirect=1 - FortiClient otevírá SAML adresu VPN připojení ve (výchozím) webovém prohlížeči v systému
  • https://login.microsoftonline.com/<Tenant-ID>/saml2?SAMLRequest= - dojde k přesměrování na SAML Login URL (nastavené v Azure AD Enterprise Application i FortiGate SAML konfiguraci - idp-single-sign-on-url), aby se dokončila SAML autentizace u Identity Provider
  • proběhne standardní moderní ověření u Microsoftu dle nastavených parametrů a metod
  • https://vpn-sso.firma.cz/remote/saml/login - při úspěšném přihlášení jsme přesměrování na Sign On URL na FortiGate (nastavené v Azure AD Enterprise Application i FortiGate SAML konfiguraci - single-sign-on-url)
  • http://127.0.0.1:8020/?id=ece086fa2811e6a - dojde k přesměrování na localhost a definovaný port, předává se Authentication ID na FortiClient a FortiGate dokončí SAML autentizaci s tímto ID
  • FortiClient pokračuje v navazování VPN tunelu, přestane poslouchat na portu

Pokud proběhlo přihlášení ve webovém prohlížeči v pořádku, tak se zobrazí informace, že se VPN připojuje a okno prohlížeče je možno zavřít.

FortiClient SAML ověřeno v externím prohlížeči

FortiClient pokračuje v navazování VPN. Teprve nyní naskočí informace Status: Connecting a po chvíli procenta.

FortiClient připojování VPN

Pokud došlo k nějaké chybě, tak prohlížeč zobrazí informace o chybě a skončí na stránce Microsoft. FortiClient čeká a nedostane žádnou informaci.

FortiClient nedokončené ověření v externím prohlížeči

Musíme ukončit tlačítkem Cancel.

FortiClient zrušení SAML přihlášení

Chyby při Azure AD ověřování

Při autentizaci v rámci Azure AD může nastat nějaká chyba a ověření neproběhne. Probíhá Microsoft moderní autentizace v našem Tenantu. Nejprve musí proběhnout ověření uživatele, které v našem případě vyžaduje MFA. Záleží na nastavení uživatele, jaké ověřovací metody má k dispozici, ale dialog je jinak standardní. Pokud dojde k chybě při ověření, tak jsou informace většinou dostatečné k identifikaci problému.

Pokračuje se kontrolou podmínek zadaných v Conditional Access Policy. Zde máme určeno, že musí jít o přihlášení z počítače, který je Hybrid Azure AD Join. Azure AD musí získat informaci, o jaký počítač jde, a ověřit, že je správně registrovaný. Pokud se nepovede jedno nebo druhé, tak se zobrazí informace. Je několik možností, jak vypadá. Záleží i na použitém prohlížeči a MS v čase upravuje texty. Ne vždy nám poskytuje správné údaje, kde problém nastal.

Pokud se ověřujeme v integrovaném prohlížeči ve FortiClient. Tak se dozvíme, že se musíme připojit ze zařízení připojených do domény a že náš prohlížeč není podporován.

FortiClient integrovaný prohlížeč a nefunkční ověření zařízení

Ukázka z ověřování ve Firefoxu. První obrázek je z počítače, který je v Azure AD pouze registrován. V prohlížeči je povoleno Windows SSO, přesto dostaneme informaci, že prohlížeč není podporován. Druhý obrázek je z počítače zařazeného do domény, ale bez povolení Windows SSO.

Firefox Azure AD přihlášení vyžadující počítač zařazený do domény Firefox Azure AD přihlášení bez povolení Windows SSO

Příklad ověřování v Microsoft Edge. Z počítače, který je v Azure AD pouze registrován, pracovní účet je přihlášen.

Edge Azure AD přihlášení vyžadující počítač zařazený do domény

Ukázka z ověřování v Google Chrome. První obrázek je z počítače registrovaného do Azure AD, instalovaným rozšířením a novým Feature Update. Druhý obrázek je z počítače v doméně, instalovaným rozšířením, ale starou verzí Windows 10.

Chrome Azure AD přihlášení vyžadující počítač zařazený do domény Chrome Azure AD přihlášení stará verze Windows 10

Z minulosti mám uložený i obrázek, který informuje, že musí být počítač zařazen do domény, ale neuvádí, že je použit nepodporovaný prohlížeč.

Azure AD - Conditional Access počítač nepřipojený do domény

Co zkontrolovat, když nám ověření neprochází

Můžeme zkontrolovat, že máme firemní Microsoft účet přidaný ve Windows. V Settings - Accounts - Email & accounts v části Accounts used by other apps.

Windows 10 - Settings - Email & accounts

V příkazové řádce můžeme ověřit, že je počítač připojen do Azure AD.

C:\>dsregcmd /status
+----------------------------------------------------------------------+
| Device State                                                         |
+----------------------------------------------------------------------+

     AzureAdJoined : YES
  EnterpriseJoined : NO
      DomainJoined : YES
        DomainName : FIRMA

To můžeme také zkontrolovat v Azure Active Directory admin center - Devices.

Azure Active Directory admin center - Devices

Samozřejmě také zkontrolovat, že jsou v použitém prohlížeči splněny dané podmínky (nastavení). Můžeme také vyzkoušet jiný prohlížeč, nejlépe poslední verzi Microsoft Edge.

Ověřit verzi Windows, tedy instalovaný Feature Update, aby byla minimálně 1703 (ideálně co nejnovější). Tuto nápovědu poskytne Chrome, kde na starší verzi přihlášení nefunguje. V praxi nefunguje na starší verzi ani ve Firefoxu. Po aktualizaci Windows začalo fungovat v obou prohlížečích. Edge by měl podle informace fungovat i na starší verzi.

Určitě je také dobré prohlížet logy Azure AD. Pro testy se nemusíme stále přihlašovat do VPN. Stačí v prohlížeči otevřít nějakou stránku, kde se používá přihlášení firemním účtem. Jako je https://www.office.com.

Pak se podíváme do přihlašovacích logů v Azure Active Directory admin center. Nejlépe pro daného uživatele Users - uživatel - Sign-in logs (záznamy se zde zobrazují s pár minutovým zpožděním). Otevřeme vybraný log a přepneme se na záložku Device info. Měli bychom zde vidět ID zařízení a že je připojen do domény. Různé možnosti:

Azure AD - Sign-in logs - Device info

Více VPN připojení na FortiGate s různým přihlašováním (autentizací)

FortiGate umožňuje v rámci VPN připojení kombinovat různé možnosti autentizace (někteří uživatelé se mohou ověřovat třeba proti LDAP serveru a jiní proti Azure AD). Dosáhneme toho vytvořením uživatelské skupiny, do které přidáme různé Remote Group. Nebo nastavením mapování více skupin v konfiguraci VPN.

Druhá možnost je vytvořit více různých VPN či profilů (nebo jak to označíme), které rozlišíme pomocí různé adresy (SSL-VPN Realm - Virtual Host). V každé VPN můžeme využít jinou autentizaci či další parametry.

Můžeme také vytvořit více Enterprise Application v Azure AD a ke každé přiřadit jinou Conditional Access Policy. Na některé aplikaci můžeme vyžadovat zařazení počítače do domény, jinde můžeme omezit připojení z určitých lokalit (IP adres) a někde nevyžadovat MFA. Na FortiGate vytvoříme pro každou firemní aplikaci SAML SSO Server a pro každý server uživatelské skupiny (různě pojmenované). Skupina určuje, jakou autentizaci a podmínky musel přihlášený uživatel splnit. Skupiny využijeme ve Firewall politikách a můžeme různě řídit přístupy.

Nastavení prohlížečů pro ověření zařízení a využití SSO

Abychom mohli v prohlížeči využít Microsoft nebo work or school účet pomocí pověření (credentials) uložených v systému Windows 10 nebo 11, tak musíme provést určité nastavení. To je také potřeba pro využití některých podmínek z Conditional Access Policy.

Mozilla Firefox

Do Firefox verze 91 na Windows 10 nebo 11 byla doplněna nová vlastnost Windows single sign-on (SSO). Zapíná se v nastavení (How to enable Windows SSO login in Firefox)

  • klikneme na menu (tlačítko tří čárek) - Settings
  • záložka Privacy & Security
  • v části Logins and Passwords zatrhneme Allow Windows single sign-on for Microsoft, work, and school accounts
Firefox povolení Windows SSO

Google Chrome

Musíme nainstalovat oficiální Microsoft rozšíření z Chrome Web Store, které se jmenuje Windows Accounts (Microsoft uvádí, že alternativně je možno využít rozšíření Office). Vyžaduje minimálně Windows 10 verze 1703.

Nastavení pomocí Group Policy

Pro Firefox můžeme stáhnout administrativní šablony ADMX (Customizing Firefox Using Group Policy (Windows)) a využít pro konfiguraci pomocí skupinových politik.

Zapnutí Windows SSO provedeme v části User Configuration nebo Computer Configuration v cestě /Policies/Administrative Templates/Mozilla/Firefox/ politiku Windows SSO nastavíme Enabled.

Pro Chrome můžeme také stáhnout administrativní šablony ADMX (Set Chrome Browser policies on managed PCs) a pomocí nich automaticky nainstalovat rozšíření Windows Accounts.

Provedeme v části User Configuration nebo Computer Configuration v cestě /Policies/Administrative Templates/Google Chrome/Extensions/ politiku Configure the list of force-installed apps and extensions nastavíme Enabled a pod Show zadáme určení aplikace

ppnbnpeolgkicgegkbkbjmhlideopiji;https://clients2.google.com/service/update2/crx

Pro Microsoft Edge můžeme nastavit řadu parametrů pomocí skupinových politik (Download and configure Microsoft Edge for business). Například v části User Configuration nebo Computer Configuration v cestě /Policies/Administrative Templates/ Microsoft Edge/ politiky

  • Browser sign-in settings
  • Configure whether a user always has a default profile automatically signed in with their work or school account
zobrazeno: 4056krát | Komentáře [4]

Autor:

Související články:

Fortinet FortiGate a další

Bezpečnostní řešení firmy Fortinet. Nejvíce zaměřeno na Next Generation Firewall (NGFW) FortiGate.

Azure, Microsoft 365, Office 365, Cloud

Různá populární témata ohledně veřejného cloudu. Více zaměřeno na služby Microsoft, tedy IaaS, PaaS, SaaS Azure, adresářové služby Azure AD a hostované služby Microsoft 365 / Office 365.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře

  1. [1] Mícha

    Dobrý den, šlo by vynutit MFA při každém přihlášení do Appky v tomto případě do VPN na Hybrid Azure AD Join? Pokud nastavím frekvenci přihlášení například 1 hodinu, platí to i pro již připojené uživatelé? (Pokud budou připojení, tak jim za hodinu vyskočí upozornění, aby se znovu ověřili?)

    Díky

    Pondělí, 14.11.2022 17:59 | odpovědět
  2. [2] Samuraj

    odpověď na [1]Mícha: Odpověď na první otázku popisuje tento článek (nebo jsem ji nepochopil). Reautentizaci by muselo provádět VPN řešení (nejspíše klient). VPN se naváže, to že již autentizace není platná ji nijak neovlivní.

    Úterý, 15.11.2022 07:28 | odpovědět
  3. [3] Mícha

    odpověď na [2]Samuraj: Jde o to, že když jsme nasadili připojení přes AzureAD, kde vynucujeme MFA. Tak pro úplně první přihlášení je vynuceno MFA (správně, ideální stav). Po odpojení, například další den, jde uživatel do práce a poté, když přijde druhý den domů a přihlásí se, tak už MFA vynuceno není a Sign-in logů, jde vidět "Previously satisfied". Bohužel v Conditional Access Policy nelze pro FortiGate SSL VPN vynutit Sign-in Frequency "every time". PaPředpokládám, že v tom hraje roli PRT, jen mě zajímalo, zda existuje nějaká možnost vynucovat to pro každé přihlášení. Do určité míry by to mohlo vyřešit "Periodic reauthentication", jen podle dokumentace je tato možnost popsána takto:

    At 00:00, a user signs in to their Windows 10 Azure AD joined device and starts work on a document stored on SharePoint Online.

    The user continues working on the same document on their device for an hour.

    At 01:00, the user is prompted to sign in again based on the sign-in frequency requirement in the Conditional Access policy configured by their administrator.

    Úterý, 15.11.2022 09:37 | odpovědět
  4. [4] Samuraj

    odpověď na [3]Mícha: Jak v článku popisuji Sign-in frequency používám po několika hodinách a funguje to dle očekávání. Když se uživatel podruhé přihlašuje dříve, tak to projde SSO. Když později, tak se musí znovu přihlásit.

    Úterý, 15.11.2022 13:03 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách