Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati


Attenzione! Questa è una Pagina di prova. Le informazioni riportate potrebbero essere incomplete, errate e potenzialmente pericolose. Per contribuire alla realizzazione di questa pagina consultare la discussione di riferimento.

Introduzione

Questa guida fornisce una panoramica completa su AppArmor, spiegando cos'è e come funziona per migliorare la sicurezza del sistema. Illustra come verificare lo stato di AppArmor, installare gli strumenti di utilità necessari, e gestire i profili di sicurezza delle applicazioni: ciò include come cambiare le modalità dei profili (enforce/complain), creare nuovi profili utilizzando strumenti come aa-genprof e aa-easyprof, aggiornare quelli esistenti con aa-logprof, e interpretare i log per la risoluzione dei problemi. L'obiettivo è consentire agli utenti di confinare efficacemente le singole applicazioni, indipendentemente dall'utente che lo esegue, riducendo la superficie di attacco e limitandone le capacità, i potenziali danni in caso di compromissione. Se un'applicazione protetta da AppArmor viene compromessa, il profilo di AppArmor può impedire all'exploit di accedere o danneggiare altre parti del sistema.

Su Ubuntu, AppArmor è installato e abilitato per impostazione predefinita, con profili attivi per diverse applicazioni critiche del sistema.

AppArmor è uno strumento potente per migliorare la sicurezza del sistema Ubuntu. Sebbene richieda un po' di apprendimento per la gestione avanzata dei profili, i suoi strumenti di utilità e la configurazione predefinita offrono già un buon livello di protezione. Investire tempo nella configurazione di profili per le applicazioni, specialmente quelle esposte alla rete o che gestiscono dati sensibili, può ridurre significativamente il rischio di compromissione.

Installazione

È altamente improbabile che si debba installare manualmente AppArmor su una versione di Ubuntu 22.04 LTS e successive, a meno che non si stia usando una build estremamente minimale o personalizzata, o che si abbia disinstallato esplicitamente i pacchetti. La procedura descritta è quella standard per installare questi componenti se mancano. Ecco i passaggi da seguire nel caso (molto raro) in cui non lo fosse o fosse stato rimosso:

  1. Aggiornare l'elenco dei pacchetti. È sempre una buona pratica aggiornare l'elenco dei pacchetti prima di installare nuovo software.

  2. Installare i pacchetti di AppArmor, i suoi componenti principali e strumenti di utilità sono disponibili nei repository ufficiali di Ubuntu. Digitare nel terminale il seguente comando:

     sudo apt install apparmor apparmor-utils apparmor-profiles apparmor-profiles-extra

Analizziamo questi pacchetti:

Pacchetto

apparmor

Pacchetto principale che fornisce il demone di AppArmor, le librerie e l'integrazione con il sistema.

apparmor-utils

Contiene gli strumenti da riga di comando per gestire AppArmor, come aa-status, aa-complain, aa-enforce, aa-genprof, aa-logprof, ecc.

apparmor-profiles

Fornisce un set di profili di sicurezza predefiniti per molte applicazioni comuni.

apparmor-profiles-extra

Contiene profili aggiuntivi, spesso per applicazioni meno comuni o più specifiche.

Verificare lo stato del servizio AppArmor

Dopo l'installazione, il servizio AppArmor dovrebbe avviarsi automaticamente. Per verificarlo, digitare nel terminale il seguente comando:

sudo systemctl status apparmor.service

Lo stato exited è normale per apparmor.service perché il suo compito principale è caricare i profili nel kernel all'avvio e poi uscire; il kernel stesso poi gestisce l'enforcement.

Se per qualche motivo non fosse attivo, avviarlo e abilitarlo all'avvio, digitando nel terminale i seguenti comandi:

sudo systemctl start apparmor.service
sudo systemctl enable apparmor.service

Verificare il funzionamento di AppArmor

Utilizzare il comando aa-status per vedere se AppArmor è operativo e quali, quanti profili sono caricati, quanti sono in modalità enforce (applicazione), in modalità complain (segnalazione), e quali processi sono confinati. Digitare nel terminale il seguente comando:

sudo aa-status

si dovrebbe vedere un output simile a questo (il numero di profili può variare):

apparmor module is loaded.
XX profiles are loaded.
YY profiles are in enforce mode.
   ... (elenco dei profili in enforce mode) ...
ZZ profiles are in complain mode.
   ... (elenco dei profili in complain mode) ...
N processes have profiles defined.
M processes are in enforce mode.
O processes are in complain mode.
P processes are unconfined but have a profile defined.

Verificare il modulo LSM se è attivo nel kernel

Digitare nel terminale il seguente comando:

cat /sys/kernel/security/lsm

dovrebbe apparire apparmor nella lista.

Comandi di Base

Utilizzare aa-genprof e aa-logprof, questi strumenti semplificano notevolmente la creazione e la manutenzione dei profili.

Verificare lo Stato di AppArmor

Come già visto, digitare nel terminale il comando:

sudo aa-status

Profili

Un profilo AppArmor è un file di testo che definisce le risorse a cui un'applicazione può accedere (file, rete, capacità, ecc.) e le azioni che può compiere. I profili sono specifici per eseguibile.

Concedere solo i permessi strettamente necessari al funzionamento dell'applicazione.

Dove si Trovano i Profili

I profili di AppArmor sono memorizzati in /etc/apparmor.d/.
I file disabilitati tramite aa-disable sono spesso gestiti tramite symlink o modifiche nel file di cache, ma aa-disable è il modo corretto per gestirli.

Modalità dei Profili

Un solo profilo AppArmor può operare in diverse modalità:

  • Enforce (Applicazione): La modalità predefinita. AppArmor blocca attivamente le azioni che violano le regole del profilo e registra i tentativi di violazione.

  • Complain (Segnalazione o Audit): AppArmor non blocca le azioni che violano le regole, ma le registra. Questa modalità è utile per sviluppare e testare nuovi profili senza interrompere la funzionalità dell'applicazione.

  • Disabled (Disabilitato o Unloaded): Il profilo non è caricato nel kernel e non offre alcuna protezione per l'applicazione associata.

Cambiare la Modalità di un Profilo

Prima di modifiche importanti, fare un backup dei profili in /etc/apparmor.d/.

  • Mettere un profilo in modalità complain, digitare nel terminale il seguente comando:

    sudo aa-complain nome_profilo

    come per esempio:

    sudo aa-complain /etc/apparmor.d/usr.sbin.cupsd
  • Mettere un profilo in modalità enforce, digitare nel terminale il seguente comando:

    sudo aa-enforce nome_profilo

    come per esempio:

    sudo aa-enforce /etc/apparmor.d/usr.sbin.cupsd

Sostituire nome_profilo con il percorso completo del file del profilo (es. /etc/apparmor.d/usr.bin.firefox) o solo il nome del profilo come riportato da [[#Verificare_lo_stato_di_AppArmor|aa-status]].

Disabilitare un Profilo

Per rimuove il profilo dal kernel, disattivare la protezione per quella specifica applicazione. Digitare nel terminale il comando:

sudo aa-disable nome_profilo

come per esempio:

sudo aa-disable /etc/apparmor.d/usr.sbin.cupsd

Per riabilitarlo, usa aa-enforce o aa-complain.

Ricaricare tutti i Profili

Se è stato modificato manualmente un profilo o aggiunto nuovi profili, ricaricare il servizio AppArmor, digitando nel terminale il seguente comando:

sudo systemctl reload apparmor.service

Oppure, per ricaricare un singolo profilo modificato:

sudo apparmor_parser -r /etc/apparmor.d/nome_profilo

per esempio:

sudo apparmor_parser -r /etc/apparmor.d/usr.bin.firefox

Gestione dei Profili

Creare un Nuovo Profilo (Semplificato)

Evitare profili troppo generici. Più un profilo è specifico, maggiore è la sicurezza.

Quando si crea o modifica significativamente un profilo, utilizzare la modalità complain per evitare di bloccare l'applicazione durante i test.

Lo strumento aa-easyprof crea un template di profilo base per un'applicazione.

Digitare nel terminale il comandoi:

sudo aa-easyprof /percorso/completo/eseguibile

come per esempio:

sudo aa-easyprof /usr/local/bin/mioprogramma

creerà un file di profilo in /etc/apparmor.d/ (es. usr.local.bin.mioprogramma) che si dovrebbe poi modificare e affinare. Dopo la creazione, mettirlo in modalità complain e utilizzare aa-logprof per affinarlo.

Dopo aver creato o modificato un profilo, testare a fondo l'applicazione per assicurarsi che tutte le funzionalità legittime siano permesse.

Generare un Profilo (Interattivo)

aa-genprof è uno strumento interattivo che aiuta a creare un profilo analizzando il comportamento di un'applicazione.

  1. Avviare aa-genprof per l'eseguibile desiderato, digitando nel terminale il seguente comando:

    sudo aa-genprof /percorso/completo/eseguibile

    come per esempio:

    sudo aa-genprof /usr/bin/mycustomapp
  2. In un'altra riga di comando, eseguire l'applicazione e utilizzare tutte le sue funzionalità da includere nel profilo.

  3. Tornare al terminale di aa-genprof e premi S (Scan) per analizzare i log di sistema alla ricerca di eventi relativi all'applicazione.
  4. aa-genprof chiederà di approvare (Allow), negare (Deny), ignorare (Ignore) o gestire diversamente ogni azione rilevata.

  5. Quando è finito di testare e rispondere alle domande, premere sulla tastiera F (Finish) per salvare il profilo.

Il profilo generato sarà inizialmente in modalità complain. È consigliabile testare ulteriormente e poi passarlo in modalità enforce.

Aggiornare un Profilo Esistente

aa-logprof analizza i log di sistema (principalmente messaggi di audit da profili in complain mode o violazioni da profili in enforce mode) e permette di aggiornare i profili esistenti.

  1. Assicurarsi che il profilo da aggiornare sia in modalità complain o che l'applicazione stia generando violazioni registrate.
  2. Eseguire, digitando nel terminale il seguente comando:

    sudo aa-logprof
  3. Similmente a aa-genprof, aa-logprof presenterà gli eventi registrati e chiederà come gestirli (Allow, Deny, Glob, ecc.) per aggiornare il profilo.

Modifica Manuale dei Profili

Modificare i file di profilo direttamente con un editor di testo (es. nano, vim).
La sintassi dei profili è potente ma può essere complessa. Consulta la documentazione ufficiale (man apparmor.d) per i dettagli.

Struttura base di un profilo

#include <tunables/global>

/percorso/completo/eseguibile {
  #include <abstractions/base>

  # Regole specifiche
  capability net_bind_service,
  network tcp,

  /bin/ping mixr,
  /home/*/documenti r,
  /var/log/mioprogramma.log w,

  # Nega esplicitamente qualcosa
  deny /etc/shadow r,
}
  • #include: Importa file di astrazione o configurazioni globali. Le astrazioni (in /etc/apparmor.d/abstractions/) raggruppano regole comuni.

  • /percorso/completo/eseguibile: Il path dell'eseguibile che questo profilo confina.

  • capability: Permessi a livello di kernel.

  • network: Permessi di rete.
  • r (read), w (write), x (execute), m (memory map executable), l (link), k (lock).
  • mixr: Permette l'esecuzione di un altro programma sotto il profilo del programma figlio, se esiste, altrimenti eredita il profilo corrente.

Dopo aver modificato un profilo, ricaricarlo:

sudo apparmor_parser -r /etc/apparmor.d/nome_del_profilo_modificato

Oppure ricaricare tutto AppArmor:

sudo systemctl reload apparmor.service

Risoluzione problemi

Riavvio (Opzionale ma consigliato)

Anche se il servizio AppArmor carica i profili, un riavvio del sistema può garantire che tutti i componenti, incluso il modulo del kernel, siano correttamente inizializzati e che le applicazioni lanciate all'avvio siano immediatamente confinate dai profili disponibili. Digitare nel terminale il seguente comando:

sudo reboot

Dopo il riavvio, verificare nuovamente con il comando:

sudo aa-status

Visualizzazione dei Log

Quando un'applicazione non funziona come previsto, una delle prime cose da fare è controllare se AppArmor sta bloccando qualcosa.

Mettere temporaneamente il profilo dell'applicazione in modalità complain e verificare i log, digitare nel terminale il comando:

sudo aa-complain /etc/apparmor.d/profilo_problematico

esegui l'applicazione e riproduci il problema.

sudo aa-logprof

per vedere se ci sono nuove voci da aggiungere al profilo

I messaggi di AppArmor (violazioni, audit) sono generalmente inviati al log del kernel e/o al demone di audit.

  • Visualizzare i log del kernel (dmesg), digitare nel terminale:

    sudo dmesg | grep -i apparmor
  • Visualizzare i log tramite journalctl, digitare nel terminale:

    • Messaggi del kernel:

        sudo journalctl -k | grep -i apparmor
    • Messaggi di audit più generali:

        sudo journalctl | grep -i audit
    • Tutti i messaggi correlati:

        sudo journalctl | grep -i apparmor
  • Log di Auditd: Se auditd è installato e configurato, i log potrebbero trovarsi in /var/log/audit/audit.log.


CategoryHomepage CategoryNuoviDocumenti