## AppArmor

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.

### Utilizzare AppArmor

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 `/percorso/eseguibile/` con il percorso all'eseguibile. Per esempio, per il comando ping, usare `/bin/ping`

### Profili

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

#### Creare un profilo

- 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 il proprio piano di verifica e tutti i casi.

  - Allegare il nuovo profilo al bug.

#### Aggiornare i profili

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

### Riferimenti

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

Firewall |  | Certificati