3 La sicurezza in Windows NT
La ragione più importante per cui l'executive di NT usa un modello ad oggetti è di assicurare che Windows NT sia un sistema operativo sicuro. Un sistema multiutente sicuro deve proteggere i file, la memoria e altre risorse di un utente dagli altri utenti. Deve proteggere i dati, file, e la memoria del sistema operativo dai programmi utente. Il Dipartimento della Difesa degli Stati Uniti ha identificato le caratteristiche di un sistema operativo che lo rende sicuro. Queste caratteristiche sono categorizzate in sette livelli di sicurezza. Al livello della Classe C2, che è il target iniziale per Windows NT, devono essere presenti le seguenti caratteristiche:
Tutte le componenti della sicurezza di Windows NT sono configurabili a piacimento, quindi in base alla configurazione impostata il sistema assume un certo livello di sicurezza. Esistono anche delle autorità che, dietro comunicazione della configurazione del proprio sistema, ne identificano e certificano il livello di sicurezza.
I servizi basati sulla sicurezza estrema richiedono un livello di sicurezza più alto rispetto a quello che Windows NT inizialmente fornisce. Perciò Windows NT è pensato per evolversi verso la sicurezza della Classe B2, un livello conosciuto come Controllo dell'Accesso Obbligatorio, in cui ad ogni utente è assegnato un livello libero dalla sicurezza ed è impedito agli utenti di livello più basso di accedere alle risorse protette. La sicurezza di B2 richiede il riconoscimento dei compartimenti, la separazione dei gruppi di utenti dagli altri. Il sistema di sicurezza di Windows NT è multisfaccettato, ma proteggere gli oggetti è l'essenza del controllo dell'accesso discrezionale e dell'auditing. L'idea che sta dietro la sicurezza di Windows NT è di creare una porta attraverso cui ogni utente delle risorse del sistema può passare. Poiché tutte le risorse del sistema sono implementate come oggetti, il gestore degli oggetti di Windows NT diviene la porta. Le operazioni critiche relative alla sicurezza possono essere trovate in una locazione centrale del sistema operativo.
3.1 I componenti del modello di sicurezza di Windows NT
I
componenti del modello di sicurezza di Windows NT sono:
· I processi di logon: accettano richieste di logon da parte degli utenti. Essi includono il logon interattivo iniziale e i processi di logon remoto.
· Local Security Authority (LSA): assicura all’utente il permesso di accedere al sistema. Esso genera gli access token, gestisce la sicurezza locale, controlla l’auditing e registra i messaggi di audit generati dal SRM (Security Reference Monitor).
· Security Account Manager (SAM): gestisce il database degli account.
· Security Reference Monitor (SRM): verifica il permesso dell’utente di accedere ad un oggetto e di eseguire una determinata azione.
Figura 3.1-1 I componenti di
sicurezza di Windows NT
Questi
componenti costituiscono un sottosistema integrale di
sicurezza.
3.2 Controllo dell'accesso
Windows NT Server
offre un controllo dell’accesso alle risorse: è possibile consentire
ad alcuni utenti di collegarsi ad una risorsa (stampante) o
eseguire un’azione (come cambiare un file) e impedirlo ad altri. Di seguito
riportiamo le funzionalità che consentono e limitano l’accesso: gli
account utente, i diritti utente, subject ed imitazione, descrittore di
sicurezza e permessi, lista di controllo degli accessi.
3.2.1 Gli account utente
Gli account utente comprendono informazioni utente, appartenenza a gruppi ,informazioni sulla politica di sicurezza. Quando viene creato un account vengono definiti anche i diritti dell’utente nel sistema. Ad ogni account corrisponde un unico SID (identificatore di sicurezza). Quando un utente si collega ,il sottosistema della sicurezza costruisce un oggetto che è permanentemente legato al processo dell'utente.Questo oggetto è chiamato access token che serve come carta d'identità ufficiale del processo ogniqualvolta che cerca di usare una risorsa del sistema. Un esempio di access token è mostrato nella figura 3.2.1-1.
Figura 3.2.1-1 Esempio di
Access Token
Il token è costituito da vari attributi.Il primo
attributo è il Security ID personale dell'utente, un identificatore che
generalmente corrisponde al nome di logon dell'utente. Il secondo attributo è
il Group IDs, la lista dei gruppi al quale l'utente appartiene. Esiste
un piccolo numero di servizi di sistema “security sensitive” (come creare un token) che sono protetti dall'uso.
L’attributo Privileges elenca ognuno di questi servizi speciali che un
utente può chiamare. L'utente che crea un oggetto generalmente diviene il suo
proprietario e può decidere chi può usarlo. La lista del controllo degli
accessi (ACL)
di default è una lista iniziale di protezione applicata agli oggetti che
l'utente ha creato. L'attributo Primary Group fornisce la capacità di
raccogliere gli ID di sicurezza in gruppi per scopi organizzativi. Oltre ai
servizi di create, open e query, compare anche un servizio per settare il
token. Settare gli attributi in un oggetto è un servizio comune che è fornito
per molti oggetti dell'executive NT.
Figura 3.2.1-2 Struttura
dell'Access Token
I diritti utente sono regole che determinano le azioni che l’utente può fare. Essi vengono assegnati ad account d’utente singoli ed anche ai gruppi. Gli utenti che vengono aggiunti successivamente a un gruppo acquistano automaticamente i suoi diritti. Esistono diversi tipi di diritti utente tra cui :
· Log on locally : Consente a un utente di collegarsi al computer on side.
·
Shut down the system : Consente ad un utente di
arrestare Windows NT.
3.2.3 Subject ed imitazione
Windows
NT usa l’idea del subject per far sì che i programmi eseguiti per conto di un
utente non ottengano modalità d’accesso al sistema meno restrittive di quelle
dell’utente stesso. Un subject è usato per identificare e gestire i permessi
relativi ad ogni programma eseguito per conto dell’utente, ed è composto dal token d’accesso e dal programma che
agisce per conto dell’utente. Visto che Windows NT si basa su un modello
client-server sono usate due classi di subject per controllare gli accessi. Un
esempio di simple subject è il tipico programma di applicazione che un utente
esegue dopo aver ottenuto accesso al sistema. Ad un simple subject è
assegnato un contesto di sicurezza definito in base al token
di accesso dell’utente. Un server subject è un processo
realizzato come un server protetto che usa il contesto di sicurezza del client
quando agisce per suo conto. La tecnica che permette a un processo di assumere
gli attributi di sicurezza di un altro processo è detta imitazione.
3.2.4 Descrittore di sicurezza e permessi
E’ possibile rendere sicuri tutti gli oggetti denominati in Windows NT. Esiste un descrittore di sicurezza che descrive gli attributi di sicurezza per un oggetto e comprende:
3.2.5 Lista di controllo degli accessi (ACL)
La caratteristica principale di un descrittore di sicurezza è una lista di protezione applicata agli oggetti, chiamata lista di controllo degli accessi (ACL). Il proprietario di un oggetto, generalmente l'utente che lo crea, ha il controllo dell'accesso discrezionale sull'oggetto e può cambiare l'ACL dell'oggetto per consentire ad altri di accedere all'oggetto o per togliere loro l'accesso a quell'oggetto.
Figura 3.2.5-1 Access Control List (ACL)
Ogni entrata in un'ACL è conosciuta come un'entrata del controllo di accesso (ACE). Un ACE contiene un ID di sicurezza e un insieme di diritti di accesso. Per determinare quale ACL assegnare a un nuovo oggetto, il sistema di sicurezza applica una delle tre regole mutuamente esclusive, nel seguente ordine:
In aggiunta ad un ACL, un descrittore della sicurezza di un oggetto contiene un campo che regola l’auditing dell’oggetto.
3.3 Domini
Per molti ambienti di rete esistono dei gruppi naturali di utenti, come ad esempio gli studenti di un laboratorio scolastico o gli impiegati di un’impresa. Molto spesso si vuole che tutti i membri di un gruppo siano in grado di accedere a risorse condivise messe a disposizione dai computer. Per gestire i diritti di accesso globale all’interno di un tale gruppo, NT fa uso del concetto di dominio.
Un
dominio di rete è un raggruppamento logico di server di rete e altri
computer (member server) che condividono informazioni comuni
sulla sicurezza e sugli account per ogni utente. All’interno dei domini, gli
amministratori creano un account per ogni utente. Gli utenti si collegano poi
al dominio e non ai server singoli del dominio.Esiste un database directory (SAM), che memorizza tutte le
informazioni di sicurezza e di account utente per un dominio.Quando un utente
si collega a un dominio, Windows NT Server
controlla il nome e la password dell’utente confrontandola con quella
memorizzata nel database di directory.
Poiché un’impresa potrebbe avere molti dipartimenti, e una scuola molte classi, è spesso necessario poter gestire diversi domini all’interno di una singola organizzazione; a tal scopo NT fornisce quattro possibili modelli. Nel modello a dominio singolo, ogni dominio è isolato dagli altri. Nel modello a dominio principale un dominio è considerato appunto principale, e su esso fanno affidamento tutti gli altri domini: mantiene un archivio globale degli account degli utenti, e fornisce servizi di convalida agli altri domini. Si tratta di un modello di amministrazione centralizzata di più domini: un modello a dominio principale può gestire fino a 40.000 utenti. Il modello a domini principali è concepito per grandi organizzazioni: ha più di un dominio principale, e i domini principali fanno affidamento l’uno sull’altro. Ciò permette a un utente che abbia un account su un dominio principale di accedere alle risorse di un altro dominio principale, perché il primo dominio può certificare i diritti d’accesso dell’utente. Nel modello sulla fiducia non vi è alcun dominio principale: ogni dominio gestisce i propri utenti, ma si fida anche di ogni altro dominio.
Riassumendo, se l’utente di un dominio A tentasse di accedere alle risorse del dominio B, l’interazione fra il dominio B e l’utente sarebbe pressappoco la seguente. Nel modello a dominio singolo, il dominio B direbbe ”Non so nulla di te; vattene”. Nel modello a dominio principale B direbbe ”Fammi chiedere al principale se hai diritto d’accesso”. Nel modello a domini principali B direbbe ”Fammi chiedere al mio principale se qualcuno degli altri principali dichiara che tu hai diritto d’accesso”. Nel modello sulla fiducia, infine, B direbbe ”Fammi chiedere un po’ in giro se qualche dominio dice che hai diritto d’accesso”.
In tutti i modelli di domini sono inclusi i seguenti elementi: i domain controller, relazioni di fiducia, account di computer e canali di comunicazione di sicurezza, il servizio NetLogon.
3.3.1 I domain controller
I domain controller sono computer con Windows NT Server che utilizzano una directory condivisa per memorizzare informazioni di sicurezza e di account utente per l’intero dominio. I domain controller gestiscono tutti gli aspetti delle interazioni utente/dominio ed inoltre utilizzano le informazioni nel database directory, per autenticare gli utenti che si collegano agli account di dominio.Ci sono due tipi di domain controller :
· Il Primary Domain Controller (PDC): tiene traccia dei cambiamenti effettuati agli account e memorizza le informazione nel database di directory. Un dominio ha un unico PDC.
· Il Backup Domain Controller (BDC): gestisce una copia del database directory. Esso viene sincronizzato regolarmente con il SAM sul PDC.
3.3.2 Relazioni di fiducia
Una relazione di fiducia è un collegamento che combina due domini in un’unità amministrativa che può autorizzare l’accesso alle risorse su entrambi i domini.Esistono due tipi di relazioni di fiducia:
· In una relazione di fiducia monodirezionale un dominio concede fiducia agli utenti dell’altro dominio per l’utilizzo delle sue risorse. Le risorse che si rendono disponibili sono nel dominio che concede fiducia (trusting) e i nuovi account che possono utilizzarli sono nel dominio che riceve fiducia (trusted).
3.3.3 Account di computer e canali di comunicazione di sicurezza
Ogni computer che esegue Windows NT Server che partecipa a un dominio ha il proprio account nel database di directory chiamato account di computer. Esso viene creato quando il computer viene identificato inizialmente nel dominio durante l’impostazione della rete o al momento dell’installazione.Quando uno di questi computer si collega alla rete, il servizio di NetLogon, sul computer client, crea un canale di comunicazione di sicurezza con il servizio di NetLogon sul server. Un canale di sicurezza di comunicazione esiste quando i due computer all’estremità si sono identificati correttamente (attraverso gli account di computer). Una volta stabilito tale canale può avere inizio una sessione di comunicazione tra loro. Per mantenere la sicurezza durante tale sessione gli account di fiducia interni vengono impostati tra le stazioni di lavoro e i member server, tra PDC e BDC, e tra i domain controller in entrambi i domini di una relazione di fiducia.
3.3.4 Il servizio NetLogon
Il servizio
Netlogon offre agli utenti un singolo punto d’accesso al PDC del dominio. Esso sincronizza
anche i cambiamenti al database di directory memorizzati sul PDC a tutti domain controller.
3.3.4.1 Autenticazione dell'utente
Su un computer che esegue Windows NT Workstation o un computer che non è un domain controller e che esegue Windows NT Server, il servizio NetLogon elabora le richieste di logon per il compuer locale e passa le richieste di collegamento ad un domain controller.Il servizio NetLogon autentica una richiesta di Logon in tre passaggi:
·
Scoperta: quando il computer viene avviato, deve determinare la posizione di un domain
controller all’interno del dominio e in ogni dominio trusted (c’è una fiducia
implicita tra la stazione di lavoro e il domain controller della stazione). La
localizzazione del domain controller è chiamata scoperta. Se il computer fa parte di un gruppo di lavoro invece che
di un dominio, il servizio NetLogon termina. Una volta scoperto un domain
controller esso verrà utilizzato per la successiva autenticazione dell’account
utente.
·
Impostazione del canale di sicurezza: i servizi NetLogon da ogni computer lanciano
sfide e ne ricevono da ogni altro computer per verificare l’esistenza dei loro
account di computer validi. Quando la verifica è completa, si imposta una
sessione di comunicazione tra i computer che vengono utilizzati per passare i
dati di identificazione utente. Il servizio NetLogon mantiene la sicurezza su
questi canali di comunicazione utilizzando account speciali (workstation trust
account, server trust account, interdomain trust account).
·
Pass – through authentication si verifica solo nei seguenti casi:
1. un logon interattivo in cui l’utente si
collega con un computer che esegue Windows NT come un member server, e il nome
del dominio nella finestra di dialogo non è nome del computer locale.
2.
un logon interattivo nel quale
il computer al quale si sta collegando è un domain controller ma il nome del
dominio non è quello al quale il domain controller appartiene.
3.
Un logon remoto.
Nel caso 1 il computer invia la richiesta di
collegamento a un domain controller al quale l’account di computer appartiene.
Questi controlla se il nome del dominio corrisponde al dominio del domain
controller: in caso affermativo viene convalidato l’accesso. In caso negativo
allora esso controlla se il nome del dominio è un dominio trusted. Se lo è, il
domain controller passa la richiesta di logon ad un domain controller trusted
(la stessa cosa lo si fa per il caso 2). Quest’ultimo convalida il nome utente
e la password rispetto al SAM
del dominio e passa le informazioni di identificazione al domain controller
iniziale che lo reinvia al computer di logon. Nel caso 3, l’utente cerca di eseguire un logon di rete con un altro
computer, la convalida funziona allo stesso modo come nei logon interattivi.
Figura 3.3.4.1-1 La pass-through authentication in Windows NT
Windows NT include delle funzioni per controllare gli eventi relativi alla sicurezza del sistema. Ad esempio, Windows NT è in grado di tenere traccia di tutti gli accessi al sistema o addirittura di memorizzare tutte le operazioni che un utente esegue su tutti gli oggetti o su alcuni di essi oppure registrare solo alcune operazioni eseguite sugli oggetti. Un’altra situazione potrebbe essere quella di memorizzare i tentativi di accesso con esito negativo che potrebbe rivelare il tentativo di accesso non autorizzato al sistema.Inoltre con l’auditing è possibile identificare tutte le violazioni della sicurezza e determinare l’ampiezza e la posizione di qualsiasi danno.