Cos’è SELinux?
SELinux sta per Linux Security-Enhanced (cioè migliorato nella sicurezza). In pratica Linux è un sistema operativo come Windows, Android o iOS con la differenza che non è sviluppato da una sola azienda, ma è stato pianificato sin dall’inizio come un progetto open source. Il “nucleo” di Linux è costituito dal cosiddetto kernel di Linux, il cui codice sorgente è aperto a tutti gli sviluppatori, sia di progetti non profit che di progetti commerciali. Esistono diversi sistemi operativi di Linux che si basano su questo kernel di Linux, chiamati nell’insieme distribuzioni. Tra le distribuzioni più conosciute di Linux troviamo Ubuntu, Debian o Fedora.
Cosa vuol dire concretamente “Security-Enhanced”?
Il codice del kernel di Linux è sviluppato costantemente da parte di aziende, volontari e organizzazioni non profit. Security-Enhanced Linux è un’estensione del kernel di Linux disponibile sotto forma di un modulo di sicurezza proprio. Già dal 2013 SELinux fa parte delle componenti ufficiali del kernel di Linux. Alcune distribuzioni offrono SELinux come componente standard, ma è possibile comunque disattivare il modulo in modo semplice. SELinux aiuta gli amministratori a eseguire controlli rigorosi su tutti i processi nel loro sistema bloccando quelli non considerati essenziali. SELinux permette di ridurre in modo significativo il rischio di falle di sicurezza nei programmi applicativi.
È quindi utile limitare i diritti di accesso quando si conosce bene il programma. Se un’applicazione venisse hackerata da terzi, i danni sarebbero molto minimi. Se i programmi infettati da malware hanno accesso a tutti i processi e file di un sistema, possono sfruttarlo a loro vantaggio. SELinux si occupa di limitarne l’accesso e di conseguenza la portata dei danni.
Controlli di accesso rigorosi del sistema operativo
SELinux offre una particolare architettura di sicurezza basata sui principi del “Mandatory Access Control” (MAC). A differenza del tradizionale kernel di Linux, SELinux riduce al minimo gli accessi a processi e file del sistema operativo. Attraverso un rigido protocollo di controllo degli accessi con relative linee guida di sicurezza, è garantito il mantenimento della riservatezza e dell’integrità delle informazioni. SELinux delimita tra loro in modo chiaro i programmi applicativi e il sistema operativo.
Come si limitano i diritti di accesso con SELinux?
Per i controlli all’accesso, di solito Linux utilizza il Discretionary Access Control (DAC). Gli utenti o le applicazioni a cui sono stati conferiti i diritti relativi, di solito hanno accesso illimitato ai file e processi corrispondenti del sistema operativo. Nel caso del Mandatory Access Control utilizzato da SELinux, invece, un amministratore conferisce alle linee guida di sicurezza già ben definite un ulteriore attributo che stabilisce le condizioni e le misure in cui il titolare di diritti può accedere a processi o dati precisi del sistema operativo. In caso di mancata definizione di tali condizioni o misure (quindi degli attributi), l’accesso viene negato.
SELinux distribuisce diverse etichette per regolarsi:
- User (utente)
- Role (ruolo)
- Type (tipo)
- Level (livello)
Queste etichette sono valide per ciascun processo e ciascun file e possono essere incorporate nelle linee guida definite. In questo modo, ad esempio, un’applicazione può accedere solo a una cartella con un’etichetta precisa. La verifica delle linee guida prende il nome di SELinux Enforcement.
Vantaggi e svantaggi di SELinux
SELinux rende più difficile e ostacola la violazione dei diritti utente, come può verificarsi nei programmi applicativi con falle di sicurezza; di conseguenza il sistema operativo è ben protetto. Le distribuzioni Linux offrono il modulo SELinux con diversi pacchetti e linee guida di sicurezza corrispondenti. Ciò facilita la configurazione del livello di sicurezza. Gli amministratori autorizzati possono anche definire autonomamente le linee guida di sicurezza.
SELinux aiuta gli amministratori a incrementare in modo significativo i controlli sui processi dei loro sistemi; il programma, però, semplifica la risoluzione dei problemi solo in modo condizionale. Se un accesso viene bloccato, SELinux mostra una notifica di errore che può essere molto vaga, complicandone la ricerca diretta. SELinux è inoltre un modulo relativamente complicato. Per molti amministratori, confrontarsi con le linee guida di sicurezza e definire gli attributi è un procedimento troppo complesso o che richiede un notevole impegno. Per di più, è da considerare che SELinux diminuisce le prestazioni del sistema operativo, anche se in modo esiguo.
SELinux è uno strumento per la sicurezza molto efficace. Richiede però anche un po’ di lavoro aggiuntivo. Il software può funzionare solo se non si temono gli sforzi di configurazione. Se il sistema è impostato solo a metà, la sua utilità è pari a zero. Se ne consiglia particolarmente l’uso in ambienti professionali che trattano dati sensibili.
Com’è nato SELinux?
SELinux è stato sviluppato in modo significativo dai servizi segreti americani della NSA e dalla distribuzione Linux Red Hat. Red Hat Enterprise Linux 4 e Fedora, la distribuzione di Linux supportata dalla Red Hat, sono stati i primi sistemi operativi a offrire un supporto completo con SELinux. Oltre a Red Hat e Fedora, anche Gentoo Hardened Linux offre un supporto a SELinux relativamente ampio.
Un’alternativa a SELinux è il modulo di sicurezza AppArmor, supportato soprattutto dalle distribuzioni come openSUSE o dalle piattaforme basate sul sistema Debian.