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

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

Embed Size (px)

Citation preview

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