Accedi / Registrati Account

Linux

I vantaggi di SELinux

Security-Enhanced Linux (SELinux) è un'architettura di sicurezza per i sistemi Linux®, che offre agli amministratori un livello di controllo superiore sugli utenti autorizzati ad accedere al sistema. Originariamente sviluppato dall'Agenzia di sicurezza nazionale (NSA) statunitense come serie di patch per il kernel Linux, tale sistema di controllo utilizza i moduli di sicurezza Linux (LSM, Linux Security Modules).  

SELinux è stato condiviso con la community open source nel 2000 e integrato nel kernel Linux upstream nel 2003.


Come funziona SELinux?

SELinux definisce i controlli di accesso per le applicazioni, i processi e i file su un sistema basandosi su criteri di sicurezza. Si tratta di una serie di regole che indicano a SELinux gli elementi a cui è possibile accedere o meno, in modo da applicare il criterio di accesso consentito. 

Quando un'applicazione o un processo, che prende il nome di soggetto, effettua una richiesta di accesso a un oggetto, ad esempio un file, SELinux consulta una cache dei vettori di accesso (AVC) in cui sono memorizzate le autorizzazioni per soggetti e oggetti.

Se, basandosi sulle autorizzazioni nella cache, non è possibile determinare l'accesso, SELinux invia la richiesta al server di sicurezza che verifica il contesto di sicurezza dell'app o del processo e quello del file. Il contesto di sicurezza applicato è quello disponibile nel database dei criteri di SELinux e, a questo punto, l'autorizzazione viene concessa o negata. 

Se l'autorizzazione è negata, in /var/log.messages viene registrato un messaggio "avc: denied".

Configurazione di SELinux 

Per proteggere il sistema puoi configurare SELinux in vari modi. I più comuni sono costituiti da criteri mirati e dalla sicurezza multilivello (MLS).

I criteri mirati costituiscono l'opzione predefinita, che copre una vasta gamma di processi, attività e servizi. La sicurezza multilivello può essere complessa e in genere viene utilizzata solamente dalle organizzazioni governative. 

Per determinare le applicazioni che il sistema è autorizzato a eseguire, puoi consultare il file /etc/sysconfig/selinux, che include una sezione in cui è specificato se SELinux è in modalità permissive, enforcing, o disabilitato, indicando anche i criteri caricati.

Etichettatura e applicazione del tipo di etichetta in SELinux 

L'assegnazione di etichette e l'applicazione del tipo di etichetta sono i due concetti cardine in SELinux.

SELinux opera come sistema di etichettatura, associando un'etichetta SELinux a ciascun file, processo e porta di un sistema. Le etichette costituiscono un metodo logico per raggruppare gli oggetti e vengono gestite dal kernel durante la fase di avvio.

Le etichette sono in formato utente:ruolo:tipo:livello (livello è facoltativo). Utente, ruolo e livello vengono utilizzati nelle implementazioni più avanzate di SELinux, ad esempio quelle che utilizzano la sicurezza multilivello. Per i criteri mirati, il tipo di etichetta è l'elemento imprescindibile. 

Sulla base dell'applicazione del tipo di etichetta, SELinux applica un criterio definito nel sistema. L'applicazione del tipo è la parte di un criterio SELinux che specifica se un processo in esecuzione con un determinato tipo può accedere a un file etichettato con un altrettanto tipo specifico.

Abilitazione di SELinux

Se nel tuo ambiente SELinux è stato disabilitato, puoi abilitarlo modificando /etc/selinux/config e impostando SELINUX=permissive. Dal momento che SELinux non è abilitato, non è consigliabile impostare subito la modalità enforcing, perché probabilmente le etichette degli oggetti nel sistema non sono corrette e questo potrebbe impedirne l'avvio.  

Puoi imporre al sistema di riapplicare le etichette nel file system automaticamente, creando un file vuoto denominato .autorelabel nella directory radice e riavviando il sistema. Se nel sistema sono presenti troppi errori, devi eseguire un riavvio mentre è attiva la modalità permissive, al fine di completare correttamente la procedura di avvio. Terminata la riapplicazione di tutte le etichette, imposta SELinux sulla modalità enforcing tramite /etc/selinux/config, quindi riavvia il sistema o esegui setenforce 1. 

Gli amministratori di sistema che non hanno familiarità con la riga di comando possono utilizzare vari strumenti grafici per gestire SELinux. 

SELinux garantisce un ulteriore livello di sicurezza del sistema, integrato nelle distribuzioni di Linux, che dovrebbe rimanere sempre attivo per proteggere il sistema qualora venga compromesso.


Differenza fra controllo d'accesso discrezionale (DAC) e controllo d'accesso vincolato (MAC)

Mentre i sistemi Linux e UNIX usano da sempre DAC, SELinux è un esempio di sistema MAC per Linux. 

Con il controllo DAC, i file e i processi hanno un proprietario. Un file può appartenere a un utente, a un gruppo o a qualsiasi altra entità. Gli utenti hanno la possibilità di modificare le autorizzazioni dei propri file.

Con il sistema DAC, l'utente root ha il controllo completo dell'accesso e, con questo tipo di privilegi, può accedere ai file di qualsiasi altro utente o eseguire qualsiasi altra operazione nel sistema. 

Invece nei sistemi di controllo MAC, come SELinux, l'accesso è gestito da criteri impostati a livello di amministratore. Anche se le impostazioni DAC della home directory vengono modificate, i criteri SELinux impostati per impedire ad altri utenti o processi di accedere alla directory garantiscono la protezione del sistema. 

I criteri SELinux consentono di configurare impostazioni specifiche per numerosi processi. Puoi modificare le impostazioni con SELinux in modo da limitare l'accesso fra utenti, file, directory e altri elementi.


Gestione degli errori in SELinux

Se in SELinux si verificano degli errori, generalmente, indicano uno dei quattro problemi comuni riportati di seguito, che occorre risolvere:

  1. Le etichette sono sbagliate. Se l'etichettatura applicata non è corretta, puoi utilizzare gli strumenti disponibili per correggere le etichette.
  2. È necessario correggere un criterio. Potrebbe essere necessario comunicare a SELinux una modifica che hai apportato oppure correggere un determinato criterio. Per apportare la correzione puoi usare i moduli booleani o quelli dei criteri.
  3. Il criterio contiene un bug. Il criterio potrebbe presentare un bug che deve essere corretto.
  4. Si è verificata una violazione del sistema. Anche se SELinux può proteggere i tuoi sistemi in molti scenari, esiste comunque la possibilità che un sistema venga compromesso. Se sospetti una violazione, devi intervenire immediatamente.

Cosa sono i valori booleani?

I valori booleani sono impostazioni di tipo On/Off per le funzioni di SELinux. Esistono centinaia di impostazioni che consentono di attivare o disattivare le funzionalità di SELinux, e molte sono già predefinite. Per identificare i valori booleani già impostati nel sistema, puoi eseguire getsebool -a.

Linux si presta a molti altri utilizzi