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

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

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

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

Security Enhanced Linux(Selinux)

A cura di :De Pascale Filippo

1

Page 2: 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

Page 3: Security Enhanced Linux (Selinux) A cura di : De Pascale Filippo 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)

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

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 )

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

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

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

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

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

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

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

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

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

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

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

Architettura FLASK

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Decisioni di labeling

Interfaccia ed esempio di chiamata per ottenere una security label.

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

Decisioni di accesso

Interfaccia per ottenere le decisioni di accesso dal security server.

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

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

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

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

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

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

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

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

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

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

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

Domini Type Enforcement

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

Tipi Type Enforcement

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

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

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

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

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

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

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

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

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

Separazione dei processi● Le interazioni tra processi in diversi domini sono

limitate● Controllo dell’accesso ai files temporanei

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

Protezione del dominio dell’amministratore

● Limitazione del dominio ad eseguire solo tipi approvati

● Separazione dagli altri domini

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

References● www.nsa.gov : qui si trovano tutte le info su cui

si basa questa presentazione (in inglese).