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.