SELinux vs AppArmor: confronto per i server Linux

15 min di lettura - 21 maggio 2026

hero section cover
Indice
  • SELinux vs AppArmor: quale framework MAC è più adatto al tuo server?
  • Come funziona SELinux
  • Come funziona AppArmor
  • Confronto affiancato
  • Configurazione di base
  • Quale dovresti usare?
Condividi

Confronto tra SELinux e AppArmor per la sicurezza dei server Linux: Scoprite come funziona ogni framework MAC, le differenze principali e quale scegliere per la vostra configurazione di hosting.

SELinux vs AppArmor: quale framework MAC è più adatto al tuo server?

Sia SELinux che AppArmor applicano il controllo di accesso obbligatorio (MAC) su Linux, limitando ciò che i processi possono fare anche se ottengono i privilegi di root. La differenza sta nel modo in cui lo fanno. SELinux assegna etichette persistenti a ogni file e processo. AppArmor utilizza invece regole relative al percorso dei file. Questa scelta di progettazione determina tutto il resto: complessità, livello di sicurezza e quale distribuzione include quale strumento di default.


 

Come funziona SELinux

SELinux è stato originariamente sviluppato dalla NSA ed è preinstallato su RHEL, CentOS, Fedora e Rocky Linux. Assegna a ogni oggetto del sistema, inclusi file, processi, porte e socket, un contesto di sicurezza nel formato user:role:type:level. Il type campo svolge la maggior parte del lavoro tramite un meccanismo chiamato Type Enforcement (TE).

Ad esempio, il server web Apache viene eseguito come httpd_t. I file di contenuto web hanno un tipo diverso. Se nessuna regola di policy consente esplicitamente httpd_t l'accesso a quel tipo di contenuto, la richiesta viene negata. Si tratta di un modello "deny-by-default". Nulla è consentito a meno che una regola non indichi il contrario.

SELinux supporta anche la sicurezza multilivello (MLS) e la sicurezza multicategoria (MCS), che classificano i dati in base al livello di sensibilità e ne limitano l’accesso di conseguenza. L’MCS è ciò che conferisce a SELinux il suo forte isolamento dei container, mantenendo i container separati l’uno dall’altro e dall’host. Questo è importante negli ambienti Kubernetes e OpenShift in cui i pod condividono un nodo.

Il compromesso è la complessità. SELinux ha una curva di apprendimento ripida. Risolvere i problemi relativi ai rifiuti di accesso significa leggere i log di audit, comprendere i contesti di sicurezza e, a volte, generare moduli di policy personalizzati con audit2allow. Per i team privi di personale dedicato alla sicurezza, questo onere è reale.

Come funziona AppArmor

AppArmor adotta un approccio diverso. Anziché etichettare gli oggetti, associa profili di sicurezza alle applicazioni in base ai loro percorsi di file. Un profilo per /usr/sbin/nginx definisce quali directory Nginx può leggere, a quali porte può collegarsi e di quali funzionalità ha bisogno. I profili sono file di testo semplice memorizzati in /etc/apparmor.d/.

AppArmor è il framework MAC predefinito su Ubuntu, Debian e SUSE. Fa parte del kernel Linux dalla versione 2.6.36. Le applicazioni senza un profilo ricorrono ai permessi DAC standard di Linux.

AppArmor funziona in due modalità per ogni profilo: Enforce (blocca e registra le violazioni) e Complain (registra le violazioni senza bloccarle). Questo rende pratico implementare nuovi profili in modo graduale. Iniziate in modalità Complain, esaminate i log, rendete il profilo più restrittivo, quindi passate a Enforce.

Strumenti come aa-genprof e aa-logprof aiutano a creare profili in modo interattivo osservando ciò che fa un'applicazione e generando regole dal suo comportamento. Rispetto ai moduli di policy SELinux, la sintassi è molto più facile da leggere e modificare manualmente.

Lo svantaggio è che le regole basate sul percorso non seguono i file quando questi vengono spostati. Un collegamento fisico o un mount bind può, in teoria, aggirare una restrizione basata sul percorso. AppArmor manca inoltre del supporto nativo MLS/MCS, quindi può isolare i container dall’host ma non l’uno dall’altro come fa SELinux.

Confronto affiancato

CaratteristicaSELinuxAppArmor
Modello di controllo degli accessiBasato su etichette (contesti di sicurezza)Basato sul percorso (posizioni del file system)
Impostazione predefinitaNullaConsenti tutto (restrizioni per profilo)
Spostamento dei fileLe etichette seguono il fileSicurezza legata al percorso
Supporto MLS/MCSNo
Isolamento dei containerDa container a container e da container a hostSolo da container a host
Formato delle policyModuli binari compilatiFile di testo leggibili dall'utente
Distribuzioni predefiniteRHEL, Fedora, CentOS, Rocky LinuxUbuntu, Debian, SUSE
Curva di apprendimentoRipidaModerata

Configurazione di base

SELinux

Verifica lo stato attuale:

sestatus
getenforce

Avviare in modalità Permissive per registrare le violazioni senza bloccare nulla:

setenforce 0

Utilizzare la policy "targeted" per la maggior parte dei server. Essa limita i servizi ad alto rischio come i server web e i database, lasciando tutto il resto senza restrizioni. Renderla permanente in /etc/selinux/config:

SELINUX=enforcing
SELINUXTYPE=targeted

Controlla i contesti di sicurezza su file e processi:

ls -Z /var/www/html
ps -eZ | grep httpd

Se un servizio utilizza una porta non standard, aggiornare la policy:

semanage port -a -t ssh_port_t -p tcp 9999

Per le applicazioni personalizzate che generano negazioni di accesso, crea un modulo di policy dal log di audit:

ausearch -m avc -ts recent | audit2allow -M my_custom_policy
semodule -i my_custom_policy.pp

AppArmor

Verifica quali profili sono caricati:

sudo aa-status

Installare il pacchetto di utilità se sono necessari strumenti di gestione dei profili:

sudo apt install apparmor-utils

Genera un profilo in modo interattivo mentre l'applicazione è in esecuzione:

sudo aa-genprof /path/to/binary

Perfeziona il profilo analizzando i registri alla ricerca di violazioni:

sudo aa-logprof

Cambia la modalità di un profilo:

sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx

Quale dovresti usare?

La risposta pratica per la maggior parte degli amministratori: usa quello che viene fornito con la tua distribuzione. RHEL, CentOS, Fedora e Rocky Linux sono dotati di SELinux. Ubuntu, Debian e SUSE sono dotati di AppArmor. Entrambi i framework dispongono di strumenti e politiche maturi per le loro piattaforme native. Passare all'opzione non predefinita su qualsiasi distribuzione aggiunge lavoro e riduce il supporto della comunità.

Oltre a ciò, lasciate che siano le vostre esigenze a decidere:

  • Scegliete SELinux se avete bisogno di conformità con PCI DSS, HIPAA o DISA-STIG. Se eseguite carichi di lavoro container multi-tenant su Kubernetes o OpenShift. Se avete bisogno di isolamento da container a container su host condivisi. Se il vostro ambiente gestisce dati classificati o con livelli di sensibilità.
  • Scegliete AppArmor se utilizzate Ubuntu o Debian e desiderate la protezione MAC senza un'implementazione complessa. Se la vostra configurazione è un singolo server o un piccolo cluster che esegue servizi web standard. Se la rapidità di implementazione è più importante del controllo granulare a livello di etichetta.

Entrambi i framework aggiungono un overhead di runtime minimo. SELinux memorizza le decisioni di accesso nella sua Access Vector Cache. Il caricamento delle policy di AppArmor può aggiungere un piccolo ritardo all'avvio, ma ha un impatto trascurabile durante l'esecuzione. Per la maggior parte dei carichi di lavoro di hosting, nessuno dei due sarà un collo di bottiglia.

Se hai bisogno di una base di hosting affidabile con pieno accesso root per configurare entrambi i framework, i server dedicati o i VPS di FDC ti offrono il controllo necessario per configurare SELinux o AppArmor in base alle esigenze del tuo ambiente.

Blog

In primo piano questa settimana

Altri articoli
Processi zombie in Linux: Trovare, rimuovere, prevenire

Processi zombie in Linux: Trovare, rimuovere, prevenire

Imparate a identificare, rimuovere e prevenire i processi zombie in Linux. Comandi, correzioni di codice e suggerimenti per il monitoraggio per gli amministratori di server.

15 min di lettura - 19 maggio 2026

Lista di controllo per l'irrigidimento del server Linux

15 min di lettura - 8 maggio 2026

Altri articoli
background image

Avete domande o avete bisogno di una soluzione personalizzata?

icon

Opzioni flessibili

icon

Portata globale

icon

Distribuzione immediata

icon

Opzioni flessibili

icon

Portata globale

icon

Distribuzione immediata