Security-Enhanced Linux: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
3.9 Etichette: Modifica da mobile Modifica da web per mobile |
|||
(13 versioni intermedie di 9 utenti non mostrate) | |||
Riga 5:
|Sviluppatore = [[National Security Agency|NSA]] e [[Red Hat]]
|DataPrimaVersione = {{Data|01|01|1998|}}
|UltimaVersione =
|DataUltimaVersione = {{Data|
|SistemaOperativo = Linux
|Linguaggio = c
Riga 16:
}}
In [[informatica]], il '''Security-Enhanced Linux''' ('''SELinux''') è un [[Linux Security Modules|modulo di sicurezza]] del [[Linux (kernel)|kernel Linux]] che fornisce un insieme di strumenti per utilizzare e monitorare il controllo degli accessi incluso il ''[[
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.
== Storia ==
Il 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 ([[National Security Agency|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 General Public License|GNU GPL]] il 22 dicembre 2000.<ref>Compare{{Cita web |url= https://www.nsa.gov/news-features/press-room/press-releases/2001/se-linux.shtml |titolo= National Security Agency Shares Security Enhancements to Linux |data= 2 gennaio 2001 |opera= NSA Press Release |editore= National Security Agency Central Security Service |città= Fort George G. Meade, Maryland |accesso= 17 novembre 2011 |citazione= The NSA is pleased to announce that it has developed, and is making available to the public, a prototype version of a security-enhanced Linux operating system. |dataarchivio= 20 febbraio 2018 |urlarchivio= https://web.archive.org/web/20180220033503/https://www.nsa.gov/news-features/press-room/press-releases/2001/se-linux.shtml |urlmorto= sì }}</ref> 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.
== Descrizione ==
Da NSA Security-enhanced Linux Team:<ref>{{Cita web |url=https://www.nsa.gov/what-we-do/research/selinux/ |titolo=Security-Enhanced Linux - NSA/CSS |editore=National Security Agency |data=15 gennaio 2009 |accesso=6 febbraio 2013 |dataarchivio=19 luglio 2019 |urlarchivio=https://web.archive.org/web/20190719112434/https://www.nsa.gov/What-We-Do/Research/SELinux/ |urlmorto=sì }}</ref>
<blockquote>NSA Security-Enhanced Linux è un insieme di strumenti del kernel Linux per monitorare il controllo degli accessi ([[Mandatory Access Control|MAC]]) installato nelle principali distribuzioni Linux.
Riga 46:
Gli 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 <code>runcon</code>, SELinux può negare l'avvio se non è specificato nella configurazione della politica di sicurezza.
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, <code>bin_t</code> (tutti i file nella cartella /bin) oppure <code>postgresql_port_t</code> (porta [[PostgreSQL]], 5432).
Il contesto SELinux per un file system remoto può essere specificato esplicitamente al momento del montaggio.
Riga 71:
* Controlli sull'inizializzazione dei processi e sull'esecuzione dei programmi
* Controlli sul file-system, directory, file e [file-descriptor] aperti
* Controlli su sockets, messaggi e
* Controllo delle informazioni memorizzate nella cache tramite la AVC<ref>{{Cita libro|autore= Fedora Documentation Project |titolo= Fedora 13 Security-Enhanced Linux User Guide |url= https://books.google.com/books?id=feDeO4IglRkC |accesso= 22 febbraio 2012 |anno= 2010 |editore= Fultus Corporation | isbn = 978-1-59682-215-3 |p= 18 |citazione= SELinux decisions, such as allowing or disallowing access, are cached. This cache is known as the Access Vector Cache (AVC). Caching decisions decreases how often SELinux rules need to checked, which increases performance.}}</ref> (cache vettoriale di accesso dall'inglese Access Vector Cache)
Riga 79:
SELinux lo si può anche trovare nelle versioni corrispondenti di [[CentOS]] e [[Scientific Linux]] e dalla versione 4.3<ref>{{Cita web|titolo=Security-Enhanced Linux in Android |accesso=31 gennaio 2016 |editore=Android Open Source Project |url=https://source.android.com/security/selinux/}}</ref> è anche implementato nel sistema operativo [[Android]].
Una delle prime distribuzioni, supportate dalla comunità GNU/Linux, ad aver implementato SELinux è stata [[Fedora (informatica)|Fedora]]. Altre distribuzioni che oggi lo supportano sono [[Debian]], [[Ubuntu]] 8.04 Hardy Heron<ref>{{Cita web|url=https://ubuntu-tutorials.com/2008/03/18/how-to-install-selinux-on-ubuntu-804-hardy-heron/|titolo=How To Install SELinux on Ubuntu 8.04 "Hardy Heron"|opera=Ubuntu Tutorials|accesso=17 dicembre 2017|dataarchivio=5 luglio 2017|urlarchivio=https://web.archive.org/web/20170705102909/https://ubuntu-tutorials.com/2008/03/18/how-to-install-selinux-on-ubuntu-804-hardy-heron/|urlmorto=sì}}</ref> e dalla versione 11.1 Enterprise anche [[SUSE Linux|openSUSE]] ne ha un'implementazione come "anteprima tecnologica"<ref>{{Cita web|url=https://www.novell.com/linux/releasenotes/x86_64/SUSE-SLED/11/#02 |titolo=Release Notes for SUSE Linux Enterprise Desktop 11 |editore=[[Novell]] |data= |accesso=6 febbraio 2013}}</ref>.
SELinux è molto utilizzato nei sistemi basati su [[container linux]], come [[Container Linux di CoreOS]] e rkt<ref>{{Cita web|url=https://coreos.com/os/docs/latest/selinux.html |titolo=SELinux on CoreOS|opera=CoreOS Docs}}</ref>. È utile come controllo di sicurezza aggiuntivo, per contribuire a rafforzare ulteriormente l'isolamento tra i container ed il loro host.
Riga 87:
Alcuni command-line utilizzati sono:<ref>{{Cita web|url=https://fedoraproject.org/wiki/SELinux/Commands |titolo=SELinux/Commands - FedoraProject |accesso=25 novembre 2015}}</ref>
<code>chcon</code>,<ref>{{Cita web |url=http://linuxcommand.org/man_pages/chcon1.html |titolo=chcon |editore=Linuxcommand.org |data= |accesso=6 febbraio 2013 |urlmorto=sì |urlarchivio=https://web.archive.org/web/20041024211853/http://linuxcommand.org/man_pages/chcon1.html |dataarchivio=24 ottobre 2004 }}</ref>
<code>restorecon</code>,<ref>{{Cita web|url=
<code>restorecond</code>,<ref>{{Cita web|url=
<code>runcon</code>,<ref>{{Cita web|url=
<code>secon</code>,<ref>{{Cita web|url=
<code>fixfiles</code>,<ref>{{Cita web|url=
<code>setfiles</code>,<ref name="auto">{{Cita web|url=
<code>load_policy</code>,<ref>{{Cita web|url=
<code>booleans</code>,<ref>{{Cita web|url=
<code>getsebool</code>,<ref>{{Cita web|url=
<code>setsebool</code>,<ref>{{Cita web|url=
<code>togglesebool</code><ref>{{Cita web|url=
<code>setenforce</code>,
<code>semodule</code>,
Riga 105:
<code>semodule_package</code>,
<code>checkmodule</code>,
<code>selinux-config-enforcing</code>,<ref>{{Cita web |url=
<code>selinuxenabled</code>,<ref>{{Cita web |url=
and <code>selinux-policy-upgrade</code><ref>{{Cita web |url=
===Esempi===
Riga 121:
===Differenze===
* Un'importante differenza riguarda il fatto che AppArmor identifica gli oggetti del filesystem in base al nome del percorso anziché l'utilizzo dell'inode. Ciò significa che, ad esempio, un file inaccessibile può diventare accessibile, in AppArmor, anche solo creando un collegamento fisico, mentre SELinux nega l'accesso tramite il nuovo collegamento fisico appena creato.
* Si può affermare che AppArmor non sia un sistema "type enforcement", infatti ai file non viene assegnato un tipo ma vengono semplicemente referenziati in un [[file di configurazione]].
* SELinux e AppArmor differiscono anche in modo significativo nel modo in cui sono amministrati e in che modo si integrano nel sistema<ref>{{Cita web|url= https://www.suse.com/documentation/sles11/book_security/data/sect1_chapter_book_security.html |editore= SUSE |serie= Security Guide |opera= SELinux |titolo= SELinux backgrounds }}</ref>.
* AppArmor utilizza i tradizionali controlli DAC a livello MAC, il set di operazioni è anche molto più piccolo di quelli disponibili nella maggior parte delle implementazioni di SELinux. Ad esempio, il set di operazioni di AppArmor consiste in: lettura, scrittura, aggiunta, esecuzione, blocco e collegamento<ref>{{Cita web |url=
* Non ci sono controlli in AppArmor per le funzionalità POSIX. AppArmor è in grado di impedire che i permessi vengano modificati ed impedire che i filesystem vengano montati/smontati, ma non fa nulla per impedire agli utenti di uscire dal loro dominio di controllo approvato da AppArmor.
* Non esiste la nozione di sicurezza multilivello con AppArmor, quindi non è disponibile alcuna protezione [[Modello Bell-LaPadula|BLP]] o [[Modello Biba|Biba]].
Riga 131:
==Sistemi simili==
L'isolamento dei processi e delle applicazioni, per motivi di sicurezza, può essere realizzato anche da altri sistemi, tipo quelli [[virtualizzati]].
Il progetto [[One Laptop
Anche la NSA ha utilizzato alcuni concetti di SELinux per la sicurezza dei sistemi operativi basati su [[Android]]<ref>{{Cita web |titolo=
==Note==
Riga 148:
==Collegamenti esterni==
* {{cita web |
* {{cita web|http://selinux.sourceforge.net/|Informazioni su SELinux per varie distribuzioni Linux}}
{{Controllo di autorità}}
{{portale|sicurezza informatica}}
[[Categoria:Sicurezza informatica]]
[[Categoria:Kernel Linux]]
|