Come proteggere i tuoi server Linux con SELinux

Se Linux Hero

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.

Se Linux 2

SELinux ha tre modalità principali: Attiva, Permissiva e Disattivata. Discutiamole brevemente:

  1. Attiva: Questa modalità attiva e protegge il sistema Linux utilizzando politiche di sicurezza.
  2. Permissiva: Non impone le politiche di sicurezza ma registra tutto. Questa modalità è utile per scopi di risoluzione dei problemi.
  3. 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.

  1. 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
  1. 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.

  1. 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=permissive come è nella cartella di configurazione. Dopo che tutto è stato etichettato, imposta SELinux su SELINUX=enforcing in “/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.

Se Linux 1

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 httpd

Qui, 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--> off

Dall’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_ftp

Impostiamo il valore di httpd_can_connect_ftp per permettere.

setsebool -P httpd_can_connect_ftp 1

Qui, 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--> off

Leggi anche: Come impostare WordPress utilizzando Docker in Ubuntu

Come gestire gli errori di SELinux

SELinux ha in generale 4 tipi di errori:

  1. 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.
  2. Bug nella politica: se c’è un bug nella politica che necessita di essere corretto, appare questo errore.
  3. 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.
  4. 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.

  1. Vai al file di configurazione SE Linux in “/etc/selinux” e cambia la modalità di configurazione SE Linux da enforcing a permissive, quindi riavvia il tuo sistema.
  2. Cambia la modalità SELinux da permissive a disabled.

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à.