Come proteggere i tuoi server Linux con SELinux

SELinux può aiutarti a proteggere il tuo server da processi o applicazioni malfunzionanti. Sviluppato dalla NSA (National Security Agency) per proteggere i dispositivi governativi dagli attaccanti, l’architettura di Linux con sicurezza avanzata (SE) utilizza protocolli di sicurezza per limitare l’accesso alle risorse di sistema. Scopri come puoi usarlo per il tuo server.
Indice
- Architettura SELinux
- Come installare o abilitare SELinux
- Come configurare SELinux
- Politiche SELinux
- Come gestire gli errori di SELinux
- Come disattivare SELinux
- Domande Frequenti
Leggi anche: Cos’è la shell Rc e come installarla in Linux
Architettura SELinux
SELinux è un modulo del kernel che può essere abilitato o disabilitato dall’amministratore di sistema. Poiché l’accesso a file e porte di rete è limitato da una politica di sicurezza, un programma difettoso o un demone mal configurato non può avere un grande impatto sulla sicurezza del sistema.
Quando un’applicazione o un processo richiede l’accesso ai file nel sistema SELinux, controlla prima la cache del vettore di accesso (AVC). Se il permesso è già memorizzato, restituisce il file per l’applicazione richiesta. Se il permesso non è memorizzato, invia la richiesta al server di sicurezza. Il server di sicurezza verifica tutte le politiche di sicurezza nel proprio database. A seconda della politica di sicurezza, il permesso viene quindi concesso o rifiutato.
Non esiste un concetto di root o superutente in SELinux. La sicurezza di una distribuzione Linux non modificata senza SE Linux dipende dalla correttezza del kernel, tutte le applicazioni privilegiate e le rispettive configurazioni. Un difetto o bug in uno di questi componenti può creare una superficie di attacco e compromettere il sistema.
D’altra parte, un sistema Linux modificato con SELinux dipende principalmente dalla correttezza del kernel e delle politiche di sicurezza.
Leggi anche: Come usare il comando Rm in Linux
Come installare o abilitare SELinux
SELinux sta per Linux Sicurezza Avanzata. SELinux è parte del kernel Linux dal 2003. Pertanto, non devi installarlo separatamente. Tuttavia, nella maggior parte delle distribuzioni Linux desktop, è disabilitato di default.

SELinux ha tre modalità principali: Attiva, Permissiva e Disattivata. Discutiamole brevemente:
- Attiva: Questa modalità attiva e protegge il sistema Linux utilizzando politiche di sicurezza.
- Permissiva: Non impone le politiche di sicurezza ma registra tutto. Questa modalità è utile per scopi di risoluzione dei problemi.
- Disattivata: Disattiva SELinux. Questa opzione non è consigliata e, se riattivi SELinux nel tuo sistema, ciò porta a errori a causa delle modifiche nell’etichettatura.
Nota: Ubuntu viene fornito con AppArmor, un’alternativa a SELinux. Sebbene SELinux sia disponibile su Ubuntu, non è compatibile con AppArmor e potrebbe danneggiare il tuo sistema se abilitato. Se hai davvero bisogno di usare SELinux su Ubuntu, assicurati di disabilitare AppArmor e fai dei test intensivi (inizia prima con la modalità permissiva) prima di utilizzarlo per scopi di produzione.
- Per attivare SELinux nel tuo sistema, devi modificare il file “/etc/selinux/config”. Apri questo file nel tuo editor di testo.
sudonano/etc/selinux/config- All’interno del file di configurazione, imposta
SELINUX=permissive. Premi Ctrl + O e invia Invio per salvare il file e premi Ctrl + X per uscire dall’editor. SELinux è ora attivato nel tuo sistema.
Nota: se cerchi di imporre SELinux direttamente prima di renderlo permissivo, potrebbe etichettare erroneamente file e processi e impedirti di avviare il sistema.
- Per etichettare automaticamente il filesystem, crea un file chiamato “.autorelabel” nel tuo filesystem root. Ora, quando avvii il tuo sistema, SELinux etichetterà automaticamente il tuo filesystem. Per ridurre gli errori, mantieni l’opzione
SELINUX=permissivecome è nella cartella di configurazione. Dopo che tutto è stato etichettato, imposta SELinux suSELINUX=enforcingin “/etc/selinux/config” e riavvia.
SELinux sarà correttamente attivato nel tuo sistema.
Leggi anche: Come personalizzare il prompt del terminale Linux utilizzando Starship
Come configurare SELinux
SELinux è un’architettura che consente agli amministratori di sistema di controllare cosa può accedere alle risorse di sistema. SELinux limita l’accesso al sistema utilizzando politiche di sicurezza. Ci sono molti modi per configurare SELinux per proteggere il tuo sistema, con i più popolari che sono “politica mirata” e “sicurezza multilivello” (MLS).
Una politica mirata è la politica di sicurezza predefinita. Copre una gamma di politiche di sicurezza, come l’accesso ai file, le attività, i servizi, ecc. La sicurezza multilivello (MLS), generalmente utilizzata da governi e grandi organizzazioni, è molto complicata da configurare e richiede un team dedicato per gestirla.
Puoi controllare la tua attuale modalità SELinux con il comando getenforce e sestatus.
Se hai solo bisogno di cambiare la modalità SELinux nella sessione corrente, puoi eseguire i seguenti due comandi.
sudo setenforce 0: Imposta SELinux in modalità permissiva per la sessione corrente.sudo setenforce 1: Imposta SELinux in modalità di imponimento per la sessione corrente.
Politiche SELinux
SELinux funziona come un sistema di etichettatura. Associa ogni file, porta e processo con un’etichetta. Le etichette sono un modo logico per raggruppare le cose insieme. Il kernel è responsabile della gestione dell’etichetta durante l’avvio.

Le politiche SELinux possono essere gestite mediante booleans. Ad esempio, impostiamo un booleano su un demone chiamato httpd. httpd è un demone del server HTTP Apache che utilizziamo per eseguire server web in Linux.
Per elencare tutti i moduli specifici per httpd, esegui il seguente comando nel tuo terminale:
getsebool -a|grep httpdQui, l’opzione -a elenca tutti i booleans, e utilizziamo grep per filtrare solo i booleani relativi a httpd. Leggi questo articolo per sapere di più su grep in Linux.
L’output del comando sopra appare simile all’immagine sottostante.
httpd_builtin scripting --> on
httpd_can_check_spam --> off
httpd can connect ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythty --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd dbus sssd--> offDall’elenco sopra, prendiamo il booleano httpd_can_connect_ftp e cambiamo il suo valore. Prima, leggi il valore di httpd_can_connect_ftp, se è attivo o disattivato:
getsebool httpd_can_connect_ftpImpostiamo il valore di httpd_can_connect_ftp per permettere.
setsebool -P httpd_can_connect_ftp 1Qui, 1 rappresenta allow o on. Il tag -P viene utilizzato per rendere il cambiamento permanente. Se elenchi di nuovo i booleans relativi a httpd, puoi vedere la modifica nel valore di httpd_can_connect_ftp a on.
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd can connect ftp --> on
httpd_can_connect_ldap --> off
httpd_can_connect_mythty --> off
httpd_can_connect_zabbix --> off
httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> off
httpd dbus sssd--> offLeggi anche: Come impostare WordPress utilizzando Docker in Ubuntu
Come gestire gli errori di SELinux
SELinux ha in generale 4 tipi di errori:
- Il sistema è stato compromesso: SELinux protegge il tuo sistema limitando l’accesso, ma a volte, questo non è sufficiente. Se ottieni questi errori, il tuo sistema potrebbe essere compromesso. Prendi le necessarie contromisure il prima possibile.
- Bug nella politica: se c’è un bug nella politica che necessita di essere corretto, appare questo errore.
- Le etichette sono sbagliate: Questo messaggio di errore appare durante la personalizzazione delle etichette da parte dell’utente o quando l’auto etichettatura di SELinux fallisce. Ci sono molti strumenti sul mercato per correggere questi errori di etichettatura.
- Una politica deve essere corretta: Questi errori originano quando apporti alcune modifiche al sistema e non informi SELinux al riguardo. Puoi correggere questo errore utilizzando booleans o moduli di politica.
Come disattivare SELinux
Disattivare SELinux non è mai una buona opzione per server aziendali e governativi e dispositivi esposti al pubblico che sono molto soggetti ad attacchi. Ma se desideri disattivare SELinux nel tuo sistema, segui queste istruzioni.
- Vai al file di configurazione SE Linux in “/etc/selinux” e cambia la modalità di configurazione SE Linux da
enforcingapermissive, quindi riavvia il tuo sistema. - Cambia la modalità SELinux da
permissiveadisabled.
Dopo il prossimo riavvio, SELinux nel tuo sistema è disattivato e diventa un normale sistema Linux.
Leggi anche: Come impostare un firewall in Linux
Domande Frequenti
SELinux è presente in Android?
Sì, SELinux è implementato in Android dalla versione 4.3. Ha migliorato la sicurezza di Android per proteggere gli utenti Android dagli attacchi informatici.
SELinux è un firewall?
SELinux non è un firewall. Il firewall controlla il traffico tra il computer e la rete. Mentre SELinux controlla e governa l’accesso al filesystem e alla rete di diversi programmi all’interno del sistema, possiamo considerare SELinux come un firewall interno per proteggere il sistema dai suoi programmi.
SELinux è un sistema operativo?
SELinux non è un sistema operativo. È un modulo di sicurezza del kernel che esiste nel kernel Linux. Fornisce supporto per politiche di sicurezza di controllo degli accessi e controlli di accesso obbligatori (MAC). Per essere considerato un sistema operativo, ha bisogno di più del solo kernel. Nella maggior parte dei sistemi operativi basati su Linux, puoi utilizzare SELinux.
Dovresti usare SELinux?
Se sei un amministratore di sistema e conosci il sistema Unix, dovresti usare SELinux, poiché migliora la sicurezza del tuo server e minimizza la superficie di attacco. Se non sei molto familiare con i sistemi Unix, puoi anche usare AppArmor. Questo è relativamente più facile rispetto a SELinux. Se sei un utente domestico e utilizzi Linux solo sul tuo computer desktop, non c’è bisogno di usare SELinux. Ti darà solo mal di testa da configurare e ridurrà la tua produttività.