Il modello di sicurezza

Il modello di sicurezza in Windows 2000 è l'insieme degli strumenti e delle componenti del sistema utilizzate per implementare i meccanismi di sicurezza presenti.

Il modello di sicurezza si basa sui concetti di autenticazione e autorizzazione: l’autenticazione identifica l’utente durante il logon e l’accesso a servizi di rete; l’autorizzazione, invece, è il meccanismo che si preoccupa di controllare l’accesso alle risorse, sulla base dei permessi stabiliti. Inoltre è supportato dai servizi di sicurezza di Windows 2000, servizi che sono composti da diversi elementi che molto spesso interagiscono tra loro.

Concetti fondamentali

L’unità fondamentale del modello di sicurezza di Windows 2000 è rappresentata da un oggetto. Un oggetto include qualunque risorsa del sistema che possa essere protetto: files, stampanti, dischi, threads, processi, ect ..

Per contenere i permessi di accesso per ogni oggetto vengono utilizzate le ACL (Access Control List). Ogni ACL è una sequenza di zero o più ACE (Access Control Entry), che rappresenta la singola voce di controllo dell’accesso.

 

Figura 1 - Access Control List

Esistono due tipi di ACL: facoltativi (Discretionary Access Control List) e di sistema (System Access Control List). Le DACL garantiscono i permessi di accesso sull’oggetto a cui sono assegnati, mentre le SACL contengono informazioni di controllo, quali:

Una volta garantita la protezione sugli oggetti, bisogna identificare gli utenti che tentano di accedere alle risorse e verificare che hanno i relativi permessi.

All’interno del modello di sicurezza, ad ogni utente viene assegnato univocamente un Security ID (SID) che viene generato al momento della creazione dell’account; inoltre ai processi utente viene associato un oggetto chiamato access token, che serve come “patente” per poter usare le risorse.

Figura 2 - Access Token

Gli access token sono generati durante la fase di logon, dopo che l’utente è stato autenticato; contengono, il SID dell’utente, SID del gruppo a cui l’utente appartiene, e l’ACL di default dell’utente. Quando un processo o un thread tenta di accedere all’oggetto, il sistema attraverso l’access token cerca di identificare l’utente, allo scopo di verificare se l’utente può accedervi ed eseguire l’operazione richiesta. Se l’accesso è consentito, il sistema operativo fornisce un handle a quell’oggetto, il cui scopo è molto simile a quello del file descriptor utilizzato per accedere ai file.

Figura 3 - Accesso ad una risorsa

  Protezione degli oggetti

Ad ogni oggetto viene assegnato un SD (Security Descriptor), in cui vengono inseriti:

Nel SD sia il DACL che il SACL possono essere vuoti, cioè contenere zero ACE. Se il DACL è vuoto, solo il proprietario può accedere all’oggetto; se il SACL è vuoto, non viene eseguito nessun controllo.

 

 

 

 

 

 

Figura 4 - Security Descriptor di un file
 

 

I componenti

Il modello di sicurezza include le seguenti componenti fondamentali:

SRM(Security Reference Monitor): E' un processo in modalità kernel che si occupa del monitoraggio dell’accesso agli oggetti, garantendo che l’accesso ad un determinato oggetto sia coerente con il Security Descriptor associato.

Nel momento in cui un’applicazione tenta di accedere ad un oggetto, l’ SRM analizza il DACL dell’oggetto per verificare che l’applicazione abbia i permessi di accesso. In particolare ciascuna ACE  viene esaminato secondo un ordine preciso, e se il SID contenuto nell’ACE corrisponde ad SID contenuto nel token, allora l’ACE viene elaborato, per verificare i diritti di accesso.

Se tutti i diritti di accesso richiesti dal chiamante possono essere garantiti, l’accesso all’oggetto secondo le modalità richieste ha esito positivo; altrimenti, se uno di essi non può essere garantito, l’accesso fallisce

I messaggi di audit relativi al successo o al fallimento di un accesso vengono scritte da LSA su opportuni files di log.

Per motivi di efficienza, i controlli di accesso vengono eseguito al momento della creazione dell’ handle di un oggetto.

LSA (Local Security Authority): E’ un processo in modalità utente che si occupa di garantire che l’utente abbia accesso al sistema. In particolare: 

§         Autentica gli utenti durante la fase di logon: in tale fase i dati di accesso dell’utente vengono consegnati ad Active Directory o al SAM mediante il relativo programma di autenticazione, per verificarli.

§         Generare il token di accesso: una volta che l’utente è stato autenticato, il suo SID, il SID dei gruppi di appartenenza e il suo ACL di default, vengono utilizzare per generare un token di accesso.

§         Gestire la politica di sicurezza: l’ SRM interroga LSA per avere informazioni sugli accessi, informazioni che LSA verifica utilizzando il Security Policy Database.

§         Vigila sulla politica di controllo.

§         Aggiorna il registro degli eventi i dati di audit forniti dal SRM.

Processo di accesso (Process Logon): E’ un processo in modalità utente che si occupa di reperire utilizzando GINA le credenziali di un utente (account e password) e passarle ad LSA affinché le autentichi.

GINA (Graphical Identification and Authentication): GINA è una DLL sostituibile che contiene l’interfaccia utente per fornire le credenziali di accesso (nome utente e password). Se si utilizza una smartcard, GINA viene sostituita con la DLL opportuna. Esiste anche la possibile di scrivere una GINA personalizzata, utilizzando le informazioni contenuti nel SDK.

SAM (Security Account Manager): Il database SAM viene utilizzato da Windows 2000 per memorizzare le informazioni sugli account utente. Interagisce con LSA durante la fase di autenticazione di un utente, confrontando le informazioni ricevute da LSA con le informazioni memorizzate, e in caso di corrispondenza esatta ritorna il SID dell’utente e quello dei gruppi di cui è membro.

AD (Active Directory): è un archivio gerarchico e orientato agli oggetti  condiviso su un dominio o su una foresta di dominio, contenente informazioni sugli account locali e sulla politiche legate alla rete.

Servizio d’accesso di rete (Network Logon Service): E’ un servizio di modalità utente, che supporta l’autenticazione degli accessi per i computer di un dominio.

Pacchetti di sicurezza: I pacchetti inclusi con Windows 2000 sono: 

§         Kerberos;

§         MSV_0;

§         Schannel.

Kerberos è un protocollo ormai celebre, mentre MSV_0 è un protocollo proprietario di Microsoft che è una regressione ai tempi andati del vecchio LanManager. Quanto a Schannel, esso implementa i protocolli del canale protetto, quali SSL (Secure Socket Layer) e PKI (infrastruttura di chiave pubblica).

SSPI (Security Support Provider Interface): E’ una comune API che fornisce i servizi di sicurezza integrata per l’autenticazione, l’integrità e la privacy di qualunque protocollo d’applicazione distribuito. Essa può tornare molto utile a quegli sviluppatori che adoperano nelle proprie applicazioni file di password o password memorizzate in campi di database e intendono proteggere tali dati: suddetti sviluppatori possono così avvantaggiarsi di questa interfaccia, per ottenere facilmente i servizi di sicurezza direttamente dal sistema operativo.

PKI (Public Key Infrastructure): fornisce gli strumenti utili a costruire e gestire un forte sistema di sicurezza basato sulle chiavi pubbliche.

EFS (Encrypting File System): consente di proteggere i dati memorizzati su un computer, criptando i files o le cartelle specificate.

IPSec (Internet Protocol Security): è una suite che permette di far viaggiare i dati in maniera sicura e cifrata tra due computer su una rete insicura.

CryptoAPI (Cryptography API): fornisce tutte le funzioni necessarie per garantire l’autenticazione, la privacy e l’integrità dei dati scambiati nella rete.

 

Figura 5 – Interazione tra componenti nella fase di autenticazione utente

  Autenticazione utente

L’autenticazione utente viene eseguita nel momento in cui lo stesso tenta di accedere al sistema. L’autenticazione segue percorsi diversi a seconda che si utilizzino le stazioni di lavoro o i server. Inoltre, per venire incontro a quelle aziende che utilizzano per le stazioni di lavoro ancora NT o i vecchi sistemi legaci come Windows 95 e 98, come protocollo di autenticazione viene utilizzato anche NTLM (NT LanManager), oltre che il più nuovo e più collaudato Kerberos.

La procedura di accesso comincia quando, premendo CTRL+ALT+CANC compare la finestra di dialogo per l’immissione delle credenziali (Nome, Password, Dominio). Confermata l’immissione, le credenziali vengono utilizzate da LSA per effettuare l’autenticazione dell’utente.

In particolare, il processo di autenticazione può essere eseguito in maniera diversa:

A prescindere da quale sia la procedura eseguita per l'autenticazione, se l’accesso è consentito LSA chiama l’esecutivo per creare l’access token. Viene poi avviata la procedura per la creazione della shell locale.

 

 

 

 

 

 

 

 

 

 

 Figura 6 – Il generico processo di logon