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.
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 componente “Listener”.
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 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
Ø
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
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