Mentre il kernel Linux fornisce un buon isolamento degli utenti e un forte controllo dei permessi dei file, un MAC come AppArmor fornisce permessi e protezione più dettagliati contro molte minacce sconosciute. Se viene rilevata una vulnerabilità di sicurezza nel kernel Linux o in un altro demone di sistema, un sistema AppArmor ben configurato può impedire l'accesso a percorsi critici che potrebbero essere vulnerabili al problema.
AppArmor può funzionare efficacemente in due modalità: applicare e lamentarsi. Enforce è lo stato di produzione predefinito di AppArmor, mentre reclami è utile per sviluppare un set di regole basato su schemi operativi reali e per registrare le violazioni. È configurato tramite file di testo in un formato relativamente amichevole e ha una curva di apprendimento più breve rispetto alla maggior parte degli altri sistemi di controllo degli accessi obbligatori.
Installazione
Per installare AppArmor su Debian, eseguire (come root):
apt install apparmor apparmor-utils auditdPuoi omettere auditd se non hai bisogno di strumenti per la generazione del profilo.
Se desideri installare profili iniziali e aggiuntivi, esegui:
apt install apparmor-profiles apparmor-profiles-extraPoiché AppArmor è un modulo del kernel Linux, è necessario abilitarlo con i seguenti comandi:
mkdir -p /etc/default/grub.dCrea il file /etc/default/grub.d/apparmor.cfg con i seguenti contenuti:
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor"Salva ed esci, quindi esegui:
update-grubQuindi riavvia.
C'è dibattito se questo dovrebbe essere fatto automaticamente. Potresti voler consultare la fine di questo bug report per vedere se questo è stato cambiato dal momento in cui scriviamo.
Una volta riavviato, puoi verificare se AppArmor è abilitato eseguendo:
aa-statoQuesto comando elencherà i profili AppArmor caricati ed elencherà il loro stato attuale di conformità (applicato, lamentato, ecc.).)
Se corri:
ps auxZ | grep -v '^non confinato'Vedrai un elenco di programmi che sono confinati da un profilo AppArmor. Un programma confinato è un programma interessato e limitato (passivo, in modalità reclamo o attivamente in modalità forzata) da AppArmor.
Modifica delle modalità / Disattivazione di AppArmor
Se desideri disabilitare AppArmor perché un programma non funziona, potresti prendere in considerazione la possibilità di impostare il profilo in modalità reclamo anziché in modalità forzata. Per fare ciò, esegui (come root o tramite sudo):
aa-complain /percorso/per/programmaAd esempio, se il ping non funziona correttamente, usa:
aa-complain /usr/bin/pingUna volta che un profilo è in modalità reclamo, puoi esaminare la registrazione tramite /var/log/syslog o con journalctl -xe su sistemi systemd (Debian 8.x, Jessie e superiori).
Dopo aver modificato il profilo per rimuovere o modificare la restrizione, puoi riattivare la modalità di applicazione per il file binario con:
aa-enforce /percorso/per/programmaNell'esempio sopra, sostituisci /percorso/a/programma con il percorso completo del binario interessato dal profilo in questione.
Se hai un problema con un programma ed è in modalità reclamo, i registri forniranno informazioni specifiche su quale azione è stata negata. Il campo dell'operazione spiegherà cosa ha tentato di fare il programma, il campo del profilo il profilo specifico interessato, il nome specificherà l'obiettivo dell'azione (i.e. quale file è stato interrotto da un'operazione di lettura o scrittura) e le maschere richieste e negate indicano se l'operazione, sia richiesta dal programma che negata per il profilo, è stata letta o leggi-scrivi.
Puoi disabilitare completamente un profilo eseguendo:
aa-disabilita /percorso/a/programmaOppure puoi disabilitare completamente AppArmor modificando il file: /etc/default/grub.d/apparmor.cfg per contenere:
GRUB_CMDLINE_LINUX_DEFAULT=”$GRUB_CMDLINE_LINUX_DEFAULT abbigliamento=0”Quindi correndo:
update-grubE riavviare il sistema.
Lavorare con i profili AppArmor
I profili AppArmor risiedono in /etc/apparmor.d/ directory. Se installi il pacchetto apparmor-profiles e apparmor-profiles-extra, troverai i profili in /usr/share/doc/apparmor-profiles e /usr/share/doc/apparmor-profiles/extra. Per attivarli, copia i file in /etc/apparmor.d quindi modificali per assicurarti che contengano i valori desiderati, salva, quindi esegui:
ricarica abbigliamento di servizioSe desideri ricaricare un solo profilo, esegui:
apparmor_parser -r /etc/apparmor.d/profiloDove "profilo" è il nome del profilo in questione.
Non è consigliabile copiare solo i profili e i profili extra in /etc/apparmor.d directory senza modificarli manualmente. Alcuni profili potrebbero essere vecchi e alcuni sicuramente non conterranno i valori desiderati. Se li copi tutti, almeno impostali per lamentarsi in modo da poter monitorare le violazioni senza interrompere i programmi in produzione:
cd /etc/apparmor.dper f in *.* ; fai aa-lamentati /etc/apparmor.d/$f; fatto
Puoi utilizzare il comando aa-enforce individualmente per abilitare i profili che desideri mantenere, ottimizzare quelli che causano problemi e applicarli o rimuovere quelli che non ti servono eseguendo aa-disable o rimuovendo il file del profilo da /etc/apparmor.d.
Creazione di un profilo AppArmor
Prima di creare un profilo personalizzato, dovrai cercare in /etc/apparmor.d e /usr/share/doc/apparmor-profiles per un profilo esistente che copre il binario in questione. Per cercarli, esegui:
trova /usr/share/doc/apparmor-profiles | grep “programma” -iSostituire programma con il programma che vuoi proteggere con AppArmor. Se ne trovi uno, copialo in /etc/apparmor.d e quindi modifica il file nel tuo editor di testo preferito.
Ogni profilo comprende tre sezioni principali: include, capacità e percorsi. Puoi trovare un riferimento utile nella documentazione di SuSE.
Include
Include fornire la sintassi che è possibile utilizzare all'interno del file. Usano la sintassi #include <> C/C++ e di solito fanno riferimento alle astrazioni trovate in /etc/apparmor.directory d/astrazioni.
capacità
La sezione delle funzionalità, che si trova in genere dopo le include, elenca le funzionalità specifiche che il programma può eseguire. Ad esempio, puoi lasciare che un programma esegua un'operazione setuid con:
capacità setuidLa capacità net_bind_service consente a un programma di collegarsi a una porta di rete. Se non lo concedi, un demone del server come Apache non può aprire la porta 80 e ascoltare. Tuttavia, l'omissione di questa funzionalità può fornire un'eccellente sicurezza per i processi di cui non ti fidi sulla rete.
percorsi
Puoi elencare i percorsi che il programma è in grado di leggere (e possibilmente scrivere). Ad esempio, se vuoi consentire al programma di accedere al file /etc/passwd, aggiungi:
/etc/passwd rNel profilo. Nota la "r" - questo significa solo lettura. Se lo cambi in "w", sarà consentito scrivere su questo percorso o file.
Anche se consenti un percorso in AppArmor, è comunque soggetto alle restrizioni del file system Linux (i.e. impostato con chmod, chgrp e chown). Tuttavia, AppArmor continuerà a fornire un ulteriore livello di protezione nel caso in cui tali meccanismi vengano compromessi.
Conclusione
La chiave per un'implementazione di successo di AppArmor è impostare i profili per lamentarsi, quindi applicare. Un attento esame del registro ti fornirà i percorsi e le capacità minime necessarie per il corretto funzionamento del programma. Assegnando questi e non più aumenterai notevolmente la sicurezza del tuo sistema.