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.

 

RouterOS v6.29

What’s new in 6.29 (2015-May-27 11:19):

  • ssh server – use custom generated DH primes when possible;
  • ipsec – allow to specify custom IP address for my_id parameter;
  • ovpn server – use subnet topology in ip mode if netmask is provided (makes android & ios clients work);
  • console – allow ‘-‘ characters in unknown command argument names;
  • snmp – fix rare bug when some OIDs where skipped;
  • ssh – added aes-ctr cipher support;
  • mesh – fixed kernel crash;
  • ipv4 fasttrack fastpath – accelerates connection tracking and nat for marked connections (more than 5x performance improvement compared to regular slow path conntrack/nat) – currently limited to TCP/UDP only;
  • added ~fasttrack-connection~ firewall action in filter/mangle tables for marking connections as fasttrack;
  • added fastpath support for bridge interfaces – packets received and transmitted on bridge interface can go fastpath (previously only bridge forwarded packets could go fastpath);
  • packets now can go half-fastpath – if input interface supports fastpath and packet gets forwarded in fastpath but output interface does not support fastpath or has interface queue other than only-hw-queue packet gets converted to slow path only at the dst interface transmit time;
  • trafflow: add natted addrs/ports to ipv4 flow info;
  • queue tree: some queues would stop working after some configuration changes;
  • tilegx: enable autoneg for sfp ports in netinstall;
  • health – fix voltage on some RB4xx;
  • romon – fix 100% CPU usage;
  • romon – moved under tools menu in console;
  • email – store hostname for consistency;
  • vrrp – do not reset interface when no interesting config changes;
  • fixed async. ppp server;
  • sstp – fixed router lockup.
  • queue tree: some queues would stop working after some configuration changes;
  • fixed CRS226 10G ports could lose link (introduced in 6.28);
  • fixed FREAK vulnerability in SSL & TLS;
  • improved support for new hEX lite;

To upgrade, click “Check for updates” in your RouterOS configuration interface, or head to our download page: http://www.mikrotik.com/download

Mikrotik: RouterOS v6.15

Mikrotik ha rilasciato la versione v6.15 del RouterOS per risolvere i problemi relativi all’upgrade dalla versione v5 alla v6.14.

Novità nella versione v6.15 (2014-Jun-12 12:25):

  • fixed upgrade from v5 – on first boot all the optional packages were disabled;
  • fixed problem where sntp server could not be specified in winbox & webfig;
  • metarouter – make openwrt work on ppc metarouter again;

L’aggiornamento è disponibile nella pagina di download del sito Mikrotik.

 

Mikrotik: RouterOS v6.12

Novità nella versione 6.12 (2014-Apr-14 09:27):

  • l2tp – fixed "no buffer space available" problem;
  • ipsec – support IPv4 over IPv6 and vice versa;
  • pppoe – report correctly number of active links;
  • updated timezone information;
  • many fixes for CRS managed switch functionality – particularly improved VLAN support, port isolation, defaults;
  • added trunk support for CRS switches;
  • added policing support for CRS switches;
  • www – added support for HTTP byte ranges;
  • lte – provide signal strength using snmp and make ‘info once’ work in console;

Mikrotik: RouterOS v6.11 rilasciato

Il 20 marzo 2014 Mikrotik ha rilasciato la versione 6.11 del suo sistema operativo per router (RouterOS), le nuove funzionalità aggiunge/rimosse sono:

  • ipsec – fix aes-cbc hardware acceleration on CCR with key sizes 192 and 256;
  • wireless – add auto frequency feature;
  • ovpn – fixed TLS renegotiation;
  • ovpn – make bridge mode work with big packets (do not leave extraneous padding);
  • ovpn – fixed require-client-certifcate;
  • ppp – revert RADIUS NAS-Port behaviour, report tunnel interface id;
  • ppp – mppe encryption together with mrru locked the router;
  • dhcp – added support for DHCP option 138 – list of CAPWAP IPv4 servers;
  • quickset – added Guest Network setup to Home AP mode;
  • console – no longer required to supply value of ‘/routing bgp instance vrf’ property ‘instance’ for ‘add’ command;
  • ethernet – added option to enable rx/tx flow control (will be disabled by default);
  • ethernet – added ability to specify advertised modes for copper ports;
  • fixed 100% cpu usage on CCRs;
  • ssl – not finding CRL in local store for any certificate in trust chain will cause connection to fail;
  • lte – support for Huawei ME609 and ME909u-521;

L’aggiornamento è scaricabile gratuitamente, se la licenza in possesso lo consente, dal seguente link (http://www.mikrotik.com/download).