Introduzione
AppArmor è una implementazione del Linux Security Module di controlli d'accesso basati sul nome. AppArmor confina i singoli programmi a un gruppo di file selezionati e capacità POSIX 1003.1e draft.
Installazione
In Ubuntu 8.04 «Hardy Heron» e successive, AppArmor è installato e caricato in modo predefinito. Alcuni pacchetti installano dei profili propri, ma profili aggiuntivi possono essere trovati nel pacchetto apparmor-profiles presente nel componente universe.
Utilizzo di base
Tutti i comandi debbono essere eseguiti in un terminale.
Elencare lo stato corrente di AppArmor
sudo apparmor_status
Mettere un profilo in modalità apprendimento
sudo aa-complain /percorso/al/binario
Esempio:
sudo aa-complain /bin/ping
Nella modalità apprendimento (in originale complain) vengono rilevate le violazioni alle regole dei profili di AppArmor (per esempio il programma profilato accede a file non permessi dal profilo). Tali violazioni sono permesse, ma anche registrate. Questa modalità è conveniente per lo sviluppo di profili ed è usata dagli strumenti di AppArmor per la generazione dei profili (dalla documentazione su novell.com).
Mettere tutti i profili in modalità apprendimento
sudo aa-complain /etc/apparmor.d/*
Mettere un profilo in modalità esecutiva
sudo aa-enforce /percorso/al/binario
Esempio:
sudo aa-enforce /bin/ping
Il caricamento di un profilo nella modalità di esecuzione (enforcment) fa sì che sia rispettata la politica definita nel profilo e allo stesso tempo segnalata a syslogd ogni tentata violazione (dalla documentazione su novell.com).
Mettere tutti i profili in modalità esecutiva
sudo aa-enforce /etc/apparmor.d/*
Disabilitare l'infrastruttura AppArmor
sudo /etc/init.d/apparmor kill sudo update-rc.d -f apparmor remove
Abilitare l'infrastruttura AppArmor
sudo /etc/init.d/apparmor start sudo update-rc.d apparmor start 37 S .
Ricaricare tutti i profili
sudo /etc/init.d/apparmor reload
Ricaricare un profilo
cat /etc/apparmor.d/nome.profilo | sudo apparmor_parser -r
Esempio:
cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -r
Disabilitare un profilo
ln -s /etc/apparmor.d/nome.profilo /etc/apparmor.d/disable/ apparmor_parser -R /etc/apparmor.d/nome.profilo
Esempio:
ln -s /etc/apparmor.d/bin.ping /etc/apparmor.d/disable/ apparmor_parser -R /etc/apparmor.d/bin.ping
Abilitare un profilo
In modo predefinito, i profili sono abilitati (cioè caricati all'interno del kernel e applicati ai processi).
rm /etc/apparmor.d/disable/nome.profilo cat /etc/apparmor.d/nome.profilo | sudo apparmor_parser -a
Esempio:
rm /etc/apparmor.d/disable/bin.ping cat /etc/apparmor.d/bin.ping | sudo apparmor_parser -a
Personalizzazione dei profili
I profili possono essere trovati in /etc/apparmor.d/.
Alcune personalizzazioni possono essere compiute in /etc/apparmor.d/tunables/.
Impostare la posizione delle directory home
La posizione delle directory home può essere regolata in /etc/apparmor.d/tunables/home.
Domande frequenti
apparmor_status riporta processi che sono non confinati ma che hanno definito un profilo
Riavviare i processi elencati. Anche eseguire un riavvio di sistema corregge il problema.
AppArmor può tenere traccia e proteggere solo i processi che sono avviato dopo che il modulo kernel è stato caricato. Dopo l'installazione dei pacchetti apparmor, AppArmor viene avviato. I processi già in esecuzione però non vengono protetti da AppArmor. Sia riavviare il processo che l'intero sistema corregge il problema.
È anche possibile applicare un profilo a un processo già in esecuzione attraverso il seguente comando:
sudo sh -c "echo 'setprofile /percorso/al/binario' > /proc/pid/attr/current"
Creazione di un nuovo profilo
Progettare un piano di test
Provare a pensare a come è possibile mettere sotto tortura l'applicazione. Il piano di test dovrebbe essere diviso in casi di test più piccoli. Ciascun caso di test dovrebbe avere una piccola descrizione ed elencare i passi da seguire.
Alcuni casi di test standard sono:
- avviare il programma
- arrestare il programma
- ricaricare il programma
- controllare tutti i comandi supportati dallo script di init
Generare il nuovo profilo
Usare aa-genprof per generare un nuovo profilo.
Da un terminale, usare il comando aa-genprof:
sudo aa-genprof eseguibile
Esempio:
sudo aa-genprof slapd
Maggiori informazioni sono disponibili nella pagina di manuale:
man aa-genprof
Includere il proprio nuovo profilo nel pacchetto apparmor-profiles
Per fare in modo che il proprio nuovo profilo sia incluso nel pacchetto apparmor-profiles, aprire in Launchpad un bug per il pacchetto AppArmor:
- includere il proprio piano di test e i casi di test
- allegare il proprio profilo al bug
Aggiornamento dei profili
Quando il programma non si comporta in modo corretto, vengono inviati dei messaggi di audit ai file di registro. È possibile usare il programma aa-logprof per scansionare i file di registro in cerca dei messaggi di AppArmor, revisionare tali messaggi e aggiornare i profili:
sudo aa-logprof
Maggiori informazioni sono disponibili nella pagina di manuale:
man aa-logprof
Ulteriori risorse
http://en.opensuse.org/SDB:AppArmor_geeks: utilizzo dettagliato di apparmor