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

 

 

 

3.2.2 I diritti utente

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

 

3.4 Auditing degli eventi di sicurezza

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.