Network Access Quarantine Control: quando le credenziali non bastano più.

Autore: Dott. Stefano Fio

 

 

Abstract:

 

“Network Access Quarantine Control” è una nuova caratteristica del Server 2003 di Microsoft.

Tale feature, ritarda l’accesso ad un network privato finché la configurazione del client remoto sia stata esaminata e validata da uno speciale script impostato dall’amministratore. Senza l’ausilio del Network Access Quarantine Control, verrebbero verificate solo le credenziali; in tal modo qualunque utente in possesso delle giuste credenziali, potrebbe connettersi anche se il client utilizzato non risponde alle network policy aziendali. Un esempio può essere l’utilizzo di un client senza un software antivirus installato nonostante la network policy aziendale lo richieda.

 

 

            Nella fase di connessione al server, il client viene autenticato e gli viene assegnato un indirizzo ip. A questo punto la nuova connessione viene posta dal server di accesso remoto in uno stato di quarantena che garantisce al client accesso limitato al network privato.

            Nel contempo sul client parte l’esecuzione di un particolare script. Non appena lo script notifica al server la sua corretta esecuzione ed il rispetto della policy aziendale da parte del  client, lo stato di quarantena viene rimosso e viene garantito al client un accesso completo al network.

 

            Lo stato di quarantena nel quale viene posta ogni connessione remota è costituito da:

 

Ø        Un gruppo di filtri sui pacchetti che restringono il traffico che può essere inviato da e verso un client remoto in stato di quarantena, queste regole vengono chiamate “quarantine packet filters”.

Ø        Un “quarantine session timer” che provvede a disconnettere un client in stato di quarantena allo scadere del tempo impostato.

 

Queste restrizioni possono essere impostate sia insieme che singolarmente.

 

E’ bene sottolineare che il Network Access Quarantine Control non è definibile come una security solution, ma come un sistema in grado di evitare  l’aggancio al network privato di unsafe clients; non ha quindi l’obiettivo di proteggere la rete privata da utenti che hanno in qualche modo ottenuto un set di credenziali valido. E’ comunque sicuro che in tal modo mitighiamo i potenziali danni che un remote client potrebbe arrecare al network privato.

 

Per capire il funzionamento del Network Access Quarantine Control  ed il suo modus operandi, confronteremo un sistema di accesso remoto Windows-based standard con una configurazione basata su quarantena.

 

 

 

            Componenti di un sistema di accesso remoto Windows.

 

La  Figura 1 mostra i componenti un sistema di accesso remoto Windows, integrato con  un sistema RADIUS (Remote Authentication Dial-in User Service) per l’autenticazione.

 

Figura 1.

 

 

 

            Questa configurazione è composta da:

 

 

Ø        Clients per l’accesso remoto

 

o         Computers con sistema operativo Microsoft connessi al server di accesso remoto tramite VPN o dial-up. I clients remoti possono utilizzare una connessione configurata manualmente oppure un Connection Manager (CM) profile.

 

Ø        Server per l’accesso remoto

 

o         Computer con sistema operativo della famiglia Windows Server 2000 o Windows  Server 2003, con il servizio RRAS (Routing and Remote Access service), configurato per Windows Authentication o RADIUS Authentication.

 

Ø        RADIUS server (facoltativo)

 

o         Computer con sistema operativo della famiglia Windows Server 2000 o Windows  Server 2003, con Internet Authentication Service (IAS). L’uso del servizio IAS/RADIUS risulta obbligatorio se il RRAS è configurato per tale tipologia di autenticazione.

 

 

 

 

 

Ø        Accounts database

 

o         Per networks basati su Windows 2000 o Windows Server 2003, viene utilizzato Active Directory per la gestione degli utenti e delle loro dial-in properties.

 

Ø        Remote access policy (RAP)

 

Vengono impostate sul RRAS oppure sull’IAS. Provvedono a regolare autorizzazioni e restrizioni per le connessioni remote.

 

 

Componenti di un Network Access Quarantine Control.

 

La Figura 2 mostra i componenti di un sistema di accesso remoto Windows based con Network Access Quarantine Control e RADIUS come authentication provider.

 

Figura 2.

 

 

Questa nuova configurazione è composta da:

  

Clients compatibili con il sistema di quarantena:

 

o         Windows Server 2003

o         Windows Xp Pro/Home

o         Windows 2000

o         Windows Me / 98 SE

 

Queste versioni di sistema operativo supportano i CM (Connection Manager) profiles, creati tramite il Connection Manager Administration Kit (CMAK) che ritroviamo nel Windows Server 2003. Il CM profile contiene:

 

 

Ø        Un’azione appena successiva alla connessione, che prevede l’esecuzione di un “Network Policy requirements script” (esempio di seguito). Tale azione verrà configurata in fase di creazione del CM tramite il CMAK (Connection Manager Administration Kit).

Ø        Un “Network Policy requirements script”, con l’obiettivo di validare la configurazione del client. Al termine dell’esecuzione se il client soddisfa le policy, lo script lancerà un “Notifier” con gli appropriati parametri. Se invece non soddisfa le policy, potrebbe ridirezionare il client ad una Web page, all’interno delle risorse di quarantena che descrive come configurare il pc per soddisfare le network policy.

Ø        Il “Notifier”.

Questo componente si preoccupa di informare il quarantine remote access server della corretta esecuzione dello script. Il “Notifier” può essere impostato tramite l’Rqc.exe, presente all’interno dei “Resource Kit Tools” del Windows Server 2003 senza SP1 oppure, installando il “Connection Manager Administration Kit”, ritroveremo Rqc.exe nel folder Program Files\CMAK\Support, se SP1 è installata

 

Quarantine-compatible Remote Access Server:

 

Ø        Un computer con sistema operativo della famiglia Windows Server 2003 ed RRAS configurato in modo da supportare il “listener component” ed i RADIUS VSAs (Vendor Specific Attributes) MS-Quarantine-IPFilter e MS-Quarantine-Session-Timeout.

Ø        Il componenteListener”.

Questo componente resta in ascolto dei messaggi che il remote quarantine client invia al termine dell’esecuzione dello script. E’ possibile creare un proprio specifico listener o più semplicemente si può utilizzare l’Rqs.exe reperibile anch’esso all’interno dei “Resource Kit Tools” del Windows Server 2003 senza SP1 oppure, installando il “Connection Manager Administration Kit” nel folder Program Files\CMAK\Support folder, se la SP1 è installata.

 

La presenza di questi componenti sul server permette  la modalità “Quarantine”.

 

 

Quarantine-compatible RADIUS Server:

 

Se il RRAS è stato impostato per l’utilizzo di RADIUS per l’autenticazione, bisognerà installare un Windows Server 2003 con IAS abilitato, in grado di supportare la configurazione di MS-Quarantine-IPFilter e MS-Quarantine-Session-Timeout (VSAs). Il primo filtro si preoccupa di impostare i qurantine filters, il secondo gestisce la durata massima di una sessione in quarantena.

 

Quarantine Resources

 

Le risorse per le sessioni in quarantena possono essere rappresentate da DNS Server, da un Web Server con accesso anonimo dal quale si potrebbe scaricare l’ultima versione del profilo CM. In sintesi tra queste risorse inseriamo tutto ciò che vogliamo sia raggiungibile da un quarantine client. Questo traffico sarà regolato dalla VSA            MS-Quarantine-IPFilter.

 

Accounts Database

 

Il managing  degli accounts e le rispettive proprietà dial-in verranno gestite da Active Directory. Risulta comunque possibile utilizzare Windows NT 4.0.

 

 

Quarantine Remote Access Policy

 

Impostare le QRAP, significa settare le due VSA MS-Quarantine-IPFilter e MS-Quarantine-Session-Timeout (Fig.3).

Tramite la MS-Quarantine-IPFilter, vengono autorizzati i pacchetti di input e di output che rispondono a talune regole tipo:

Ø        Il traffico generato da Rqc.exe e Rqs.exe sulla sua porta di default 7250 TCP

Ø        Il traffico legato ai messaggi DHCP tra il client ed il server

Ø        Il traffico necessario per accedere alle “Quarantine Resource

 

Tramite MS-Quarantine-Session-Timeout impostiamo un timer, allo scadere del quale, se lo script del remote client non ha notificato l’esito positivo, verrà terminata la connessione.

 

Figura 3.

 

 

 

 

 

Network Policy requirements script.

 

' *****************************************************************************

' SAMPLE SCRIPT - Passwd.vbs

' *****************************************************************************

' Questo script verifica che la pwd dell'utente soddisfi i requisiti

' di complessità richiesti dalla Network Policy aziendale.

'

' Sistemi supportati

'               Windows 2000

'               Windows 2000 Advanced Server

'               Windows 2000 Professional Edition

'               Windows 2000 Server

'               Windows Server 2003

'               Windows XP

'               Windows XP Service Pack 2

'

' L' script darà come Returns

'     0  - Se i requisiti di complessità sono soddisfatti

'     1 -  Se i requisiti di complessità non sono soddisfatti.

'

'

Option Explicit

 

Const PASSWORD_MAX_AGE = 50

Const PASSWORD_MIN_AGE = 2

Const PASSWORD_MIN_LEN = 9

Const PASSWORD_MIN_HISTORY_LEN = 12

 

Const  SECONDS_IN_DAY = 60000

 

Dim sintCurrMaxPasswdAge

Dim sintCurrMinPasswdAge

Dim sintCurrMinPasswdLen

Dim sintCurrMinPasswdHistLen

 

Sub GetCurrPasswdPolicyValues()

    Dim netObj, oUser

    Dim domain, user

   

    Set netObj = CreateObject("WScript.Network")

 

    If (Not IsObject(netObj)) Then

       WScript.Echo("Impossibile creare il  Network Object")

       WScript.Quit (1)

    End If

    domain = netObj.UserDomain

    user = netObj.UserName

 

    Set oUser = GetObject("WinNT://" & domain & "/" & user & ",user")

 

    If (Not IsObject(oUser)) Then

       WScript.Echo("Impossibile effettuare una  Query per la password policy")

       WScript.Quit (1)

    End If

   

    sintCurrMaxPasswdAge = CInt(oUser.MaxPasswordAge/ SECONDS_IN_DAY)

    sintCurrMinPasswdAge = CInt(oUser.MinPasswordAge/ SECONDS_IN_DAY)

    sintCurrMinPasswdLen = CInt(oUser.MinPasswordLength)

    sintCurrMinPasswdHistLen = CInt(oUser.PasswordHistoryLength)

 

    Wscript.Echo("System's Current Password Policy Strength Values: ")

    WScript.Echo("Maximum Password Age: " & sintCurrMaxPasswdAge)

    WScript.Echo("Minimum Password Age: " & sintCurrMinPasswdAge)

    WScript.Echo("Minimum Password Length: " &  sintCurrMinPasswdLen)

    WScript.Echo("Minimum Password History Length: " & sintCurrMinPasswdHistLen)

   

    set oUser = Nothing

    set netObj = Nothing

End Sub

 

Function IsValidPasswdPolicy()

    IsValidPasswdPolicy = _

                (sintCurrMaxPasswdAge <= PASSWORD_MAX_AGE) and _

         (sintCurrMinPasswdAge >= PASSWORD_MIN_AGE) and _

                 (sintCurrMinPasswdLen >= PASSWORD_MIN_LEN) and _

                 (sintCurrMinPasswdHistLen >= PASSWORD_MIN_HISTORY_LEN)

End Function

 

Sub Main

    GetCurrPasswdPolicyValues()

 

    If (IsValidPasswdPolicy) Then

        WScript.Echo("La password policy soddisfa i requisiti")

        WScript.Quit 0

    Else

        WScript.Echo("La password policy non soddisfa i requisiti")

        WScript.Quit 1

    End If

End Sub

 

Main()

 

 

 

Conclusioni:

 

Grazie a questa nuova feature è quindi possibile verificare a priori che il client usato per una remote connection soddisfi almeno taluni requisiti minimi, per mantenere limitati i danni che potenzialmente un client completamente sprotetto potrebbe arrecare all’intero network. In conlusione, potremmo assimilare l’accesso del client remoto in una zona di quarantena, ad  una sorta di DMZ per l’accesso remoto.

 

 

 

                                                                       Dott. Stefano Fio

                                                                       Security & Risk Manager

                                                                       stefano.fio@securityarchitect.it