AppArmor

Tutorial Debian AppArmor

Tutorial Debian AppArmor
AppArmor è un sistema di controllo degli accessi obbligatorio per Linux. In un sistema di controllo dell'accesso obbligatorio (MAC), il kernel impone restrizioni su percorsi, socket, porte e vari meccanismi di input/output. È stato sviluppato da Immunex e ora è gestito da SUSE. Fa parte del kernel Linux dalla versione 2.6.36.

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 auditd

Puoi 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-extra

Poiché AppArmor è un modulo del kernel Linux, è necessario abilitarlo con i seguenti comandi:

mkdir -p /etc/default/grub.d

Crea 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-grub

Quindi 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-stato

Questo 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/programma

Ad esempio, se il ping non funziona correttamente, usa:

aa-complain /usr/bin/ping

Una 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/programma

Nell'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/programma

Oppure 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-grub

E 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 servizio

Se desideri ricaricare un solo profilo, esegui:

apparmor_parser -r /etc/apparmor.d/profilo

Dove "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.d
per 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” -i

Sostituire 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à setuid

La 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 r

Nel 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.

Strumenti utili per i giocatori Linux
Se ti piace giocare su Linux, è probabile che tu abbia utilizzato app e utilità come Wine, Lutris e OBS Studio per migliorare l'esperienza di gioco. O...
Giochi rimasterizzati in HD per Linux che non hanno mai avuto una versione Linux prima
Molti sviluppatori ed editori di giochi stanno realizzando remaster HD di vecchi giochi per prolungare la vita del franchise, per favore i fan richied...
Come utilizzare AutoKey per automatizzare i giochi Linux
AutoKey è un'utilità di automazione desktop per Linux e X11, programmata in Python 3, GTK e Qt. Utilizzando la sua funzionalità di scripting e MACRO, ...