AppArmor è un'implementazione del «Linux Security Module» per il controllo degli accessi vincolante basato sul nome. AppArmor racchiude individualmente i programmi in un insieme di file e capacità posix 1003.1e draft.
AppArmor è installato e caricato in modo predefinito e utilizza i profili di un'applicazione per determinare quali file e permessi siano necessari all'applicazione. Alcuni pacchetti installano i propri profili e ulteriori profili possono essere trovati nel pacchetto apparmor-profiles.
Per installare il pacchetto apparmor-profiles, in un terminale digitare:
sudo apt-get install apparmor-profiles
I profili di AppArmor dispongono di due modalità di esecuzione:
-
Apprendimento (complaining/learning): le violazioni del profilo sono consentite e vengono registrate. Utile per verificare e sviluppare nuovi profili.
-
Esecutiva (enforced/confined): obbliga a rispettare la politica del profilo e registra le violazioni.
Il pacchetto apparmor-utils contiene utilità a riga di comando che è possibile usare per modificare la modalità di esecuzione di AppArmor, trovare lo stato di un profilo, creare nuovi profili, ecc...
-
apparmor_status è utilizzata per visualizzare lo stato attuale dei profili AppArmor.
sudo apparmor_status
-
aa-complain posiziona un profilo nella modalità apprendimento.
sudo aa-complain /percorso/al/binario
-
aa-enforce posiziona un profilo nella modalità esecutiva.
sudo aa-enforce /percorso/al/bianrio
-
Nella directory
/etc/apparmor.d
sono archiviati tutti i profili di AppArmor ed è possibile, da qui, modificare la modalità di tutti i profili.Usare il seguente comando per impostare tutti i profili nella modalità apprendimento:
sudo aa-complain /etc/apparmor.d/*
Per impostare tutti i profili nella modalità esecutiva:
sudo aa-enforce /etc/apparmor.d/*
-
apparmor_parser è utilizzata per caricare un profilo all'interno del kernel. Può essere usata anche per ricaricare profili attraverso l'opzione -r. Per caricare un profilo:
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
Per ricaricare un profilo:
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
-
/etc/init.d/apparmor
può essere usato per ricaricare tutti i profili:sudo /etc/init.d/apparmor reload
-
La directory
/etc/apparmor.d/disable
può essere usata con l'opzione apparmor_parser -R per disabilitare un profilo.sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/profile.name
Per riabilitare un profilo disabilitato, rimuovere il collegamento simbolico al profilo in
/etc/apparmor.d/disable/
, quindi caricare il profilo usando l'opzione -a.sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
-
È possibile disabilitare AppArmor e scaricare il modulo del kernel attraverso i seguenti comandi:
sudo /etc/init.d/apparmor stop sudo update-rc.d -f apparmor remove
-
Per riabilitare AppArmor:
sudo /etc/init.d/apparmor start sudo update-rc.d apparmor defaults
![]() |
|
Sostituire profile.name con il nome del profilo da modificare e sostituire anche |
I profili di AppArmor sono dei semplici file di testo posizionati in /etc/apparmor.d/
. Questi file vengono nominati con il percorso completo all'eseguibile del profilo, sostituendo «/» con «.». Per esempio, /etc/apparmor.d/bin.ping
è il profilo AppArmor del comando /bin/ping
.
Esistono due principali tipologie di regole usate nei profili:
-
Voci di percorso: specificano a quali file nel file system un'applicazione può accedere.
-
Voci di capacità: determinano quali privilegi un processo può utilizzare.
Per un esempio, consultare /etc/apparmor.d/bin.ping
:
#include <tunables/global> /bin/ping flags=(complain) { #include <abstractions/base> #include <abstractions/consoles> #include <abstractions/nameservice> capability net_raw, capability setuid, network inet raw, /bin/ping mixr, /etc/modules.conf r, }
-
#include <tunables/global>: asserzioni di inclusione da altri file. Consente di usare un file comune con le asserzioni di inclusione per molteplici applicazioni.
-
/bin/ping flags=(complain): percorso al programma con profilo, impostandone la modalità ad apprendimento.
-
capability net_raw,: consente all'applicazione di accedere alla capacità CAP_NET_RAW Posix.1e.
-
/bin/ping mixr,: consente all'applicazione accesso in lettura e in esecuzione al file.
![]() |
|
Dopo aver modificato un profilo, è necessario ricaricarlo. Per maggiori informazioni, consultare la sezione chiamata «Utilizzare AppArmor». |
-
Progettare un piano di verifica: cercare di pensare a come l'applicazione dovrebbe essere eseguita. Il piano di verifica dovrebbe essere diviso in tanti piccoli casi d'uso, ognuno dei quali dovrebbe avere una breve descrizione e un elenco dei passi da compiere.
Alcuni casi standard da verificare sono:
-
Avvio del programma.
-
Arresto del programma.
-
Ricaricamento del programma.
-
Verifica di tutti i comandi supportati dallo script init.
-
-
Generare il nuovo profilo: usare aa-genprof per generare un nuovo profilo. Da un terminale:
sudo aa-genprof eseguibile
Per esempio:
sudo aa-genprof slapd
-
Affinché il proprio nuovo profilo venga incluso nel pacchetto apparmor-profiles, segnalare un bug su Launchpad riguardo il pacchetto AppArmor:
-
Includere la pianificazione e le casistiche del test.
-
Allegare il nuovo profilo al bug.
-
Quando il programma si comporta stranamente, messaggi di audit vengono inviati ai file di registro. Il programma aa-logprof può essere usato per analizzare i file di registro per i messaggi di audit di AppArmor, per controllarli e per aggiornare i profili. Da un terminale:
sudo aa-logprof
-
Per le opzioni avanzate di configurazione, consultare la AppArmor Administration Guide
-
Per maggiori informazioni su come usare AppArmor con altri rilasci di Ubuntu, consultare la documentazione della comunità italiana.
-
La pagina OpenSUSE AppArmor è un'altra introduzione ad AppArmor.
-
Un buon posto per chiedere assistenza riguardo AppArmor, e per partecipare nella comunità di Ubuntu Server, è il canale IRC #ubuntu-server su freenode.