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.
Dokumentace
- FortiOS 6.2.0 Cookbook - SAML
- Technical Tip: Configuring SAML SSO login for FortiGate administrators with Azure AD acting as SAML IdP
- Technical Tip: Configuring SAML SSO login for FortiGate administrators with Okta acting as SAML IdP
- Configuring single-sign-on in the Security Fabric
- YouTube SAML SSO for Fortigate Administrators using Azure
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
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
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 vyberemeuser.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
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 SAMLrole service-provider
- využijeme defaultní roli Service Providerdefault-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ímesso
, tak se vše přesměrovává na SAMLdefault-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 Identifieridp-single-sign-on-url
- zkopírovaný údaj z Azure AD krok 4 Login URLidp-single-logout-url
- zkopírovaný údaj z Azure AD krok 4 Logout URLidp-cert
- název certifikátu, který jsme nahráli na FortiGate v předchozím krokuserver-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.
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.
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.
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
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.
Opet paradni clanek ! Dekujeme :)
A jak je to s CLI pokud chci použít SSH?