CodeGym /Corsi /Docker SELF /Introduzione a SELinux: verifica dello stato, abilitazion...

Introduzione a SELinux: verifica dello stato, abilitazione, comandi di base

Docker SELF
Livello 5 , Lezione 2
Disponibile

1. Cos'è SELinux e a cosa serve?

SELinux (Security-Enhanced Linux) — è un modulo di sicurezza che rafforza il modello tradizionale di gestione dei permessi, aggiungendo il concetto di controllo obbligatorio. Permette all'amministratore di impostare restrizioni più severe per utenti e persino processi, minimizzando i potenziali rischi di attacchi.

In cosa è unico?

Immagina che il tuo sistema sia una casa. I permessi tradizionali (rwx per l'utente, il gruppo e gli altri) sono come le chiavi delle serrature sulle porte. Ma cosa succede se qualcuno forza una porta? SELinux diventa la seconda linea di difesa, rafforzando la sicurezza con regole di comportamento: "Ehi, anche se sei dentro, non puoi entrare in bagno!"

Compiti principali di SELinux:

  1. Protezione contro accessi non autorizzati per processi e file.
  2. Riduzione del danno da attacchi, anche se un processo è stato compromesso.
  3. Principi di "protezione di default" (tutto è vietato tranne ciò che è consentito).

Modalità operative di SELinux

SELinux può funzionare in tre modalità:

  1. Enforcing — attivo, applica la politica di sicurezza e blocca i processi che la violano.
  2. Permissive — registra solo le violazioni nei log, ma non blocca le azioni.
  3. Disabled — completamente disattivato

SELinux in modalità enforcing ricorda un fratello maggiore severo per il tuo sistema. Permissive — è il fratello minore che si lamenta, ma non fa nulla.


2. Controllare lo stato di SELinux

Per iniziare, vediamo se SELinux è attivo e in quale modalità sta funzionando. Per questo ci sono alcuni comandi utili.

Comando getenforce

Questo comando ti dirà semplicemente quale modalità è attualmente utilizzata: Enforcing, Permissive, o Disabled.

$ getenforce
Enforcing

Se l'output è Disabled, significa che SELinux è disabilitato — e questo vuol dire che dovrai fare un po' di lavoro per abilitarlo, ma ne parleremo più avanti.

Comando sestatus

Un rapporto più completo sullo stato di SELinux può essere ottenuto con questo comando. Mostrerà lo stato attuale, la modalità attiva e la politica utilizzata.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing

Qui puoi vedere:

  • enabled/disabled — se SELinux è abilitato o no.
  • current mode — modalità attiva (enforcing, permissive).
  • loaded policy name — quale politica è caricata. Per esempio, "targeted" significa che SELinux applica il controllo solo ai processi chiave.

3. Cambiare modalità in SELinux

Per modificare la modalità di funzionamento corrente di SELinux, si utilizza il comando setenforce.

Passare alla modalità permissive

Se vuoi temporaneamente "allentare il guinzaglio" di SELinux, puoi attivare la modalità permissive.

$ sudo setenforce 0

Ora SELinux registrerà solo le violazioni, ma non le bloccherà. Puoi verificare la nuova configurazione con il comando getenforce:

$ getenforce
Permissive

Passare di nuovo alla modalità enforcing

Quando vuoi riattivare il controllo rigoroso, esegui:

$ sudo setenforce 1

E, ovviamente, controlla il risultato:

$ getenforce
Enforcing

Questa modifica si applica al volo, ma solo fino al prossimo riavvio del sistema.


4. Abilitazione di SELinux

Se SELinux era disabilitato, bisogna apportare modifiche al file di configurazione. SELinux è gestito tramite il file /etc/selinux/config.

Verifica del file di configurazione corrente

Diamo un'occhiata a cosa è configurato lì. Usa qualsiasi editor di testo, ad esempio nano:

$ sudo nano /etc/selinux/config

Vedrai qualcosa di simile:

# Questo file controlla lo stato di SELinux sul sistema.
SELINUX=disabled
SELINUXTYPE=targeted

Passaggio di SELinux allo stato attivo

Per abilitare SELinux, modifica la riga SELINUX=disabled in SELINUX=enforcing o SELINUX=permissive.

Ecco un esempio di file dopo le modifiche:

# Questo file controlla lo stato di SELinux sul sistema.
SELINUX=enforcing
SELINUXTYPE=targeted

Dopo l'editing, salva il file e riavvia il sistema:

$ sudo reboot

Dopo il riavvio, puoi verificare lo stato con il comando sestatus, per assicurarti che SELinux sia attivo.


5. Analisi dei contesti di SELinux

Cosa sono i contesti?

I contesti sono delle etichette che SELinux utilizza per gestire l'accesso. Ogni file, processo e utente ha il proprio contesto.

Puoi visualizzare i contesti dei file usando il comando ls -Z. Ecco un esempio:

$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

Cosa significa?

  1. unconfinedu — utente SELinux.
  2. objectr — tipo di oggetto.
  3. httpdsyscontent_t — tipo di accesso (in questo caso correlato al server web).
  4. s0 — livello di sicurezza.

Modifica del contesto

Se SELinux blocca il funzionamento della tua applicazione, potrebbe essere necessario modificare il contesto del file. Usa il comando chcon:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

Questo comando modifica temporaneamente il tipo di contesto del file. Tuttavia, dopo un riavvio le modifiche potrebbero sparire, quindi per configurazioni permanenti è meglio modificare la politica di SELinux (parleremo di questo più avanti).


6. Esempio di utilizzo di SELinux

Vediamo un esempio. Sei un amministratore del server che vuole configurare un server web, ma SELinux blocca l'accesso ai file nella directory /var/www/html.

Passaggi:

  1. Controlla lo stato di SELinux:

    $ sestatus
    

    Assicurati che SELinux sia attivo e funzioni in modalità enforcing.

  2. Guarda i contesti dei file:

    $ ls -Z /var/www/html
    
  3. Se il contesto è sbagliato, cambialo:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. Controlla il funzionamento del server web.


7. Errori e problemi tipici

  1. SELinux è disattivato e non te ne accorgi. Controlla sempre lo stato con sestatus. Molti amministratori dimenticano di abilitare SELinux dopo l'installazione del sistema.

  2. "Perché il mio servizio non funziona?" SELinux blocca l'accesso. Usa audit.log per analizzare:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. Le modifiche al contesto non vengono salvate. Non usare chcon, ma comandi per modifiche permanenti come semanage.

Studiare SELinux è un po' come prepararsi per una maratona: all'inizio può essere difficile, ma con il tempo capirai come questo strumento può migliorare significativamente la sicurezza del sistema. Usa queste conoscenze per diventare quell'admin che non si fa battere nemmeno dal più avanzato hacker.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION