Security Enhanced Linux (Selinux) A cura di : De Pascale Filippo 1.

Post on 01-May-2015

219 views 0 download

Transcript of Security Enhanced Linux (Selinux) A cura di : De Pascale Filippo 1.

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).