Come installare SELinux su Ubuntu 24.04/22.04/20.04

Security-Enhanced Linux (SELinux) è essenziale per la gestione delle policy di sicurezza del controllo degli accessi sui sistemi Linux. Utilizzato principalmente da amministratori di sistema, sviluppatori e professionisti della sicurezza, SELinux offre una solida sicurezza a livello di kernel. La sua implementazione sui server Ubuntu, in particolare per le versioni LTS 24.04, 22.04 e 20.04, rafforza la sicurezza di questi sistemi.

Le caratteristiche principali di SELinux che migliorano la sicurezza di Ubuntu includono:

  • Controllo Accessi Obbligatorio (MAC): A differenza dei tradizionali sistemi di controllo degli accessi discrezionali, SELinux applica rigide regole politiche che limitano i processi e gli utenti del sistema, mitigando il rischio di accesso non autorizzato.
  • Controllo a grana fine: Fornisce un controllo dettagliato sui processi di sistema e sulle loro interazioni con file e altre risorse.
  • Politiche di sicurezza avanzate: Le policy di sicurezza personalizzate aiutano a proteggersi dalle minacce esterne e interne.
  • Controllo e registrazione: Funzionalità di registrazione complete facilitano il monitoraggio e il tracciamento degli eventi relativi alla sicurezza, aiutando a identificare e risolvere tempestivamente i problemi.

L'integrazione di SELinux in un ambiente server Ubuntu, soprattutto per coloro che gestiscono applicazioni critiche o dati sensibili, migliora significativamente la sicurezza del sistema. Questa guida, incentrata sull'installazione e sull'utilizzo di base di SELinux, mira a fornire un approccio diretto per sfruttare questi vantaggi in termini di sicurezza.

Disabilita il servizio AppArmor

Per garantire la compatibilità, verificare se AppArmor è attivo, poiché l'esecuzione contemporanea di AppArmor e SELinux può causare conflitti. Determina lo stato di AppArmor con:

sudo systemctl status apparmor

Se AppArmor è operativo, disabilitalo per evitare qualsiasi interferenza con SELinux. Esegui il comando seguente per disattivare AppArmor:

sudo systemctl disable apparmor --now

Installa SELinux tramite il comando APT

Questa fase prevede l'installazione dei pacchetti chiave di SELinux: policycoreutils, selinux-utils, E selinux-basics. Questi sono essenziali per gestire le policy SELinux e fornire il supporto fondamentale di SELinux.

Avviare l'installazione con questo comando:

sudo apt install policycoreutils selinux-utils selinux-basics

L'esecuzione di questa operazione installerà i pacchetti SELinux richiesti sul tuo sistema Ubuntu.

Attiva SELinux

Dopo aver installato i pacchetti necessari, attiva SELinux per assicurarti che venga caricato all'avvio. Questa attivazione è fondamentale per abilitare le funzionalità di sicurezza di SELinux. Esegui il seguente comando con i privilegi di root:

sudo selinux-activate

Questo passaggio configura il sistema per inizializzare SELinux durante il processo di avvio.

Applica la modalità SELinux

Impostare SELinux sulla sua modalità di applicazione è cruciale. In questa modalità, SELinux applica attivamente le proprie politiche di sicurezza, negando l'accesso in base a regole predefinite. Passa alla modalità di applicazione utilizzando:

sudo selinux-config-enforcing

Questa azione modifica la configurazione di SELinux per operare in modalità di applicazione.

Riavvio del sistema per l'attivazione di SELinux

Finalizza il processo di installazione riavviando il sistema. Ciò garantisce che tutte le modifiche vengano applicate e SELinux inizi a funzionare nella modalità impostata:

sudo reboot

Dopo il riavvio, il sistema verrà eseguito con SELinux installato, attivato e configurato per applicare le proprie politiche di sicurezza. Le seguenti sezioni ti guideranno nell'ulteriore personalizzazione di SELinux per soddisfare le tue esigenze di sicurezza.

Configura SELinux

Comprendere le modalità SELinux

SELinux funziona in tre modalità distinte:

  • Modalità di applicazione: L'impostazione predefinita, in cui SELinux applica rigorosamente le proprie politiche di sicurezza, negando l'accesso secondo le regole stabilite.
  • Modalità permissiva: Qui, SELinux registra le violazioni delle policy ma non le applica attivamente. Questa modalità è utile per testare e risolvere i problemi delle policy.
  • Modalità disabilitata: In questa modalità, SELinux è completamente disattivato, senza che vengano applicate policy.

Modifica il file di configurazione di SELinux

Per personalizzare le impostazioni di SELinux, modifica il file /etc/selinux/config file. Utilizza un editor di testo preferito, come nano, per questa attività:

sudo nano /etc/selinux/config

All'interno del file modificare il file SELINUX linea per impostare la modalità preferita. Ad esempio, per abilitare la modalità di applicazione:

SELINUX=enforcing

Applicazione delle modifiche alla configurazione

Per rendere effettive le modifiche, riavviare il sistema:

sudo reboot

Personalizzazione delle opzioni di configurazione aggiuntive di SELinux

SELinux offre diverse opzioni di personalizzazione:

  • SETLOCALDEFS: determina l'uso di contesti di file definiti localmente. Per utilizzare contesti predefiniti, impostalo su 0. Modifica il /etc/selinux/config archiviare di conseguenza:
SETLOCALDEFS=0
  • TIPO SELINUX: imposta il tipo di policy. Il tipo di politica comune “mirata” si concentra sulla protezione di servizi di sistema specifici. Per impostarlo, aggiorna il file SELINUXTYPE riga nel file di configurazione:
SELINUXTYPE=targeted

Esempio: configurazione di SELinux per un server Web

Considera la possibilità di configurare SELinux per consentire il traffico HTTP e HTTPS su un server web Ubuntu. IL semanage il comando viene utilizzato per la gestione dei criteri.

Innanzitutto, installa il file semanage utilità:

sudo apt install policycoreutils-python-utils

Quindi, consenti il ​​traffico HTTP sulla porta 80:

sudo semanage port -a -t http_port_t -p tcp 80

E traffico HTTPS sulla porta 443:

sudo semanage port -a -t http_port_t -p tcp 443

Questi comandi aggiorneranno la policy SELinux, consentendo al tuo server web di ricevere connessioni in entrata sulle porte 80 (HTTP) e 443 (HTTPS), garantendo il funzionamento sicuro del servizio web.

Verifica della modalità SELinux

Controllo dello stato di SELinux dopo il riavvio

Dopo aver riavviato il sistema Ubuntu, è fondamentale confermare lo stato operativo di SELinux. Questa verifica garantisce che il sistema applichi correttamente le impostazioni di configurazione di SELinux.

Eseguire il comando seguente per verificare lo stato corrente:

sestatus

Questo comando fornisce dettagli completi su SELinux, incluso il suo stato operativo corrente, la modalità in cui è in esecuzione (applicativa, permissiva o disabilitata) e la policy utilizzata. Fai un riferimento incrociato a questo output con le tue impostazioni nel file /etc/selinux/config file per confermare che SELinux funziona come previsto.

Risoluzione dei problemi comuni di SELinux

Ripristino dei contesti di file predefiniti

Contesti di file errati spesso portano a negazioni di accesso da parte di SELinux, interrompendo la funzionalità dell'applicazione. Per correggere questo, utilizzare il file restorecon comando. Ad esempio, per affrontare i problemi in /var/www/html directory, eseguire:

sudo restorecon -Rv /var/www/html

Questo comando ripristina ricorsivamente il contesto predefinito per tutti i file e le directory al suo interno /var/www/html, con un output dettagliato che descrive in dettaglio le modifiche.

Passaggio temporaneo alla modalità permissiva per la risoluzione dei problemi

Non sei sicuro che SELinux stia causando un problema specifico? Passa temporaneamente alla modalità permissiva per eseguire la diagnosi. Questa modalità registra le violazioni senza applicarle. Attiva la modalità permissiva con:

sudo setenforce 0

Metti alla prova la tua applicazione adesso. Se i problemi cessano, probabilmente derivano dalle politiche di SELinux. Ricordarsi di ripristinare la modalità di applicazione dopo il test:

sudo setenforce 1

Revisione dei log di SELinux per la diagnosi dei problemi

I log di SELinux sono vitali per identificare le violazioni delle policy. Su Ubuntu, il registro SELinux primario è /var/log/audit/audit.log. Per visualizzare le voci recenti, utilizzare:

sudo tail /var/log/audit/audit.log

Cerca "negato" o "AVC" nei registri per individuare potenziali violazioni.

Generazione di moduli di policy personalizzate con audit2allow

Stai riscontrando problemi legati alla politica? Utilizzare audit2allow per analizzare i log di controllo e creare un modulo di policy personalizzato. Per esempio:

sudo grep 'denied' /var/log/audit/audit.log | audit2allow -M mycustommodule
sudo semodule -i mycustommodule.pp

Il primo comando genera una policy denominata "mycustommodule" dalle voci "negate" nel registro di controllo. Il secondo installa questa policy, risolvendo potenzialmente il problema.

Gestione dei booleani di SELinux

I booleani di SELinux controllano funzionalità specifiche. Per elencare tutti i booleani e i loro stati, utilizzare:

sudo getsebool -a

Per modificare un valore booleano, ad esempio abilitandolo httpd_can_network_connect, eseguire:

sudo setsebool -P httpd_can_network_connect 1

IL -P flag garantisce la persistenza tra i riavvii.

Configurazione di SELinux per applicazioni Web: autorizzazione del traffico HTTP e HTTPS

Per le applicazioni web come WordPress, l'apertura delle porte di rete necessarie in SELinux è fondamentale. Abilita le porte 80 (HTTP) e 443 (HTTPS) con:

sudo semanage port -a -t http_port_t -p tcp 80
sudo semanage port -a -t http_port_t -p tcp 443

Configurazione SELinux per WordPress

Modifica le policy di SELinux per un funzionamento WordPress senza interruzioni:

  • Connessioni di rete per script e moduli HTTPD: abilitalo per gli aggiornamenti di plugin e temi:
sudo setsebool -P httpd_can_network_connect 1
  • Accesso in lettura e scrittura nella directory di WordPress: Assicurati che HTTPD possa interagire con i file WordPress:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-content
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/wp-config.php

Ulteriori risoluzione dei problemi Opzioni di configurazione di SELinux

Personalizza SELinux per vari requisiti software:

  • Accesso alle directory personalizzate: modifica i contesti dei file per le directory Web personalizzate, ad esempio, /opt/myapp:
sudo chcon -R -t httpd_sys_content_t /opt/myapp
  • Accesso FTP per server Web: Abilita l'accesso FTP se necessario:
sudo setsebool -P allow_ftpd_full_access 1
  • Funzionalità di posta elettronica del server Web: Se la tua applicazione necessita di funzionalità di invio di posta elettronica:
sudo setsebool -P httpd_can_sendmail 1

Queste configurazioni illustrano la flessibilità di SELinux nel soddisfare specifiche esigenze operative e di sicurezza.

Conclusione

Questa è la conclusione della nostra guida per l'installazione di SELinux su Ubuntu 24.04, 22.04 o 20.04. Abbiamo esaminato il processo di installazione, trattato alcuni comandi di base ed esplorato alcuni suggerimenti chiave per la configurazione. Ricorda, aggiornamenti regolari e monitoraggio continuo sono fondamentali per mantenere la sicurezza del tuo sistema. Sentiti libero di sperimentare le politiche di SELinux per soddisfare meglio le esigenze del tuo server, ma esegui sempre il backup delle tue configurazioni prima di apportare modifiche.

Joshua James
Seguimi
Ultimi post di Joshua James (vedi tutto)