3 Novembre 2022

Cos’è SELinux?

Security-Enhanced Linux (SELinux) è un’architettura di sicurezza per sistemi Linux®

SELinux
Print Friendly, PDF & Email

Security-Enhanced Linux (SELinux) è un’architettura di sicurezza per sistemi Linux® che consente agli amministratori di avere un maggiore controllo su chi può accedere al sistema. È stato originariamente sviluppato dalla National Security Agency (NSA) degli Stati Uniti come una serie di patch per il kernel Linux utilizzando Linux Security Modules (LSM).

SELinux, abbreviazione di Security-Enhanced Linux , consiste in una serie di patch di sicurezza per il kernel Linux che impongono controlli di accesso per vari servizi e applicazioni. Basato su progetti originariamente sviluppati dalla National Security Agency, SELinux è diventato rapidamente un punto fermo nel regno della sicurezza informatica open source. SELinux migliora la sicurezza del sistema Linux limitando i privilegi e riducendo i danni complessivi che una determinata applicazione può causare all’intero sistema. Prima di discutere come funziona SELinux, è importante esplorare il concetto di correttezza.

La correttezza è un termine usato in informatica per descrivere quanto un dato programma si comporta in modo fedele rispetto ai risultati attesi in base alle specifiche del sistema. Ad esempio, si può dire che un’applicazione progettata per aprire un file immagine abbia un alto livello di correttezza se apre correttamente il file immagine come previsto. Questo concetto può essere ampiamente applicato a qualsiasi programma, applicazione o funzione utilizzata in un sistema informatico.

In un sistema senza SELinux, la sicurezza del sistema dipende dalla correttezza del kernel così come dalla correttezza di eventuali applicazioni privilegiate e dalle rispettive configurazioni. Se sono presenti guasti all’interno di queste aree, l’intero sistema può essere compromesso. Per questo motivo, non è consigliabile avere un kernel Linux senza alcun tipo di modulo di sicurezza, in particolare per i dispositivi connessi a Internet.

In confronto, i sistemi con SELinux dipendono sia dalla correttezza del kernel che da quella della configurazione della politica di sicurezza. Ciò garantisce che, sebbene errori di correttezza o configurazione possano causare un’applicazione compromessa, l’intero sistema non ne risentirà e le altre applicazioni potranno continuare a funzionare normalmente. In sostanza, SELinux fornisce una politica di sicurezza compartimentata che impedisce la diffusione di applicazioni compromesse e altre vulnerabilità di sicurezza.

SELinux è stato rilasciato alla comunità open source nel 2000 ed è stato integrato nel kernel Linux a monte nel 2003.

Affinché SELinux funzioni, il sistema deve prima assegnare etichette, note anche come contesto a varie funzioni. Agli utenti e ai processi viene assegnata una stringa di testo, composta da un nome utente, un ruolo e un dominio. In genere, il nome di dominio è l’unica parte che viene utilizzata per determinare i controlli di accesso. Anche file, porte di rete e hardware hanno un contesto all’interno di SELinux e vengono assegnati un nome, un ruolo e un tipo.

Il processo di mappatura dei file in un contesto di sicurezza è denominato etichettatura ed è definito dal file delle politiche utilizzato. Un file delle politiche è costituito da tre file: un file di mappatura, un file di regole e un file di interfaccia. Questi tre file devono essere compilati in un unico file delle politiche con il set di strumenti SELinux, quindi caricati nel kernel di sistema per renderlo una politica attiva. La creazione dei file delle politiche può essere eseguita manualmente o con lo strumento di gestione di SELinux. Una volta che il file della politica è stato caricato nel kernel di sistema, puoi essere certo che il tuo sistema è stato protetto.

Per impostazione predefinita, SELinux è preconfigurato sulla maggior parte dei moderni sistemi operativi Linux come Ubuntu, Debian o CentOS. Ciò significa che la maggior parte delle volte gli utenti non sono nemmeno consapevoli del fatto che SELinux sta lavorando dietro le quinte per proteggere il proprio sistema. In sintesi, la natura affidabile e discreta di SELinux lo rende una parte essenziale di qualsiasi moderno sistema Linux.

SELinux definisce i controlli di accesso per le applicazioni, i processi e i file su un sistema. Utilizza le politiche di sicurezza, che sono un insieme di regole che dicono a SELinux a cosa si può o non si può accedere, per imporre l’accesso consentito da una politica.

Quando un’applicazione o un processo, noto come soggetto, fa una richiesta per accedere a un oggetto, come un file, SELinux controlla con una cache del vettore di accesso (AVC), dove le autorizzazioni sono memorizzate nella cache per soggetti e oggetti.

Se SELinux non è in grado di prendere una decisione sull’accesso in base alle autorizzazioni memorizzate nella cache, invia la richiesta al server di sicurezza. Il server di sicurezza verifica il contesto di sicurezza dell’app o del processo e il file. Il contesto di sicurezza viene applicato dal database delle politiche di SELinux. L’autorizzazione viene quindi concessa o negata.

Se l’autorizzazione viene negata, sarà disponibile un messaggio “avc:denied” in /var/log.messages.

Come configurare SELinux

Ci sono diversi modi in cui puoi configurare SELinux per proteggere il tuo sistema. I più comuni sono i criteri mirati o la sicurezza multilivello (MLS).

La politica mirata è l’opzione predefinita e copre una gamma di processi, attività e servizi. L’MLS può essere molto complicato ed è in genere utilizzato solo dalle organizzazioni governative.

Puoi dire a cosa dovrebbe essere in esecuzione il tuo sistema guardando il file /etc/sysconfig/selinux. Il file avrà una sezione che mostra se SELinux è in modalità permissiva, in modalità di applicazione o disabilitata e quale criterio dovrebbe essere caricato.

Labeling SELinux e Type Enforcing

L’imposizione del tipo e l’etichettatura sono i concetti più importanti per SELinux.

SELinux funziona come un sistema di etichettatura, il che significa che tutti i file, processi e porte in un sistema hanno un’etichetta SELinux ad essi associata. Le Label sono un modo logico di raggruppare le cose. Il kernel gestisce le Label durante l’avvio.

Le Label sono nel formato utente:ruolo:tipo:livello (il livello è facoltativo). Utente, ruolo e livello sono usati nelle implementazioni più avanzate di SELinux, come con MLS. Il tipo di etichetta è il più importante per la politica mirata.

SELinux utilizza l’imposizione del tipo per imporre una politica definita sul sistema. L’imposizione del tipo è la parte di una politica SELinux che definisce se un processo in esecuzione con un certo tipo può accedere a un file etichettato con un certo tipo.

Abilitazione di SELinux

Se SELinux è stato disabilitato nel tuo ambiente, puoi abilitare SElinux modificando /etc/selinux/config e impostando SELINUX=permissive. Dal momento che SELinux non era attualmente abilitato, non si desidera impostarlo immediatamente su enforcing perché è probabile che il sistema abbia elementi etichettati in modo errato che possono impedire l’avvio del sistema.

È possibile forzare il sistema a rietichettare automaticamente il filesystem creando un file vuoto denominato .autorelabel nella directory principale e quindi riavviando. Se il sistema ha troppi errori, è necessario riavviare in modalità permissiva affinché l’avvio abbia esito positivo. Dopo che tutto è stato rietichettato, imposta SELinux su enforcing con /etc/selinux/config e riavvia, oppure esegui setenforce 1.

Se un amministratore di sistema ha meno dimestichezza con la riga di comando, sono disponibili strumenti grafici che possono essere utilizzati per gestire SELinux. 

SELinux fornisce un ulteriore livello di sicurezza per il tuo sistema integrato nelle distribuzioni Linux . Dovrebbe rimanere acceso in modo da poter proteggere il tuo sistema in caso di compromissione.

Tradizionalmente, i sistemi Linux e UNIX hanno utilizzato DAC. SELinux è un esempio di sistema MAC per Linux.

Con DAC, file e processi hanno dei proprietari. Puoi fare in modo che l’utente possieda un file, un gruppo possieda un file o altro, che può essere chiunque altro. Gli utenti hanno la possibilità di modificare le autorizzazioni sui propri file.

L’utente root ha il controllo completo dell’accesso con un sistema DAC. Se hai l’accesso come root, puoi accedere ai file di qualsiasi altro utente o fare quello che vuoi sul sistema.

Ma su sistemi MAC come SELinux, c’è una politica di accesso stabilita amministrativamente. Anche se le impostazioni DAC sulla tua home directory vengono modificate, una politica SELinux in atto per impedire a un altro utente o processo di accedere alla directory manterrà il sistema sicuro.

Le politiche di SELinux ti consentono di essere specifico e di coprire un gran numero di processi. È possibile apportare modifiche con SELinux per limitare l’accesso tra utenti, file, directory e altro.

Quando ricevi un errore in SELinux c’è qualcosa che deve essere risolto. È probabile che 1 di questi 4 problemi comuni:

  1. Le label sono sbagliate. Se il labelling non è corretto, puoi utilizzare gli strumenti per correggere le Label.
  2. Una politica deve essere fissata. Ciò potrebbe significare che è necessario informare SELinux di una modifica che hai apportato o potrebbe essere necessario modificare una politica. Puoi risolverlo usando booleani o moduli di criteri.
  3. C’è un bug nella politica. Potrebbe essere presente un bug nella politica che deve essere affrontato.
  4. Il sistema è stato violato. Sebbene SELinux possa proteggere i tuoi sistemi in molti scenari, esiste ancora la possibilità che un sistema venga compromesso. Se sospetti che sia così, agisci immediatamente.

Cosa sono i booleani?

I booleani sono impostazioni di attivazione/disattivazione per le funzioni in SELinux. Esistono centinaia di impostazioni che possono attivare o disattivare le funzionalità di SELinux e molte sono già predefinite. Puoi scoprire quali booleani sono già stati impostati nel tuo sistema eseguendo getsebool -a.

 

Hai dei dubbi? Non sai da dove partire? Contattaci


Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

ManagedServer.it è il principale provider italiano di soluzioni hosting ad alte performance. Il nostro modello di sottoscrizione ha costi contenuti e prevedibili, affinché i clienti possano accedere alle nostre affidabili tecnologie di hosting, server dedicati e cloud. ManagedServer.it offre, inoltre, eccellenti servizi di supporto e consulenza su Hosting dei principali CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Magento.

Torna su