Security-Enhanced Linux
In informatica, il Security-Enhanced Linux (SELinux) è un modulo di sicurezza del kernel Linux che fornisce un insieme di strumenti per utilizzare e monitorare il controllo degli accessi incluso il mandatory access control (MAC), tutto questo utilizzando i framework Linux Security Modules (LSM). SELinux è un set di modifiche che possono essere applicate a sistemi operativi di tipo Unix come Linux e BSD. La sua architettura cerca di separare l'uso delle regole di sicurezza dalla definizione delle regole stesse, riducendo il numero di software incaricati a verificare che queste vengano rispettate. I concetti base di SELinux possono essere ricondotti ad alcuni progetti della National Security Agency (NSA) statunitense. StoriaIl primo lavoro rivolto a standardizzare i controlli di accesso obbligatori e discrezionali (MAC e DAC) all'interno di un ambiente UNIX (più precisamente POSIX) può essere attribuito al gruppo di lavoro Trusted UNIX (TRUSIX) dell'agenzia di sicurezza nazionale americana (NSA) che dal 1987 al 1991 ha prodotto un modello formale (pubblicato in un Rainbow Book) ed un prototipo di valutazione che però non è mai stato pubblicato. SELinux è stato progettato per dimostrare il valore dei controlli di accesso obbligatori alla comunità linux e come tali controlli potrebbero essere aggiunti a Linux. Originariamente, le patch che sono state integrate in SELinux dovevano essere esplicitamente applicate al codice sorgente del kernel linux, dalla versione 2.6 del kernel invece è stato completamente integrato di default. Il primo sviluppatore di SELinux, ha rilasciato la prima versione alla comunità di sviluppo open source sotto la GNU GPL il 22 dicembre 2000.[1] Il software si è unito al main kernel Linux 2.6.0-test3, rilasciato l'8 agosto 2003. Security-Enhanced Linux implementa il Flux Advanced Security Kernel (FLASK). Questo kernel contiene componenti architetturali progettati per il sistema operativo Fluke. I componenti di Fluke forniscono un ampio supporto per l'applicazione di molti tipi di politiche per il controllo degli accessi obbligatorie, incluse quelle basate su esecuzione, controllo degli accessi role-based (RBAC) e protezioni di sicurezza multilivello. FLASK, a sua volta, si basa su DTOS, un sistema operativo Trusted Mach, un progetto di ricerca fatto da Trusted Information Systems che ha influenzato la progettazione e l'implementazione di DTOS. DescrizioneDa NSA Security-enhanced Linux Team:[2]
Un kernel Linux che integra SELinux impone politiche di controllo degli accessi obbligatori che limitano i programmi degli utenti, i software di sistema dei server, l'accesso ai file e alle risorse di rete. Limitando i permessi al minimo, sui sistemi Linux, riduce o elimina la capacità di programmi e processi demone di causare danni se difettosi o compromessi (ad esempio tramite overflow di buffer o errori di configurazione). Questo meccanismo di confinamento funziona indipendentemente dai meccanismi di controllo degli accessi di Linux. Non ha un concetto di superutente "root" e non possiede i tradizionali permessi speciali di sicurezza attribuiti a file e directory che modificano il comportamento del sistema nei confronti di utenti e/o gruppi (ad esempio setuid/setgid). La sicurezza di un sistema senza SELinux dipende dalla correttezza del kernel, da tutti i privilegi delle applicazioni e da ogni loro configurazione. Un problema in alcune, o anche solo in una di esse, potrebbe genereare compromissioni di sicurezza all'intero sistema. Al contrario un sistema linux "modificato", cioè basato su un kernel SELinux, dipende dalla correttezza del kernel e dalle configurazioni delle politiche di sicurezza. Alcune imperfezioni di correttezza o configurazione di applicazioni potrebbero compromettere il funzionamento dei processi demone di sistema di ogni singolo utente, e anche, non necessariamente, reppresentano una minaccia ai demoni di sistema di altri utenti connessi o alla sicurezza dell'intero sistema. SELinux fornisce un insieme di concetti e funzionalità tratti da controlli di accesso, controlli di integrità e controllo degli accessi role-based (RBAC). Gli strumenti di "terze parti" consentono di creare versatilità sulle politiche di sicurezza. Utenti, contesti e politiche di sicurezzaGli utenti e le politiche di SELinux non devono essere correlati agli utenti e alle politiche del sistema Linux. Per ogni utente o processo, SELinux assegna un context a tre stringhe costituito da nome utente, ruolo e dominio (o tipo). Di norma, la maggior parte degli utenti reali condivide lo stesso nome utente SELinux e tutto il controllo degli accessi è gestito tramite il terzo tag, il dominio. Questo sistema utilizzato è quindi più flessibile di quanto è normalmente richiesto. Un processo viene posto in un determinato dominio se la configurazione delle politiche lo permette. Per avviare un processo in un contesto esplicitamente specificato (utente, ruolo, dominio) deve essere lanciato con il comando Hardware, porte di rete e file possiedono un contesto SELinux. Questo è costituito da un nome, un ruolo (raramente usato) e un tipo. In caso di file system, il mapping tra i file e i contesti di sicurezza è chiamato etichettatura. L'etichettatura è definita nei file delle politiche, ma può anche essere regolata manualmente senza modificare le configurazioni delle politiche. I tipi, nei contesti SELinux, vengono definiti in modo molto dettagliato.
Ad esempio, SELinux aggiunge l'opzione Una politica standard è costituita da: un file di mappatura (etichettatura), un file di regole e un file di interfaccia. Questi tre file, insieme, definiscono il dominio e devono essere sempre compilati insieme, con gli strumenti SELinux, in modo da produrre un unico file di criteri.
Il file della politica risultante, per essere reso attivo, deve essere caricato nel kernel.
Questi tipi di procedure (inserimento/rimozione su/dal kernel) non richiedono un riavvio del sistema per essere eseguite.
I file dei criteri possono essere scritti a mano o essere generati dal SELinux Management che è nettamente di più facile utilizzo.
Normalmente, i nuovi criteri, vengono prima testati in "modalità permissiva", dove le violazioni vengono appunto permesse e registrate. Lo strumento CaratteristicheLe caratteristiche di SELinux comprendono:
ImplementazioniSELinux è implementato e disponibile, dalla versione 4 in poi, nella distribuzione commerciale di Red Hat: "Red Hat Enterprise Linux (RHEL)". La politica di sicurezza in RHEL4 punta alla massima facilità d'uso e quindi è molto poco restrittiva. Dopo la quarta versione viene invece implementata una politica di sicurezza molto più restrittiva. SELinux lo si può anche trovare nelle versioni corrispondenti di CentOS e Scientific Linux e dalla versione 4.3[4] è anche implementato nel sistema operativo Android. Una delle prime distribuzioni, supportate dalla comunità GNU/Linux, ad aver implementato SELinux è stata Fedora. Altre distribuzioni che oggi lo supportano sono Debian, Ubuntu 8.04 Hardy Heron[5] e dalla versione 11.1 Enterprise anche openSUSE ne ha un'implementazione come "anteprima tecnologica"[6]. SELinux è molto utilizzato nei sistemi basati su container linux, come Container Linux di CoreOS e rkt[7]. È utile come controllo di sicurezza aggiuntivo, per contribuire a rafforzare ulteriormente l'isolamento tra i container ed il loro host. Possibili utilizziSELinux, potenzialmente, potrebbe controllare, con specifiche molto precise, attività, processi o demoni di ogni utente che utilizza Linux. In ogni caso il modulo è principalmente utilizzato per limitare demoni come algoritmi per database o server web, che possiedono attività e accesso ai dati nettamente più definiti. Questa limitazione, previene un potenziale danno ad un processo demone che presenta alcune vulnerabilità. Di solito i processi "ordinari" degli utenti vengono eseguiti senza l'ausilio del modulo SELinux ma vengono comunque limitati dai classici permessi di accesso di Linux. Alcuni command-line utilizzati sono:[8]
EsempiMettere SELinux in modalità enforcing:
Verificare lo stato di SELinux:
Confronto con AppArmorSELinux rappresenta solo uno dei tanti possibili approcci al problema di limitare le azioni che il software installato può eseguire. Un'altra alternativa molto comune si chiama AppArmor ed è disponibile su distribuzioni come: SUSE Linux Enterprise Server (SLES), openSUSE e altre basate su Debian. AppArmor è stato sviluppato nella distribuzione, ormai inutilizzata, Immunix Linux. AppArmor e SELinux si differenziano radicalmente l'uno dall'altro. Per questo motivo formano alternative distinte per il controllo del software. Al contrario di SELinux, AppArmor è stato progettato per essere semplice, estende la stessa semantica amministrativa utilizzata per DAC fino al controllo di accesso obbligatorio. Differenze
Sistemi similiL'isolamento dei processi e delle applicazioni, per motivi di sicurezza, può essere realizzato anche da altri sistemi, tipo quelli virtualizzati. Il progetto OLPC, ad esempio, nella sua prima implementazione[26] eseguiva le applicazioni in server virtuali (Vserver) separati, fungendo da sandbox. Anche la NSA ha utilizzato alcuni concetti di SELinux per la sicurezza dei sistemi operativi basati su Android[27]. Note
Voci correlateAltri progetti
Collegamenti esterni
|
Portal di Ensiklopedia Dunia