Autenticazione Single-Sign-On con Fortinet FortiGate e Active Directory

Negli ultimi tempi l’utilizzo di Internet in modo troppo superficiale da parte degli utenti sta creando non pochi problemi agli amministratori di rete per filtrare virus e malware o anche semplicemente per limitare completamente l’accesso ad Internet.

Un primo approccio è quello di configurare il Firewall per limitare l’accesso ad Internet basandosi sull’indirizzo IP della macchina interna da cui proviene la richiesta. In questo modo si è costretti ad utilizzare indirizzi IP statici, o reservation nel server DHCP, e questo preclude la possibilità di creare policy ad-hoc per gli utenti.

Un secondo approccio è quello di usare un proxy server con autenticazione a livello utente così da spostare il discriminante dal livello fisico (indirizzo IP) a livello logico (utente). I vantaggi di questo metodo sono che si possono usare indirizzi dinamici e si può gestire l’accesso allo stesso computer da parte di più utenti. Il contro è quello di dover installare un server proxy e di dover configurare tutti i browser per utilizzarlo. E’ disponibile una guida all’implementazione di un server a questo link Installazione del proxy server squid in ambiente windows.

Il terzo approccio invece è lo scopo di questa guida, avendo a disposizione un FortiGate è possibile, senza nessuna configurazione lato client, autenticare in modo trasparente gli utenti tramite il protocollo NTLM e definire delle policy di accesso ad Internet in funzione del gruppo AD di appartenenza dell’utente.

Questa guida si riferisce alla configurazione del FortiGate con release v5.2.2 build642 del FortiOS.

Introduzione all’FSSO basato su agent

Fortinet Single Sign-On (FSSO), tramite l’utilizzo di un agente installato in uno o più computer è in grado di monitorare i logon degli utenti e passare queste informazioni al FortiGate. Quando un utente esegue il logon su un PC, FSSO:

  • rileva l’evento e registra il nome del PC, dell’utente e del dominio
  • risolve il nome del PC
  • determina a quali gruppi l’utente appartiene
  • invia queste informazioni al FortiGate

Quando successivamente un utente accede ad Internet il FortiGate è in grado di riconoscere l’utente, a quali gruppi appartiene e di conseguenza garantire o negare l’accesso a seconda delle policy impostate.

In ogni Domain Controller è necessario installare un Domain Controller (DC) agent, che invierà i dati di accesso ad un singolo Collector (CA) agent da installare in un altro server o in un DC.

Come vedremo più avanti esiste anche un ulteriore tipo di agent Citrix/Terminal Server (TS) agent.

Quanto descritto sopra è schematizzato nello schema seguente:

FSSO Schema di funzionamento
FSSO Schema di funzionamento

Installazione dell’Agente

Per prima cosa scarichiamo il programma FSSO_Setup direttamente dal sito web Fortinet Support, l’ultima versione disponibile è la 4.3.0161 (FSSO_Setup_4.3.0161_x64.exe), ed eseguiamo il programa in un Domain Controller.

Il programma mostra la Splash Screen con il Setup Wizard:

FSSO Setup Wizard
FSSO Setup Wizard

Invitandoci ad accettare i termini della licenza e a scegliere un percorso di installazione.

Nella schermata successivamente si devono inserire le credenziale di un utente con il quale verrà eseguito il programma, possiamo inserire i dati dell’amministratore di dominio o di un altro account a nostro piacimento:

FSSO User
FSSO User

E’ possibile scegliere alcuni parametri di installazione che potranno essere comunque cambiati successivamente in qualsiasi momento:

  • Monitor user logon events and send the information to FortiGate
  • Server NTLM authentication requests coming from FortiGate

Entrambe le opzioni sono abilitate di default.

  • Select Standard to use Windows domain and username credentials.
  • Select Advanced if you will set up LDAP access to Windows Directory.

Anche qui lasciamo per ora abilitate le opzioni di default.

FSSO Parametri
FSSO Parametri

Con il successivo Next l’installazione del collettore verrà completata e avremo modo di installare il DC Agent su questa macchina, abilitiamo la spunta e clicchiamo su Finish.

La maschera successiva ci invita a selezionare l’IP e la porta del collettore, in caso sia stato installato sulla stessa macchina i parametri dovrebbero essere già preimpostati in caso contrario inserire quelli corretti:

FSSO DC Agent
FSSO DC Agent

Dopo aver impostato i parametri di rete è necessario inserire i domini che dovranno essere monitorati dall’agente, nel caso siano presente più domini è possibile selezionarli a piacimento, altrimenti selezioniamo l’unico disponibile:

FSSO Agent Domain
FSSO Agent Domain

In caso di Active Directory con molti oggetti, per non rallentare o comunque per non sovraccaricare il lavoro dell’Agent con informazioni inutile, è possibile specificare gli utenti che non dovranno essere monitorati dall’agent. Questi utenti non saranno abilitati ad autenticarsi tramite SSO nel FortiGate.

FSSO Agent Users
FSSO Agent Users

Nell’ultima schermata è possibile specificare in quali Domain Controller installare l’Agent e il tipo di modalità:

  • DC Agent Mode
  • Polling

Selezioniamo la modalità DC Agent Mode e iniziamo l’installazione premendo Next:

FSSO DC
FSSO DC

Terminata l’installazione ci verrà richiesto di riavviare il Domain Controller:

FSSO reboot
FSSO reboot

Configurazione dell’Agente

Abbiamo detto in precedenza che il SSO del FortiGate gestisce gli utenti a livello di gruppo, creiamo quindi un Global group di tipo Security con il nome G_Internet_FullAccess e inseriamo al suo interno due utenti per prova:

AD group
AD group

Ora possiamo lanciare il programma Fortiniet Single Sign On Agent Configuration per procedere con la configurazione del SSO.

FSSO Agent Configuration
FSSO Agent Configuration

Verificare lo stato dell’agente sia in RUNNING, come riportato nel riquadro in alto a destra e che entrambe le spunte in alto siano selezionate:

  • Monitoring user logons events
  • Support NTML authentication

Nel riguardo Logging è possibile selezionare varie opzioni per la configurazione dei log dell’Agente, nella sezione Authentication è possibile richiedere al FortiGate di autenticarsi (la password di default è fortinetcanada).

Cliccando su Show Monitored DC è possibile visualizzare lo stato dei DC Agents installati ed eventualmente abilitarli:

FSSO DC Agent Satus
FSSO DC Agent Satus

Il pulsante Select Domains To Monitor consente di modificare quali sono i Domini monitorati dall’agent.

Visto che non vogliamo passare tutte le informazioni al FortiGate clicchiamo sul pulsante Set Group Filters e selezioniamo i gruppi che ci interessano gestire ai fini dell’accesso ad Internet.

Di default non dovrebbe comparire nessun gruppo, pertanto cliccare su Add per creare un nuovo gruppo. Spuntare la voce Default filter e tramite il pulsante Advanced selezionare i gruppi che volete gestire, nel nostro caso selezioniamo solamente il gruppo G_Internet_FullAccess e clicchiamo su Ok, la finestra dovrebbe presentarsi in questo modo:

FSSO Group Filter
FSSO Group Filter

Chiudere la configurazione e tornare alla finestra principale.

Iniziamo a verificare se tutto è configurato correttamente e il Collector inizia a reperire i dati delle logon degli utenti, clicchiamo sul pulsante Show Logon Users e se tutto sta funzionando dovremmo vedere i dati degli utenti:

FSSO User list
FSSO User list

A questo punto la configurazione lato Windows è terminata iniziamo quella nel FortiGate.

Dopo aver eseguito l’accesso al pannello di configurazione Web, aprire il tab User & Device -> Authentication -> Single Sign-On che dovrebbe apparire vuoto.

FortiGate menu
FortiGate menu

Clicchiamo su Create New e inseriamo i dati di collegamento al Collector Agent:

FortiGate Sign-On Server
FortiGate Sign-On Server

Dopo aver inserito il Name, l’Ip e la Password cliccare su Apply & Refresh, dovrebbero automaticamente apparire i Gruppi che abbiamo preventivamente configurato nel Collector Agent.

 

Verifica della comunicazione FortiGate <-> Active Directory

Possiamo verificare la connessione FortiGate <-> Collector Agent cliccando sul pulsante Show Service Status del Collector Agent, dovrebbero essere riportati i dati del FortiGate che abbiamo appena configurato.

FSSO Status
FSSO Status

E’ venuto il momento di eseguire il logon su diversi pc con diversi utenti, alcuni facenti parte del gruppo G_Internet_FullAccess altri no e verifichiamo se tutto è configurato correttamente nel FortiGate.

Tramite interfaccia web aprire Log & Report -> Event Log -> User per verificare gli eventi di logon degli utenti:

FortiGate Events log
FortiGate Events log

Da shell invece possiamo utilizzare il comando diagnose debug authd fsso list che dovrebbe visualizzare qualcosa del tipo:

FortiGate console
FortiGate console

Il Single Sign-On tra FortiGate e Active Directory sta funzionando, ora vediamo come sfruttarlo per creare delle policy di accesso ad Internet.

Configurazione Policy di accesso ad Internet

I gruppi Active Directory non possono essere usati direttamente nel FortiGate per le policy di sicurezza, dobbiamo pertanto creare dei gruppi locali e inserirci i gruppi Windows.

Per creare un nuovo gruppo locale andiamo in User & Device -> User -> User groups e clicchiamo su Create New, assegniamo un nome al gruppo (FSSO_Internet_FullAccess) e impostiamo del tipo Fortinet Single Sign-On (FSSO). All’interno dei membri dobbiamo selezionare il gruppo G_Internet_FullAccess (visibile da Active Directory).

I membri di questo gruppo saranno popolati dinamicamente e saranno i membri del gruppo G_Internet_FullAccess creato in precedenza in Active Directory.

L’ultima operazione che ci rimane da fare è quella di configurare una Policy per filtrare l’accesso ad Internet per i membri del gruppo, supponiamo che l’accesso sia stato preventivamente bloccato per tutti.

Apriamo Policy & Objects -> Policy -> IPv4 e clicchiamo su Create New, la policy sarà una normale policy del tipo IN -> OUT con l’unica accortezza di selezionare il gruppo FSSO_Internet_FullAccess come utenti sorgente:

FortiGate Policy
FortiGate Policy

Non ci rimane da fare altro che provare a loggarci su due PC con due diversi utenti, uno appartenente al gruppo G_Internet_FullAccess e uno no, e verificare che solo uno dei due ha accesso ad internet.

 

Remote Desktop Services

Il SSO configurato sopra funziona perfettamente fino a quando gli utenti non utilizzano un server configurato come RDS (Remote Desktop Services). In questo caso infatti non appena un utente autorizzato ad accedere ad Internet effettua il logon tutti gli utenti sullo stesso server possono navigare.

Questo perché sostanzialmente il FortiGate sblocca l’IP non sapendo che su quell’IP lavorano più utenti contemporaneamente.

Il problema si risolve installando su ogni server RDS uno specifico client scaricabile sempre dal sito del Supporto Fortinet che si chiama TSAgent_Setup_x.x.xxxx.exe, nel notro caso TSAgent_Setup_4.3.0161.exe.

Una volta scaricato l’eseguibile mandarlo in esecuzione e cliccare sui vari Next, l’unico parametro da configurare è l’IP del Collector Agent:

TSAgent
TSAgent

Una volta installato il TSAgent sarà visibile all’interno del Connector Agent sotto la voce Show Monitored DCs:

DC Agent Status
DC Agent Status

Se ora provate ad eseguire il logon su un server con due account diversi, uno abilitato e uno no, il FortiGate dovrebbe essere in grado di differenziarli e consentire l’accesso ad Internet al solo utente autorizzato.

Nel caso riportato in figura user1 è autorizzato, user2 no:

Test finale
Test finale

Per un approfondimento ai sistemi di autenticazione del FortiOS è disponibile il documento FortiOS Handbook – Autentication for FortiOS 5.0.

 

Una risposta a “Autenticazione Single-Sign-On con Fortinet FortiGate e Active Directory”

  1. grazie, ben scritto. Mi occupo di sicurezza utilizziamo tecnologia Fortinet questo articolo mi e’ servito da compendio

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *