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 laccesso 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 sullidentità dellutente 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 unetichetta di sicurezza basata sullimportanza 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 lID 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 Lamministratore 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 sullarchitettura FLASK
Architettura FLASK
Definisce due tipi di dati indipendenti per le etichette di sicurezza: Contesto di sicurezza: rappresentazione delletichetta tramite una stringa di lunghezza variabile; Identificatore di sicurezza (SID): intero mappato dal SS in un contesto di sicurezza.
Object Manager LObject Manager gestisce lassociazione delle etichette di sicurezza agli oggetti LObject Manager richiede unetichetta per un nuovo oggetto al SS LObject Manager consulta lAVC 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 linterfaccia agli Object manager del kernel per verificare I permessi e notificare allAVC stesso le operazioni completate Fornisce linterfaccia allSS 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 etichette 1.Un object manager richiede al SS unetichetta per un nuovo oggetto 2.Il SS produce un etichetta in base al soggetto che la vuole creare, alloggetto e alla classe del nuovo oggetto 2a.Per lesecuzione di programmi la nuova etichetta viene fornita in base alletichetta corrente del processo e alletichetta del programma eseguibile 2b.Per la creazione di file in base alletichetta del processo creante, a quella della parent directory, ed al tipo di di file che deve essere creato
Flessibilita nelle decisioni daccesso 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 delloggetto
Flessibilita nelle decisioni daccesso 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 laccesso ad ogni oggetto
Supporto per I cambi di politica Quando lAVC 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 letichetta 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 letichetta del processo creante In SELinux i messaggi sono associati sia con letichetta del socket trasmittente, sia con letichetta distinta del messaggio Per default letichetta 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 lintegrità del kernel, includendo i files di boot, i moduli e le variabili sysctl Proteggere lintegrità del software di sistema, i files di configurazione e i logs Proteggere il ruolo e il dominio dellamministratore Confinare i processi di sistema e i programmi privilegiati Proteggere dallesecuzione di software malizioso
Protezione dellintegrità 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 dellaccesso ai files temporanei
Protezione del dominio dellamministratore Limitazione del dominio ad eseguire solo tipi approvati Separazione dagli altri domini
References : qui si trovano tutte le info su cui si basa questa presentazione (in inglese).