www.SAMURAJ-cz.com 

24.10.2021 Nina Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

FortiGate identifikace uživatelů pomocí FSSO - Fortinet Single Sign-On

Pondělí, 27.09.2021 15:00 | Samuraj - Petr Bouška |
Na FortiGate můžeme využít techniku Fortinet Single Sign-On (FSSO), kterou Fortinet označuje jako autentizační protokol pro transparentní ověření uživatelů. Díky ní přiřazuje k IP adrese jméno uživatele, který se z ní přihlásil. V komunikaci, kde se používá zdrojová IP adresa, tak můžeme místo IP adres využít uživatele a skupiny. FSSO má řadu různých možností a využití. Zde se ale zaměříme na napojení na Active Directory doménu a využití pouze pro identifikaci uživatelů v lozích.

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

Dokumentace

K tématu FSSO se mi nepovedlo nalézt moc obecný popis či rozumnější dokumentaci (nejrozsáhlejší článek se týká FortiOS 6.0.0). Pouze na různých místech (a k různým verzím) jsou krátké příklady určitého využití (a obsahují řadu chybných informací). Většinou jde o využití FSSO skupiny ve Firewall politice. Osobně mi to nepřijde zrovna bezpečné a myslím, že by se to dalo jednoduše zneužít. Ale určitě se najdou scénáře, kde je to užitečné a dostatečně bezpečné.

Již v době testování FortiGate, mi poradil člověk z Fortinetu, že se FSSO dá využít k identifikaci uživatelů v logu provozu. Když se uživatel přihlásí na svém počítači v interní síti, tak se na FortiGate dostane informace, že na této IP adrese je daný uživatel. V logu pak vidíme vedle zdrojové IP adresy také uživatelské jméno. Je to jednodušší než dohledávat, kdo má jakou IP adresu. A v případě dynamických adres by to bylo velmi náročné.

Různé články u Fortinetu

FSSO napojené na Active Directory Domain Services (AD DS)

Fortinet využívá termín Single Sign-On (SSO), protože se uživatel ověřuje v AD doméně a tento údaj využije FortiGate, který již nepožaduje nové ověření uživatele. Toto ověření není možné využít pro bezpečnostní akce, jako je přihlášení do VPN.

Princip je takový, že se v logu událostí (Microsoft Windows Security Event Log) na doménovém řadiči detekují události přihlášení uživatele. Z toho se zjistí jméno uživatele, doména a název stanice, který se přeloží na IP adresu. K jedné IP adrese může být přiřazen pouze jeden uživatel. Ale stejný uživatel může být na více IP adresách. Výjimka je terminálový server, kde můžeme nainstalovat agenta, pak zde může být více uživatelů, kteří se rozlišují podle portů.

Pozn.: V praxi se stále ukazují různí uživatelé přihlášení na doménových řadičích a Exchange serverech. Asi to je z principu fungování, kdy se v nějakých situacích při autentizaci uvádí jako zdroj DC nebo Exchange. Pro poštovní server je možná řešení, že se v Collector Agent dá sledovat přihlášení uživatelů na Exchange server (nezkoušel jsem).

FSSO můžeme zprovoznit ve dvou módech

  • dotazovací (Polling mode) - FortiGate se připojuje k doménovým řadičům a vzdáleně čte logy, může vytěžovat FortiGate zdroje
  • s agentem (Agent-based) - (doporučeno) využívá se agent, který zpracovává údaje o přihlášení a výsledky předává na FortiGate, má více možností konfigurace a je doporučen pro větší zátěž

FSSO bez agenta v dotazovacím módu

Pozn.: Na začátek moje důležitá zkušenost z praxe. Zprovoznil jsem tento režim při nasazení FortiGateFortiOS 6.2.3. V testu vše vypadalo v pořádku, ale hned po začátku provozu se u mnoha lidí objevil problém přerušování session (padalo spojení). Ukázalo se, že to způsobuje právě FSSO. Trochu více jsem popsal v kapitole Timeouty session - Poll Active Directory Server v FortiGate 6.2.3 bugy, debug a podpora. Ve FortiOS 6.4.6 jsem udělal pouze krátký test, kdy to vypadalo, že problémy nejsou, ale přešel jsem na variantu s agentem.

Komunikaci iniciuje FortiGate (Local FSSO Agent), takže musí mít umožněno komunikovat s doménovým řadičem přes určité porty. Zjednodušeně jde o TCP 445 pro přístup k logům, TCP 636 pro LDAPS (hledání skupin), případně TCP 3269 LDAPS na Global Catalog a UDP 53 pro DNS. Detailní popis je Technical Note: List of TCP and UDP ports, used by the FSSO Collector Agent software, Ports and Protocols - FSSO - Fortinet Single Sign-On.

V konfiguraci zadáváme uživatele, kterým se připojujeme na doménový řadič pro čtení logů. Ten může být členem skupiny Domain Users a potřebuje také členství ve skupině Event Log Readers. Informace nalezneme v článku Technical Tip: Restricting FSSO service account.

Konfigurace FSSO v Polling mode

  • (VDOM) > User & Authentication > LDAP Servers

Jako první musíme definovat LDAP server, který následně použijeme při vytváření konektoru. Ten se používá pro čtení uživatelských skupin z domény.

Více o konfiguraci LDAP serveru jsme si popsali v kapitole Definice LDAP serveru článku FortiGate uživatelé, skupiny a autentizace vůči LDAP (AD DS).

  • (VDOM) > Security Fabric > External Connectors (ve starších verzích šlo o Fabric Connectors)
  • Create New > Poll Active Directory Server

Následně vytvoříme externí konektor a zadáme požadované údaje:

  • IP adresu nebo FQDN doménového řadiče
  • uživatele, který má práva číst logy
  • vybereme vytvořený LDAP server
  • povolíme využití konektoru
  • můžeme vybrat uživatele, skupiny nebo organizační jednotky (v podstatě jde o filtr), které následně využijeme ve FSSO Group (pro zde popisovanou identifikaci všech uživatelů není potřeba nastavovat, pak se načítají všichni uživatelé a patrně také jejich členství ve všech skupinách), když zvolíme skupinu, tak se načítají pouze uživatelé, kteří jsou jejím členem
FortiGate External Connectors - Poll Active Directory Server

Konfigurace v CLI je následující.

config user fsso-polling
    edit 1
        set server "192.168.10.10"
        set user "fw-read"
        set password ENC xZvphx7....==
        set ldap-server "PDC"
        config adgrp
            edit "CN=G Test,OU=Firma,DC=firma,DC=local"
            next
        end
    next
end

Automaticky se také vytvoří Local FSSO Agent.

config user fsso
    edit "Local FSSO Agent"
        set server "127.0.0.1"
    next
end

Pozn.: Přijde mi logické, že musíme vytvořit konektory pro všechny DC v doméně, abychom měli kompletní informace o přihlášení uživatelů.

Výsledek - zobrazení uživatelů

  • (VDOM) > Dashboard > Users & Devices > Firewall Users

Od FortiOS 6.4 již nemáme sekci menu Monitor, ale vše bylo přesunuto do Widgetů na Dashboard. Jejich vzhled záleží na našem nastavení. Případně můžeme přidat Monitor Firewall Users.

V seznamu vidíme různě autentizované uživatele, například z VPN. Abychom viděli také uživatele získané z FSSO, tak musíme mít v pravém horním rohu zapnuté Show all FSSO Logons. Pak vidíme načtené uživatele, jejich IP adresu, případně do jakých skupin patří, před jakou dobou bylo detekováno jejich přihlášení a objem dat přenesený přes FW. Metoda je Fortinet Single Sign-On.

FortiGate Monitor Firewall Users
  • (VDOM) > Log & Report > Forward Traffic

Uživatele také vidíme (a můžeme podle nich vyhledávat) v logu provozu (nebo na FortiAnalyzer).

Použití v politikách

  • (VDOM) > User & Authentication > User Groups

Patrně od nějaké verze FortiOS můžeme využít skupiny z FSSO přímo v politikách. Dříve bylo nutné (a stále je to možnost) vytvořit lokální skupinu typu Fortinet Single Sign-On (FSSO) a do ní vložit skupiny, uživatele nebo OU z LDAPu (které jsme nastavili na konektoru). Využít můžeme také předdefinovanou skupinu SSO_Guest_Users (Default FSSO group).

  • (VDOM) > Policy & Objects > Firewall Policy

V politice pak jako zdroj nastavíme IP adresy (třeba rozsah interní sítě) a definovanou skupinu uživatelů.

Log FSSO událostí

  • (VDOM) > Log & Report > Events - User Events

Zprávy o FSSO se ukládají mezi uživatelské události (pokud máme logování zapnuto). Akce začíná FSSO, například FSSO-logon, FSSO-logoff, FSSO-polling-LDAP-server.

Troubleshooting FSSO

CLI můžeme využít různé příkazy, které nám zobrazí informace o FSSO. Třeba seznam načtených (přihlášených) uživatelů. Když jsme ve FSSO konektoru neurčili Users/Groups, tak v GUI u uživatelů nevidíme žádnou skupinu, ale v CLI se zobrazí (patrně) všechny LDAP skupiny uživatele. Pokud máme definovanou FSSO skupinu, tak se zobrazí i tato na konci.

FW (FWINT) # diagnose debug authd fsso list
----FSSO logons----
IP: 10.0.0.18  User: bouska  Groups: CN=Users,CN=Builtin,DC=firma,DC=local+CN=Domain Users,CN=Users,DC=firma,DC=local+CN=
Bouška Petr,OU=Firma,DC=firma,DC=local  Workstation:  
Total number of logons listed: 1, filtered: 0
----end of FSSO logons----

Trochu jiný výpis uživatelů vrátí příkaz diagnose debug fsso-polling user.

Stav serveru / připojení.

FW (FWINT) # diagnose debug enable
FW (FWINT) # diagnose debug authd fsso server-status
FW (FWINT) # 
Server Name       Connection Status     Version               Address
-----------       -----------------     -------               -------
Local FSSO Agent  connected             FSAE server 1.1       127.0.0.1

Stav klienta. Pokud bychom neměli aktivní konektor, tak vrátí fsso daemon is not running.

FW (FWINT) # diagnose debug fsso-polling client
Client Status: 
IP Address: 127.0.0.1
Serial Number: FG3H0E58xxxxxxxx-xxx
Connection state: ready
SEQ: hello(1), auth(1),logon_event(2)
Group Filter: 

STATS: 
	received hello packet(1)
	sent hello packet(1)
	sent auth packet(1)
	received get AD info packet(1)
	sent AD info packet(1)
	recv AD info packet(0)
	received get logon info packet(1)
	sent logon info packet(1)
	sent logon event packet(2)

Detailní informace o stavu spojení do AD DS.

FW (FWINT) # diagnose debug fsso-polling detail 1
AD Server Status(connected): 
ID=1, name(192.168.10.10),ip=192.168.10.10,source(security),users(0)
port=auto username=fw-read
read log eof=1, latest logon timestamp: Mon Sep 13 08:23:57 2021

polling frequency: every 10 second(s) success(1), fail(0)
LDAP query: success(0), fail(0)
LDAP max group query period(seconds): 0
LDAP status: connected

Group Filter: 
CN=G Test,OU=Firma,DC=firma,DC=local

Debug FSSO

Tradičně nejvíce informací získáme zapnutím debug režimu. Plný debug FSSO.

diagnose debug application fssod -1

Pro některé situace (události) se hodí také debug AUTHD, některá dokumentace uvádí -1 jinde 8256. Technical Tip: Useful FSSO Commands

diagnose debug application authd 8256

Můžeme povolit zobrazení času u jednotlivých záznamů a celkově zapneme debug.

diagnose debug console timestamp enable
diagnose debug enable

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

diagnose debug disable
diagnose debug reset

FSSO s agentem - Collector Agent AD access mode

FSSO bez agenta Fortinet popisuje jako moderní výhodné řešení. Ale řada specialistů na FortiGate mi doporučila jednoznačně využívat režim s agentem. Hlavně kvůli výkonovým dopadům, ale také díky lepší konfiguraci a filtrování.

Na Windows server v doméně instalujeme FSSO Collector Agent, který běží jako služba. Ten získává informace z Domain Controller agentů (DC agent), kteří jsou instalováni na doménových řadičích. Volitelně se může Collector Agent dotazovat DC napřímo bez agenta (Polling mode). Také může získávat informace z Terminal Server agentů (Citrix nebo VMware Horizon).

Working Mode a LDAP

Collector Agent tedy může pracovat v jednom ze dvou pracovních režimů (Working Mode):

  • DC Agent mode - doporučeno
  • Polling mode - pokud nemůžeme na DC instalovat agenty

DC Agent mode je standardní režim. Vyžaduje instalaci agentů na DC a jejich aktualizaci, po instalaci je třeba restart serveru. Nejde o službu, ale systémovou knihovnu dcagent.dll. Využívá konfiguraci v registrech HKEY_LOCAL_MACHINE\SOFTWARE\Fortinet\FSAE\dcagent.

Collector Agent může získávat informace o uživatelských skupinách z DC agenta. Volitelně může skupiny načítat FortiGate pomocí LDAP. Collector Agent provádí DNS vyhledávání, ověření skupin, kontroly stanic a předávání informací na FortiGate.

Komunikace a porty

Collector Agent poslouchá na UDP portu 8002, přes který posílá DC agent keepalive a informace o přihlášení. DC agent musí být na všech doménových řadičích a posílat informace na určitý Collector Agent, těch může být více kvůli redundanci.

Dokumentace uvádí, že na FortiGate předává informace pomocí TCP portu 8000. Ale je to tak, že Collector Agent poslouchá na portu 8000, ke kterému se FortiGate připojuje (na FortiGate zadáváme adresu agenta, ne naopak). Moc často se také nezmiňuje možnost zapnout SSL, pak se používá port 8001 pro FortiGate a 8003 pro DC agent.

AD access mode

Collector Agent má dvě metody přístupu k uživatelským informacím (AD access mode) Technical Tip: FSSO Windows Directory Access Methods - Standard versus Advanced Mode

  • Standard mode - doporučený, jednodušší, používá jmennou konvenci Domain\Username, nepodporuje vnořené skupiny, filtr na skupiny se definuje na Collector Agent
  • Advanced mode - používá LDAP konvenci CN=User, OU=Name, DC=Domain, podporuje vnořené skupiny, filtr na skupiny se definuje na FortiGate

Takto jsou módy popisovány na většině míst. Nerozumím ale popisu v dokumentu FortiOS 7.0.1 - Use Active Directory objects directly in policies

To use this feature, you must set FSSO Collector Agent to Advanced AD access mode. If the FSSO Collector Agent is running in the default mode, FortiGate cannot correctly match user group memberships.

Instalace agentů

Instalační soubory stáhneme z webu Fortinet Service & Support, menu Support - Firmware Download - Fortigate - záložka Download - proklikáme se k naší verzi a nakonec do složky FSSO. Jsou zde různé soubory, příklad:

  • FSSO_Setup_5.0.0301_x64.exe - obsahuje Collector Agent a DC Agent pro FortiOS 6.4.7
  • DCAgent_Setup_5.0.0301_x64.exe - obsahuje DC Agent pro FortiOS 6.4.7

Pomocí FSSO_Setup můžeme nainstalovat Collector Agent a následně provést vzdálenou instalaci DC agent na všechny doménové řadiče. Pokud potřebujeme instalovat DC Agent ručně, tak můžeme využít DCAgent_Setup.

Účet pro běh Collector Agent a potřebná oprávnění

Při instalaci Collector Agent zadáváme účet, pod kterým služba poběží. Fortinet doporučuje (naprosto šílené) oprávnění Domain Admin. Ale dále uvádí, že jako minimum stačí členství ve skupině Event Log Readers. Čekal bych, že při použití DC Agent, čte logy on a odesílá na Collector Agent, takže toto oprávnění nepotřebuje.

Fortinet to více nepopisuje. Když ovšem zkusíme provozovat agenta s minimálními právy, tak narazíme na problémy (nefunkčnost) a musíme procházet logy a hledat, proč věci nefungují. První věc, že účet musí mít práva na souborový systém na serveru, kde vytváří různé soubory (logy, seznam načtených uživatelů), a v registrech.

Dále asi narazíme na problém, že v Show Monitored DCs uvidíme naskakovat počet událostí i poslední hodnotu přihlášení uživatele. Při zobrazení logu uvidíme, že se uživatelská přihlášení detekují, ale v Show Logon Users bude prázdný seznam, a také na FortiGate se nic nepřenese.

Když si zobrazíme log, tak uvidíme události, z kterých se dozvíme, že se nepovedlo načíst skupiny, do kterých uživatel patří.

[ 2220] logon event(16027): len:31 monitorType:1 dc_ip: 192.168.10.10 time:1631019201 len:18
 data:BOUSKAP/FIRMA/bouska ip:10.0.1.10
[ 2220] ad_user_get_groups error: FIRMA(\\pdc.firma.local)/bouska 5
[ 2220] ad_user_get_localgroups error FIRMA(\\pdc.firma.local)/bouska: 5
[ 2220] cannot get group info for FIRMA/bouska
[ 2220] ad_user_get_groups_str():<NONE>

Standardně uživatelé (Domain Users) nemají oprávnění číst skupiny (Member Of) jiných uživatelů. Našemu uživateli toto oprávnění musíme přidat. To lze udělat pomocí Active Directory Users and Computers (ADUC). Na doméně, nebo OU s uživateli, půjdeme do nastavení (Properties) a v Security - Advanced přidáme uživatele (nebo si pro ten účel vytvoříme skupinu) a pro Descendant User objects zatrhneme Properties Read Member Of.

Další věc je detekce, že se uživatel odhlásil. Collector Agent mimo logů také používá metodu, kdy se připojuje na počítač pomocí WMI a detekuje přihlášeného uživatele. Využívá standardně port 445. Potřebuje dostatečná oprávnění pro vzdálený přístup nebo můžeme tyto kontroly vypnout. Přidání práva je složitější How can I create a user with WMI query permission?

Konfigurace Collector Agent

Detailnější informace nalezneme v dokumentaci Configuring collector agent settings. Konfigurace se provádí pomocí aplikace Configure Fortinet Single Sign On Agent.

  • Authentication - Password - zadáme heslo, kterým se bude přihlašovat FortiGate, max 15 znaků (default je fortinetcanada)
  • Log file size limit (MB) - 10 MB je dost malá hodnota pro logy, je potřeba zvětšit
  • Log logon events in separate logs - pro přehlednost se hodí oddělit určité události
  • Set ignore user list - vybereme uživatele, které nechceme sledovat (například administrátory a servisní účty), Technical Tip: How and why to use the 'Ignore User List' option in FSSO Collector Agent
  • Set Group Filters - můžeme určit povolené skupiny, údaje o přihlášení jejich uživatelů se posílají na FortiGate, pokud nezadáme, tak se posílají všechny skupiny a uživatelé (ne ti, které nesledujeme pomocí ignore list), hodí se omezit, aby se na FortiGate předávalo méně informací (i třeba seznam skupin)
  • Advanced Settings - záložka General - Use WMI to check user logoff - pokud nemáme přístup na klienty

    (prostup nebo oprávnění), tak můžeme vypnout Workstation Check
  • Advanced Settings - záložka Exchange server - můžeme nastavit sledování přihlášení uživatelů na Exchange server

Logy se standardně ukládají v cestě "c:\Program Files (x86)\Fortinet\FSAE\" a jde o soubory CollectorAgent.log, logon_event.log a fortilog.txt.

FSSO Collector Agent Configuration

Konfigurace FortiGate

Máme dvě možnosti, buď definujeme LDAP server na FortiGate a použijeme jej v konfiguraci konektoru. Nebo budeme uživatelské skupiny přijímat z Collector Agent.

  • (VDOM) > Security Fabric > External Connectors
  • Create New > FSSO Agent on Windows AD

Vytvoříme externí konektor a zadáme požadované údaje:

  • jméno konektoru
  • IP adresu nebo FQDN serveru, kde je instalovaný Collector Agent
  • heslo, které je nastavené v agentovi
  • můžeme přidat i další agenty pro vysokou dostupnost
  • volitelně můžeme vybrat certifikát a zapnout SSL
  • vybíráme zdroj skupin (User group source) - buď je zjišťuje Collector Agent nebo nastavíme Local a vybereme LDAP server, ve starších verzích se nastavení jmenovalo Collector Agent AD access mode a možnosti byly Standard a Advanced, tak je otázka, zda to stále souvisí s nastavením Collector Agent (v něm je také informace, pokud načítáme skupiny na FortiGate z LDAPu, tak by měl být agent v Advanced módu)
FortiGate External Connectors - FSSO Agent on Windows AD

Připadá mi, že je zde několik bugů. Pod Users/Groups vidím stále 0. Nápověda říká, že by to mělo ukazovat skupiny načtené z Collector Agent. Přitom načtené uživatele vidím v monitoru a při výpisu v CLI včetně skupin. Ale skupiny z AD nemohu ani zařadit do FSSO Group ani použít přímo v politice. Až po pokusech s heslem (popsané níže) se najednou skupiny načetly a je možno z nich vytvořit FSSO skupinu nebo je rovnou použít v politice.

FortiGate External Connectors

Když jsem prováděl první konfiguraci, tak jsem si na Collector Agent nastavil svoje heslo pro připojení z FortiGate. To heslo jsem použil v konfiguraci externího konektoru. Ale nedařilo se připojení a konektor byl stále ve stavu Disconnected. Vyzkoušel jsem řadu jiných (jednodušších) hesel a stále nic. Zapnul jsem na FortiGate debug authd a logovalo se

2021-09-06 15:40:37 _process_auth[PROVOZ]: server authentication failed, aborting
2021-09-06 15:40:37 disconnect_server_only[PROVOZ]: disconnecting

Collector Agent je zapnutí hesla volitelné, ale v konfiguraci FortiGate je povinné. Zkusil jsem na Collector Agent vypnout Require authenticated connection from FortiGate, ale stále se nespojilo. Nakonec jsem na obě strany zadal defaultní heslo (fortinetcanada) a poprvé se konektor připojil. Zkusil jsem na agentovi vypnout heslo a zůstalo spojené.

Až když jsem chtěl vše popsat, tak jsem udělal znovu pokus změnit heslo a překvapivě vše s jiným heslem fungovalo. A dokonce se najednou načetly skupiny. Udělal jsem několik pokusů a nyní funguje jakékoliv heslo, pokud je na agentovi stejné nebo vypnuté.

Konfigurace v CLI, kde můžeme nastavit i další položky (třeba port jiný něž 8000)

config user fsso
    edit "PROVOZ"
        set server "10.0.0.179"
        set password ENC 3fpG2O....==
    next
end
zobrazeno: 467krát | Komentáře [1]

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.

Bezpečnost

Nástroje zajišťující bezpečnost. Primárně Firewall a podobné.

Pokud se Vám článek líbil, tak mne potěšíte, když uložíte odkaz na některý server:

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

Komentáře

  1. [1] Cromac

    Zdravím,

    podařilo se Vám rozchodit DC-Agent FSSO zasílání logon eventu přes SSL/TLS? Fortigate vs. Collector-Agent funguje bez problémů přes SSL/TLS, ale zasílání logon eventů nikoliv. Dané DC není vůbec vidět v "Show Monitored DCs". Jakmile se vypne na DC-Agentovi SSL/TLS tak logony začnou chodit. Ptám se ještě předtím než otevřu case s Fortinetem, protože to je vždy až ta poslední možnost :-(.

    Díky

    Cromac

    Úterý, 19.10.2021 16:43 | 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