Upload
crocetta-carrara
View
224
Download
0
Embed Size (px)
Citation preview
Security Enhanced Linux(Selinux)
A cura di :De Pascale Filippo
1
Che cosa è?● Patch di sicurezza al kernel di linux● Sviluppato dalla National Security Agency
● Principalmente implementa un controllo degli accessi di tipo mandatorio (MAC)
● Non è un nuovo sistema operativo ma una modifica del kernel originale di linux
1
Perche’?● Per rimediare ai limiti di sicurezza dei moderni
sistemi operativi● Negli SO moderni le regole di accesso sono
gestite dal Discretionary Access Control (DAC)
DAC● Software (ovviamente…)● Da’ la possibilita’ al proprietario di un file o di
una directory ( o equivalenti ) di permettere o negare l’accesso a quella particolare risorsa agli altri utenti
● In un sistema con DAC I permessi di accesso possono essere modificati ( revocati, aggiunti ecc…) da un processo con lo stesso User Identifier del proprietario di quella risorsa, oppure con UID 0 ( root )
Il DAC non basta
● Decisioni di accesso basate solo sull’identità dell’utente e su ciò che possiede nel sistema
● L’ amministratore del sistema ne ha il completo controllo
Mandatory Access Control● Usato per limitare l’ accesso agli oggetti
● Basato sulla sensibilità delle informazioni contenute negli oggetti
● e sulle autorizzazioni dei soggetti per accedere a tali informazioni sensibili
● In un sistema con MAC ad un file viene assegnata un’etichetta di sicurezza basata sull’importanza delle informazioni contenute nel file
● Ogni etichetta ha un certo livello di sicurezza
Mandatory Access Control● Il MAC non si cura di chi sia il proprietario del
file, o se l’ID del processo, che ha effettuato una richiesta, è 0 (root)
● 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
Mandatory Access Control● Decisioni di accesso basate su etichette di
sicurezza ● L’amministratore non ha più il controllo assoluto
(il concetto di root cosi come lo conosciamo non esiste più)
Flexible MAC● Realizzato dalla National Security Agency (NSA)
in collaborazione con la Secure Computing Corporation (SCC)
● Ottenuto sulla base del lavoro fatto sul Type Enforcement (TE)
● Basato sull’architettura FLASK
Architettura FLASK
Architettura FLASK● Definisce due tipi di dati indipendenti per le
etichette di sicurezza: Contesto di sicurezza: rappresentazione
dell’etichetta tramite una stringa di lunghezza variabile;
Identificatore di sicurezza (SID): intero mappato dal SS in un contesto di sicurezza.
Object Manager● L’Object Manager gestisce l’associazione delle
etichette di sicurezza agli oggetti● L’Object Manager richiede un’etichetta per un
nuovo oggetto al SS● L’Object Manager consulta l’AVC per ottenere le
decisioni di accesso dal SS
Access Vector Cache (AVC)
● Provvede al caching delle decisioni di accesso computate dal SS per ottimizzare le prestazioni di questo meccanismo di sicurezza
● Fornisce l’interfaccia agli Object manager del kernel per verificare I permessi e notificare all’AVC stesso le operazioni completate
● Fornisce l’interfaccia all’SS per gestire la cache in base alle modifiche delle politiche
Security Server● E’ un elemento del kernel che fornisce le
decisioni delle politiche di sicurezza per gli object manager, mantenendo questi indipendenti dalla specifica politica
Flessibilita’ per le etichette1.Un object manager richiede al SS un’etichetta per un
nuovo oggetto
2.Il SS produce un’ etichetta in base al soggetto che la vuole creare, all’oggetto e alla classe del nuovo oggetto
2a.Per l’esecuzione di programmi la nuova etichetta viene fornita in base all’etichetta corrente del processo e all’etichetta del programma eseguibile
2b.Per la creazione di file in base all’etichetta del processo creante, a quella della parent directory, ed al tipo di di file che deve essere creato
Flessibilita’ nelle decisioni d’accesso
● Un object manager consulta il SS per ottenere una decisione di accesso basata su di un paio di etichette e una classe di oggetto
● Il paio di etichette normalmente sono :
1.quella del soggetto
2.quella dell’oggetto
Flessibilita’ nelle decisioni d’accesso
● Ogni classe ha un set di permessi associati che sono rappresentati da una bitmap detta Access Vector
● Flask definisce un permesso differente per ogni servizio
● Quando un servizio accede a piu’ oggetti, definisce un permesso separato per contrallare l’accesso ad ogni oggetto
Supporto per I cambi di politica
● Quando l’AVC riceve la notifica di un cambio di politica di sicurezza, aggiorna il proprio stato e in seguito invoca le funzioni di callback registrate da un object manager in modo che anche I permessi nello stato di questo vengano aggiornati
Decisioni di labeling
Interfaccia ed esempio di chiamata per ottenere una security label.
Decisioni di accesso
Interfaccia per ottenere le decisioni di accesso dal security server.
Selinux:controllo dei files● SELinux etichetta e controlla gli open file
descriptions poiché essi possono essere ereditati attraverso execve o trasferiti tramite socket UNIX IPC
● Un open file description è etichettato con il SID del suo processo creante
● SELinux lega etichette di sicurezza ai files e alle directories e controlla gli accessi ad essi
Selinux:controllo dei files● Per ogni filesystem, SELinux memorizza una
tavola di labeling persistente che specifica l’etichetta di sicurezza per ciascun file e directory in quel filesystem
● SELinux assegna un valore intero, detto persistent SID (PSID), a ciascuna etichetta di sicurezza usata da un oggetto in un filesystem
Selinux:controllo dei sockets● Al socket layer, SELinux controlla la capacità dei
processi di eseguire operazioni sui socket● Al transport layer, SELinux controlla la capacità
di spedire e ricevere messaggi sulle interfacce di rete
● SELinux controlla anche la capacità dei processi di configurare le interfacce di rete e di manipolare la tavola di routing del kernel
Selinux:controllo dei sockets● I socket servono come proxies di comunicazione
nel modello di controllo di SELinux● I socket sono etichettati di default con l’etichetta
del processo creante● In SELinux i messaggi sono associati sia con
l’etichetta del socket trasmittente, sia con l’etichetta distinta del messaggio
● Per default l’etichetta del messaggio è la stessa socket del trasmittente
Concetti Type Enforcement● Domini per i processi e tipi per gli oggetti● Specifica gli accessi consentiti dai domini ai tipi● Specifica le interazioni ammissibili tra domini● Specifica le transizioni permesse e automatiche
tra domini● Specifica le restrizioni di entrypoint e di
esecuzione di codice per i domini
Domini Type Enforcement
Tipi Type Enforcement
Role Based Access Control● Ruoli per i processi● Specifica domini che possono essere accessi da
ciascun ruolo● Specifica ruoli che sono legittimi per ciascun
utente● Dominio iniziale associato con ciascun ruolo
utente● Le transizioni tra ruoli sono esplicite, per
esempio login o newrole
Obiettivi di sicurezza● Proteggere l’integrità del kernel, includendo i
files di boot, i moduli e le variabili sysctl● Proteggere l’integrità del software di sistema, i
files di configurazione e i logs● Proteggere il ruolo e il dominio
dell’amministratore● Confinare i processi di sistema e i programmi
privilegiati● Proteggere dall’esecuzione di software malizioso
Protezione dell’integrità dei files di sistema
● Tipi separati per programmi di sistema● Tipi separati per i files di configurazione di
sistema● Tipi separati per le librerie condivise● Tipi separati per i logs di sistema● Tipi separati per linker dinamico
Restrizioni dei processi privilegiati
● La configurazione limita lo sfruttamento di “difetti” nei processi privilegiati definendo per loro domini separati
● Restringe i loro accessi ai minimi privilegi
Separazione dei processi● Le interazioni tra processi in diversi domini sono
limitate● Controllo dell’accesso ai files temporanei
Protezione del dominio dell’amministratore
● Limitazione del dominio ad eseguire solo tipi approvati
● Separazione dagli altri domini
References● www.nsa.gov : qui si trovano tutte le info su cui
si basa questa presentazione (in inglese).