SELinux vs AppArmor: Quali Sono le Differenze e Quale Dovresti Usare?

SELinux (acronimo di Security Enhanced Linux) è un modulo di sicurezza del kernel Linux utilizzato per aumentare la sicurezza nelle distribuzioni Linux indurendo l’accesso a file e processi. Un altro modulo di sicurezza del kernel Linux simile utilizzato per questo scopo è AppArmor. C’è molto interesse per questi due moduli a causa dei loro ruoli sovrapposti nel controllo degli accessi per i sistemi operativi Linux. Questo articolo tratta le differenze tra SELinux e AppArmor, consentendo agli utenti di determinare quale di questi moduli sia più adatto alle loro esigenze attraverso un confronto delle funzionalità e della facilità d’uso.
Indice
- Che Cos’è SELinux?
- Operazioni e Comandi di SELinux
- Che Cos’è AppArmor?
- Facilità d’Uso tra SELinux e AppArmor
- Domande Frequenti
Leggi anche: 5 Migliori Distribuzioni Linux-Libre per una Maggiore Sicurezza
Che Cos’è SELinux?
Mettere in sicurezza i server con SELinux elimina la dipendenza dallo stile di accesso DAC basato su utenti e ruoli effettivi del sistema. Invece, introduce un sistema di contesto a tre stringhe per ogni processo o utente del sistema. Le tre stringhe, ossia nome utente, ruolo e dominio, consentono maggiore flessibilità e controllo sull’accesso al sistema.
Un processo può essere autorizzato a operare in un dominio specifico attraverso la configurazione delle politiche in SELinux. L’unica eccezione è quando un processo viene avviato in un contesto esplicitamente definito tramite il comando runcon. Tuttavia, se esistono politiche conflittuali per un tale processo già in configurazione, SELinux può negare tale transizione in un altro contesto. Questo garantisce che SELinux operi sul principio di negare di default. Qualsiasi processo o utente deve avere una configurazione di accesso esplicita per un file o una risorsa di sistema prima di potervi accedere.
Operazioni e Comandi di SELinux
Come estensione dei comandi di utilità comuni nel terminale, SELinux fornisce switch -Z, che consente di visualizzare il contesto di sicurezza di file e processi. Comandi come ps e ls traggono vantaggio da questo switch per eseguire rapidamente il debug o identificare errori nella configurazione. Qui di seguito è mostrato uno screenshot del comando ls.
ls-Z
La prima parte di ogni riga di output è il dominio, la seconda è il tipo di oggetto e la terza è il nome utente nella configurazione di SELinux. In questo modo, SELinux può fornire un pieno controllo sull’accesso a ciascun file e processo. I seguenti comandi vengono utilizzati per manipolare il contesto di file e directory.
| Comando | Utilizzo |
|---|---|
| chcon -t | Cambia il contesto di un file target |
| chcon -R | Cambia il contesto di una directory target (cambiamento ricorsivo) |
| restorecon -v | Ripristina il contesto di un file ai valori predefiniti |
| restorecon -v -R | Ripristina il contesto di una directory ai valori predefiniti (cambiamento ricorsivo) |
| semanage fcontext -a -t | Imposta il contesto predefinito di una directory a ciò che il REGEX valuta |
Ad esempio, se c’è bisogno di cambiare il contesto di tutti i file nella directory “/srv/web” in “httpd_sys_content_t”, è possibile utilizzare il seguente comando:
sudo semanage fcontext -a-t httpd_sys_content_t “/srv/web(/.*)”
Poiché questo contesto visibile nello screenshot è già definito per la directory “/srv/web” in modo ricorsivo, SELinux visualizza un messaggio per informare l’utente. Se non è definito, un’operazione semanage riuscita non mostra alcun output.
Gli amministratori di sistema e gli utenti possono abilitare, disabilitare o rendere SELinux permissibile attraverso l’uso del comando setenforce. Analogamente, per controllare quale sia lo stato di applicazione al momento, gli utenti possono utilizzare il comando getenforce come mostrato nello screenshot qui sotto.

Leggi anche: Come Trasferire File in Sicurezza in Linux Usando SCP
Che Cos’è AppArmor?
AppArmor è supportato nello sviluppo da Canonical, la società madre che sviluppa la distribuzione Ubuntu di Linux. AppArmor mira a essere più semplice e facile da usare rispetto a SELinux e i suoi profili vengono creati nella directory “/etc/apparmor.d/”. Un profilo AppArmor per il processo “/usr/bin/man” è mostrato nello screenshot qui sotto.

Operazioni e Comandi di AppArmor
Per vedere lo stato di AppArmor, viene utilizzato il comando aa-status. Un output di esempio del comando è mostrato qui sotto.

I profili di AppArmor possono essere elencati dai contenuti della directory “/etc/apparmor.d/”, come mostrato qui sotto.

Dall’elenco dei profili sopra, se un utente desidera disabilitare il profilo usr.bin.man, può utilizzare il seguente comando:
sudo aa-complain /usr/bin/manSi noti che un profilo disabilitato si trova nella sottodirectory disabilitata della directory principale dei profili di AppArmor. Per riabilitare un profilo che è stato disabilitato, viene utilizzato il seguente comando:
sudo aa-enforce /usr/bin/manFacilità d’Uso tra SELinux e AppArmor
AppArmor lavora con i percorsi dei file nel filesystem anziché lavorare con stringhe per ciascun file come fa SELinux. Un vantaggio di AppArmor è che le operazioni di lettura, scrittura, blocco e altre operazioni sui file sono più facili da impostare rispetto a SELinux. D’altro canto, mentre SELinux fornisce più funzionalità per il controllo degli accessi ai file, le funzionalità sono implementate a un livello molto più basso nel sistema.
Pertanto, gli utenti devono imparare a utilizzare mknod, socket di rete e altre operazioni di sistema per lavorare con SELinux. Per chi non è un amministratore di sistema, è molto più facile imparare a usare AppArmor.
AppArmor fornisce anche una modalità di apprendimento che viene utilizzata per registrare le violazioni del controllo degli accessi. Questa modalità non limita né impedisce l’accesso in caso di violazione, ma raccoglie dati nel tempo per consentire la creazione di un profilo AppArmor separato basato sul comportamento dei programmi per ciascuna infrazione di accesso registrata. Non esiste una modalità simile disponibile in SELinux.
Leggi anche: Come Rendere Sicuro un Server Domestico Linux
Domande Frequenti
Quali distribuzioni Linux sono preinstallate con SELinux e AppArmor?
Tutte le distribuzioni Linux sotto l’ombrello di RedHat vengono preinstallate con o offrono una configurazione di SELinux, inclusi RHEL, CentOS e Fedora. AppArmor è preinstallato su Debian, Ubuntu, le loro distribuzioni derivate, SUSE Enterprise Server e distribuzioni OpenSUSE.
Quale modulo di sicurezza è il migliore per un nuovo utente Linux?
La maggior parte delle principali distribuzioni Linux viene fornita con uno dei moduli di sicurezza installati per impostazione predefinita. Pertanto, è improbabile che un nuovo utente Linux non abbia un modulo di sicurezza “out of the box”. Il confronto tra le funzionalità e la facilità d’uso tra SELinux e AppArmor mostra che per utenti esperti o amministratori di sistema che vogliono un controllo più fine sul proprio sistema operativo, SELinux è il migliore, ma per tutti gli altri, AppArmor è la scelta migliore.
Sono SELinux e AppArmor alternative a firewall, antivirus e altri software di sicurezza per utenti o dati?
SELinux e AppArmor non sono alternative ad antivirus o firewall ben configurati per la sicurezza del sistema e l’integrità dei dati. Pertanto, è consigliato completare il proprio sistema con un programma antivirus per una migliore protezione dei dati.
Crediti immagini: Pagina Wiki di AppArmor e Pagina Wiki di SELinux. Tutti gli screenshot di Zeeman Memon.