SELinux sta per Linux Security-Enhanced (cioè mi­glio­ra­to nella sicurezza). In pratica Linux è un sistema operativo come Windows, Android o iOS con la dif­fe­ren­za che non è svi­lup­pa­to da una sola azienda, ma è stato pia­ni­fi­ca­to sin dall’inizio come un progetto open source. Il “nucleo” di Linux è co­sti­tui­to dal co­sid­det­to kernel di Linux, il cui codice sorgente è aperto a tutti gli svi­lup­pa­to­ri, sia di progetti non profit che di progetti com­mer­cia­li. Esistono diversi sistemi operativi di Linux che si basano su questo kernel di Linux, chiamati nell’insieme di­stri­bu­zio­ni. Tra le di­stri­bu­zio­ni più co­no­sciu­te di Linux troviamo Ubuntu, Debian o Fedora.

Cosa vuol dire con­cre­ta­men­te “Security-Enhanced”?

Il codice del kernel di Linux è svi­lup­pa­to co­stan­te­men­te da parte di aziende, volontari e or­ga­niz­za­zio­ni non profit. Security-Enhanced Linux è un’esten­sio­ne del kernel di Linux di­spo­ni­bi­le sotto forma di un modulo di sicurezza proprio. Già dal 2013 SELinux fa parte delle com­po­nen­ti ufficiali del kernel di Linux. Alcune di­stri­bu­zio­ni offrono SELinux come com­po­nen­te standard, ma è possibile comunque di­sat­ti­va­re il modulo in modo semplice. SELinux aiuta gli am­mi­ni­stra­to­ri a eseguire controlli rigorosi su tutti i processi nel loro sistema bloccando quelli non con­si­de­ra­ti es­sen­zia­li. SELinux permette di ridurre in modo si­gni­fi­ca­ti­vo il rischio di falle di sicurezza nei programmi ap­pli­ca­ti­vi.

È quindi utile limitare i diritti di accesso quando si conosce bene il programma. Se un’ap­pli­ca­zio­ne 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 sfrut­tar­lo a loro vantaggio. SELinux si occupa di limitarne l’accesso e di con­se­guen­za la portata dei danni.

Controlli di accesso rigorosi del sistema operativo

SELinux offre una par­ti­co­la­re ar­chi­tet­tu­ra di sicurezza basata sui principi del “Mandatory Access Control” (MAC). A dif­fe­ren­za del tra­di­zio­na­le kernel di Linux, SELinux riduce al minimo gli accessi a processi e file del sistema operativo. At­tra­ver­so un rigido pro­to­col­lo di controllo degli accessi con relative linee guida di sicurezza, è garantito il man­te­ni­men­to della ri­ser­va­tez­za e dell’integrità delle in­for­ma­zio­ni. SELinux delimita tra loro in modo chiaro i programmi ap­pli­ca­ti­vi e il sistema operativo.

Come si limitano i diritti di accesso con SELinux?

Per i controlli all’accesso, di solito Linux utilizza il Di­scre­tio­na­ry Access Control (DAC). Gli utenti o le ap­pli­ca­zio­ni a cui sono stati conferiti i diritti relativi, di solito hanno accesso il­li­mi­ta­to ai file e processi cor­ri­spon­den­ti del sistema operativo. Nel caso del Mandatory Access Control uti­liz­za­to da SELinux, invece, un am­mi­ni­stra­to­re con­fe­ri­sce alle linee guida di sicurezza già ben definite un ulteriore attributo che sta­bi­li­sce le con­di­zio­ni e le misure in cui il titolare di diritti può accedere a processi o dati precisi del sistema operativo. In caso di mancata de­fi­ni­zio­ne di tali con­di­zio­ni o misure (quindi degli attributi), l’accesso viene negato.

SELinux di­stri­bui­sce 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 in­cor­po­ra­te nelle linee guida definite. In questo modo, ad esempio, un’ap­pli­ca­zio­ne può accedere solo a una cartella con un’etichetta precisa. La verifica delle linee guida prende il nome di SELinux En­for­ce­ment.

Vantaggi e svantaggi di SELinux

SELinux rende più difficile e ostacola la vio­la­zio­ne dei diritti utente, come può ve­ri­fi­car­si nei programmi ap­pli­ca­ti­vi con falle di sicurezza; di con­se­guen­za il sistema operativo è ben protetto. Le di­stri­bu­zio­ni Linux offrono il modulo SELinux con diversi pacchetti e linee guida di sicurezza cor­ri­spon­den­ti. Ciò facilita la con­fi­gu­ra­zio­ne del livello di sicurezza. Gli am­mi­ni­stra­to­ri au­to­riz­za­ti possono anche definire au­to­no­ma­men­te le linee guida di sicurezza.

SELinux aiuta gli am­mi­ni­stra­to­ri a in­cre­men­ta­re in modo si­gni­fi­ca­ti­vo i controlli sui processi dei loro sistemi; il programma, però, sem­pli­fi­ca la ri­so­lu­zio­ne dei problemi solo in modo con­di­zio­na­le. Se un accesso viene bloccato, SELinux mostra una notifica di errore che può essere molto vaga, com­pli­can­do­ne la ricerca diretta. SELinux è inoltre un modulo re­la­ti­va­men­te com­pli­ca­to. Per molti am­mi­ni­stra­to­ri, con­fron­tar­si con le linee guida di sicurezza e definire gli attributi è un pro­ce­di­men­to troppo complesso o che richiede un notevole impegno. Per di più, è da con­si­de­ra­re che SELinux di­mi­nui­sce le pre­sta­zio­ni del sistema operativo, anche se in modo esiguo.

In sintesi
SELinux è uno strumento per la sicurezza molto efficace. Richiede però anche un po’ di lavoro ag­giun­ti­vo. Il software può fun­zio­na­re solo se non si temono gli sforzi di con­fi­gu­ra­zio­ne. Se il sistema è impostato solo a metà, la sua utilità è pari a zero. Se ne consiglia par­ti­co­lar­men­te l’uso in ambienti pro­fes­sio­na­li che trattano dati sensibili.

Com’è nato SELinux?

SELinux è stato svi­lup­pa­to in modo si­gni­fi­ca­ti­vo dai servizi segreti americani della NSA e dalla di­stri­bu­zio­ne Linux Red Hat. Red Hat En­ter­pri­se Linux 4 e Fedora, la di­stri­bu­zio­ne di Linux sup­por­ta­ta 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 re­la­ti­va­men­te ampio.

Un’al­ter­na­ti­va a SELinux è il modulo di sicurezza AppArmor, sup­por­ta­to so­prat­tut­to dalle di­stri­bu­zio­ni come openSUSE o dalle piat­ta­for­me basate sul sistema Debian.

Vai al menu prin­ci­pa­le