Introduzione

I moderni Sistemi Operativi non implementano le funzioni di integrità dei dati e di separazione delle informazioni sulla base della confidenzialità.
A tale scopo la NSA (National Security Agency) ha sviluppato uno dei primi Linux che possiede tali funzionalità: Security-Enhanced Linux (SELinux).
Nel campo della sicurezza il Sistema Operativo rappresenta il layer di base su cui si fondano tutte le applicazioni e le funzioni di privatezza e di integrità dei dati.
Quando il Sistema Operativo viene compromesso, tutte le applicazioni su di esso costruite vengono violate, così come pure i dati ad esse relativi. I Sistemi Operativi dovrebbero assicurare la separazione delle informazioni sulla base delle confidenzialità e dell'integrità dei dati.
I Sistemi moderni però non possiedono le caratteristica fondamentale per garantire questo tipo di separazione: il Mandatory Access Control (MAC).
Il MAC, come definito dal Trusted Computer Security Evaluation Criteria del Dipartimento della Difesa Americano, è un mezzo per limitare l'accesso agli oggetti basato sulla sensibilità (rappresentata tramite un'etichetta) delle informazioni contenute negli oggetti e sulle autorizzazioni dei soggetti per accedere a tali informazioni sensibili.
Al momento vi sono poche implementazioni di MAC, i rari esempi sono utilizzati soprattutto a scopi militari. Infatti la maggior parte dei sistemi esistenti si affidano ai meccanismi forniti dal Discretionary Access Control (DAC). Il DAC è un meccanismo software che permette al proprietario di un file o di una directory di concedere o negare l'accesso agli altri utenti. Tali meccanismi non sono adeguati per un sistema fortemente sicuro. Le decisioni di accesso del DAC sono basate, solo, sull'identità dell'utente e su ciò che egli possiede nel sistema, ignorando informazioni rilevanti per la sicurezza come lo scopo dell'utente, la funzione, di quanto ci si fida di un programma, la sensibilità e l'integrità dei dati. Tipicamente solo due categorie di utenti sono supportate dai meccanismi del DAC: l'amministratore del sistema, che ne ha il controllo assoluto, e gli utenti ordinari.
Per esempio, se in un sistema con DAC si effettua la seguente chiamata a funzione

int creat(const char *pathname, mode_t mode);

mode specifica i permessi di accesso al file:

lettura, scrittura ed esecuzione al proprietario;
lettura, scrittura ed esecuzione al gruppo;
lettura, scrittura ed esecuzione agli altri;

i permessi del file possono essere cambiati da un processo in esecuzione con lo stesso user ID del prorpietario del file o con user ID 0 (root).
Se invece facciamo la stessa chiamata a funzione in un sistema con MAC, esso non si cura di chi sia il proprietario del file o se l'ID del processo che effettua la richiesta è quello della root. Il MAC assegna sia al file che al processo un'etichetta di sicurezza. L'etichetta assegnata al file è basata sull'importanza delle informazioni contenute nel file e ogni etichetta avrà un certo livello di sicurezza. Un processo che ha etichetta di sicurezza di livello inferiore a quella del file non può leggere il file; un processo che ha etichetta di sicurezza diversa da quella del file non può scrivere il file. Di conseguenza, in un sistema con MAC, le decisione di accesso sono basate su etichette di sicurezza, inoltre la root non ha più il controllo assoluto del sistema.
La NSA ha fornito su Linux un'implementazione delle funzionalità del MAC, necessarie a centralizzare i meccanismi di sicurezza. Questa versione di Linux, SELinux appunto, prevede un'architettura MAC forte e flessibile, incorporata direttamente nei sottosistemi più importanti del kernel.
Linux è stato scelto come piattaforma di sviluppo per il suo crescente successo e per le opportunità offerte dal suo ambiente di lavoro aperto.
E' importante aggiungere però che SELinux non rappresenta la soluzione a tutti i problemi di sicurezza ma solo un esempio di come sia possibile controllare le azioni dei processi, anche quando si tratta di processi con privilegi di superuser.
In pratica il concetto di root così come lo conosciamo perde di significato, ed è sostituito da un Access Control List basata sulla confidenzialità e sull'integrità delle informazioni.




pagina successiva