www.SAMURAJ-cz.com 

20.04.2024 Marcela Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

FortiGate Admin HTTPS přihlášení pomocí SAML SSO vůči Azure AD

Pátek, 30.07.2021 14:38 | Samuraj - Petr Bouška |
FortiGate podporuje protokol SAML, který můžeme využít pro ověřování uživatelů. Jedno z míst, kde jej můžeme použít, je přihlašování administrátorů do webového rozhraní (GUI). A jeden ze zdrojů identity může být Microsoft Azure Active Directory (Azure AD). Ověřování vůči Azure AD nám dovoluje využít Conditional Access. Pomocí něj můžeme třeba nastavit vícefaktorové ověření (MFA). Nebo vyžadování spravovaného zařízení pro přístup.

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

Marně jsem se snažil zprovoznit autentizaci uživatelů do SSL VPN vůči Azure AD pomocí SAML SSO. Ač jsem našel i videa, kde to na verzi FortiOS 6.2.x funguje, tak u mne nikdy nezačne komunikace k MS (tak po upgradu na FortiOS 6.4.6 začalo fungovat). Pro test jsem vyzkoušel využití SAML pro přihlášení administrátorů k webové správě FortiGate. To se ukázalo jako relativně jednoduché a funkční. Ale dokumentace se hledá dost těžko.

SAML a FortiOS

SAML je zkratka pro Security Assertion Markup Language. Jde o otevřený standard, založený na XML, pro výměnu autentizačních a autorizačních informací mezi účastníky. Ti se obecně označují jako Identity Provider (poskytuje autentizaci - identitu, zde jde o Azure AD) a Service Provider (poskytuje službu, ke které se přihlašujeme, zde jde o FortiGate). Ještě zde vystupuje User Agent (typicky webový prohlížeč), kterého využívá uživatel. SAML se často používá pro Web Browser SSO (Single Sign On).

Podle informací je podpora SAML přidána do FortiOS od verze 6.2.0. A asi se různě měnila mezi verzemi 6.2.x, tedy hlavně možnosti konfigurace v GUI. Takže v mnoha návodech zmiňovaná položka User & Device > SAML SSO se u mne nenachází. Stejně tak nemohu konfigurovat FortiGate Telemetry v Security Fabric > Settings, kde má být zapnutí SAML, protože využívám VDOM. Asi se standardizovalo od FortiOS 6.4.0, ale tu nyní nemám k dispozici. Naštěstí nastavení v CLI je funkční.

Doplněno FortiOS 6.4.6

Nakonec jsem udělal upgrade na FortiOS 6.4.6, ale nastavení v GUI stejně nemám dostupné. Má se nacházet v Security Fabric > Fabric Connectors > Security Fabric Setup, ale tuto položku tam nemám. Asi proto, že pro Security Fabric (Security Fabric Prerequisites) musí být buď vypnuté VDOM nebo používat mód Split-Task VDOM (já používám Multi VDOM).

Ale narazil jsem na zajímavou věc. Když na Dashboard widgetu Security Fabric klikneme na první obrázek (Security Fabic Connection), tak je zde odkaz právě do nastavení. A tento odkaz funguje a kliknutím na Single Sign-On Settings se objeví hodnoty nastavené v CLI.

FortiGate - Security Fabric - Single Sign-On Settings

Dokumentace

Konfigurace Azure AD

Obecnou dokumentaci nalezneme v Application management documentation. Část praktických informací můžeme využít z návodu Tutorial: Azure Active Directory single sign-on (SSO) integration with FortiGate SSL VPN.

Vytvoření Non-gallery Enterprise application

  • Azure Active Directory admin center - Enterprise applications
  • New application - vytvoříme novou aplikaci
  • Create your own application - nevybereme aplikaci z galerie, ale vytvoříme vlastní
  • volba Integrate any other application you don't find in the gallery (Non-gallery)
  • zadáme jméno (třeba FortiGate Admin SAML) a Create
Azure AD - vytvoření Non-gallery Enterprise application

Přiřazení uživatelů

  • pod Manage klikneme na Users and groups
  • přidáme Azure AD uživatele nebo skupiny, kteří budou mít admin práva na FortiGate
Azure AD - Enterprise application - přiřazení uživatelů

Nastavení SAML SSO

  • pod Manage klikneme na Single sign-on
  • jako SSO metodu vybereme SAML

Nastavíme jednotlivé části konfigurace kliknutím na Edit.

1 Basic SAML Configuration

Zadáme adresy směrující na administrační rozhraní FortiGate. Můžeme použít IP adresy, ale lepší je FQDN. Může jít o interní (neveřejné) jméno i adresu. Kde to lze, musí být zatrženo Default. Níže je příklad vyplňovaných položek (cesty zůstávají stejné, změníme pouze hostname).

  • Identifier (Entity ID): http://fortigate.firma.local/metadata/
  • Reply URL (Assertion Consumer Service URL): https://fortigate.firma.local/saml/?acs
  • Sign on URL: https://fortigate.firma.local/saml/login
  • Logout Url: https://fortigate.firma.local/saml/?sls

2 User Attributes & Claims

  • možná to není nutné, ale funguje, když zde ponecháme pouze Unique User Identifier (Name ID) a ostatní smažeme
  • pak přidáme nový Add new claim, jméno username a hodnotu vybereme user.userprincipalname

3 SAML Signing Certificate

  • stáhneme a uložíme certifikát Certificate (Base64)

4 Set up FortiGate Admin SAML (je zde použit název aplikace)

  • hodnoty odsud budeme potřebovat pro nastavení na FortiGate
  • jde o SAML adresy Azure AD
Azure AD - Enterprise application - nastavení SAML SSO

Konfigurace FortiGate

Nahrání certifikátu

  • (Global/VDOM) > System > Certificates - Import - Remote Certificate

Nahrajeme certifikát, který jsme stáhli z Azure AD. Dostane automatické jméno, které můžeme volitelně změnit v CLI.

FW (global) # config certificate remote 
FW (remote) # show 
config certificate remote
    edit "REMOTE_Cert_1"
    next
end
FW (remote) # rename REMOTE_Cert_1 to Azure_SAML_SSO

Konfigurace SAML Service Provider

V některých verzích FortiOS bychom mohli použít GUI, ale jako jistota je využití CLI. Potřebujeme různé údaje z předchozích kroků, které použijeme v jednotlivých parametrech.

config system saml
    set status enable
    set default-profile "super_admin"
    set idp-entity-id "https://sts.windows.net/bb9528c8-3d14-4888-91fd-baeeb2XXXXXX/"
    set idp-single-sign-on-url "https://login.microsoftonline.com/bb9528c8-3d14-4888-91fd-baeeb2XXXXXX/saml2"
    set idp-single-logout-url "https://login.microsoftonline.com/bb9528c8-3d14-4888-91fd-baeeb2XXXXXX/saml2"
    set idp-cert "Azure_SAML_SSO"
    set server-address "fortigate.firma.local"
end

Některé návody uvádí nastavení certifikátu, který použije FortiGate pro komunikaci. Ten nemusíme nastavovat (Azure AD jej prý nekontroluje). Jinak můžeme nastavit libovolný (i když by as lepší byl nějaký důvěryhodný).

    set cert "Fortinet_Factory"

Stručný význam jednotlivých příkazů:

  • status enable - povolíme SAML
  • role service-provider - využijeme defaultní roli Service Provider
  • default-login-page normal - defaultní nastavení, kdy se můžeme přihlašovat jménem a heslem a je zde odkaz pro SAML SSO, pokud nastavíme sso, tak se vše přesměrovává na SAML
  • default-profile - jaký admin profil dostane nově vytvořený uživatel, defaultně se používá admin_no_access (nemá přístup do GUI, můžeme později uživateli ručně nastavit profil)
  • idp-entity-id - zkopírovaný údaj z Azure AD krok 4 Azure AD Identifier
  • idp-single-sign-on-url - zkopírovaný údaj z Azure AD krok 4 Login URL
  • idp-single-logout-url - zkopírovaný údaj z Azure AD krok 4 Logout URL
  • idp-cert - název certifikátu, který jsme nahráli na FortiGate v předchozím kroku
  • server-address - FQDN (nebo IP) FortiGate, musí odpovídat hostname, které jsme zadali v Azure AD Basic SAML Configuration

Uživatelé (správci)

  • (Global) > System > Administrators

Pokud neexistuje administrátor s daným jménem, tak se při prvním přihlášení uživatele automaticky vytvoří jeho SSO Admin účet. Případně můžeme vytvořit ručně v GUI Create New - SSO Admin nebo v CLI.

FortiGate SAML SSO automatické vytvoření uživatele

Problém se synchronizací HA clusteru

V praxi jsem narazil na problém. Po přihlášení uživatele, a automatickém vytvoření jeho účtu, se HA cluster hlásil out of sync a ani po čase nedošlo k synchronizaci. Zjistil jsem, že se na sekundární jednotku nesynchronizoval právě nově vytvořený uživatel. Když jsem se na ni přihlásil a vytvořil jej ručně, tak se stav změnil na synchronizovaný.

config system sso-admin
    edit "bouska@firma.cz"
        set accprofile "super_admin"
        set vdom "root"
    next
end

Debug SAML

Pro řešení problémů je nejlepší zapnout v CLI debug režim pro určitou oblast. Základní je debug vlastního SAML protokolu.

diagnose debug application samld -1

K tomu můžeme přidat debug obecného Admin GUI. Volitelně můžeme povolit zobrazení času u jednotlivých záznamů. A celkově zapneme debug.

diagnose debug application httpsd -1
diagnose debug console timestamp enable
diagnose debug enable

Pro vypnutí debug režimu můžeme použít

diagnose debug disable
diagnose debug reset

Přihlášení na FortiGate pomocí SAML SSO

Ve chvíli, kdy povolíme SAML, tak se lehce změní webová přihlašovací obrazovka. Vedle tlačítka Login se přidá odkaz or via Single Sign-On.

FortiGate SAML SSO přihlašovací dialog

Kliknutím dojde k přesměrování na Azure AD autentizaci. Standardním způsobem se přihlašujeme k Microsoftu. Zadáváme, vybíráme či se rovnou použije uživatel (jméno) a použijeme nastavenou ověřovací metodu.

MFA přihlášení 1 heslo

Když dojde k ověření, tak jsme přesměrování zpět na FortiGate. Pokud bylo úspěšné, a neexistuje uživatel s daným jménem, tak se vytvoří nový účet s nastaveným profilem.

Azure AD Conditional Access

V Azure AD můžeme využít Conditional Access Policy (zásady podmíněného přístupu) a nastavit různé speciální podmínky přihlášení do FortiGate rozhraní (vytvořené Enterprise application). Můžeme třeba vyžadovat vícefaktorovou autentizaci (MFA), povolit připojení pouze z určitých IP adres nebo Hybrid Azure AD joined zařízení.

Pozn.: Důležité je, že se nastavení a změny Conditional Access Policy neprojeví hned, ale až po 10 nebo 20 minutách. Hodně užitečné jsou Sign-ins logy, kde vidíme detaily, jak se politiky aplikovaly. Záznamy v těchto lozích se objevují až po 3 až 5 minutách.

Vytvoření Conditional Access politiky

  • otevřeme naši Enterprise aplikaci (FortiGate Admin SAML)
  • pod Security klikneme na Conditional Access a New policy

Pozn.: Pokud vytvoříme politiku zde, tak se automaticky omezí na naši aplikaci (nastaví se v Cloud apps or actions).

Konfigurace politiky

  • Users and Groups - vybereme, koho se má týkat (zde nejspíše All users)
  • Conditions - můžeme nastavovat různé podmínky, jako platforma zařízení a lokalita
  • Grant - můžeme řídit, kdy je přístup povolen nebo zakázán, pokud chceme více současných podmínek, tak musíme dole vybrat Require all the selected controls
  • Enable Policy - On - aktivujem ecelou politiku
  • Save - uložíme
Azure AD - Conditional Access Policy

Připojení pouze z vybraných zařízení

Líbí se mi možnost povolit připojení pouze z firemních zařízení (Require Hybrid Azure AD joined device). Je tu ovšem menší problém, pokud se přihlašujeme pomocí webového prohlížeče. Zjistit při přihlášení informace o zařízení je podporováno pouze v Microsoft Edge nebo Internet Explorer. Případně v Google Chrome po nainstalování rozšíření Windows 10 Accounts. Firefox a další nejsou podporovány.

Pozn.: Nové informace k této oblasti jsou obsaženy v článku Fortigate SSL VPN s Azure AD MFA z počítačů v doméně.

Pokud nesplňujeme podmínky, tak se zobrazují informace.

Azure AD - Conditional Access nepodporovaný prohlížeč Azure AD - Conditional Access počítač nepřipojený do domény
zobrazeno: 3411krát | Komentáře [2]

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] Tomas

    Opet paradni clanek ! Dekujeme :)

    Neděle, 01.08.2021 14:12 | odpovědět
  2. [2] hanzsez

    A jak je to s CLI pokud chci použít SSH?

    Čtvrtek, 30.03.2023 18:08 | 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