• Immutable Page
  • Info
  • Attachments

STOP! Perché questa guida si trova sotto la pagina Cestino?. Una guida può essere cestinata dal Gruppo Documentazione se contiene istruzioni compatibili solo con rilasci non più supportati di Ubuntu oppure perché non si ha certezza che lo siano per i rilasci attualmente supportati. Queste pagine richiedono un aggiornamento e una verifica delle istruzioni contenute. Se vuoi riesumare una di queste guide contatta il Gruppo Documentazione nella board sul forum.


Introduzione

AppArmor è un framework che mette a disposizione alcune tecnologie al fine di proteggere le applicazioni dalle vulnerabilità intrinseche che potrebbero possedere, sia per i server che per le workstation. La protezione con AppArmor è indicata immunizzazione e consiste nel rispetto delle politiche di sicurezza fornite da AppArmor.

In particolare AppArmor è un sistema di controllo degli accessi che consente di specificare per ogni programma i file che il programma può leggere, scrivere e eseguire. AppArmor rende sicure le applicazioni forzandole a mantenere un "buon comportamento", senza dover fare affidamento sulle firme degli attacchi noti: in questo modo è possibile prevenire gli attacchi anche se stanno sfruttando (exploit) delle vulnerabilità ancora non conosciute.

Questo documento è basatato (diciamo pure che è una traduzione, spero non ci siano problemi di licenza) sul documento Novell AppArmor (2.0.1) Quick Start e su Novell AppArmor Administration Guide

Modalità di AppArmor

Apprendimento (complaing/learnig)

Nella modalità apprendimento (in originale complain) vengono rilevate le violazioni alle regole dei profili di AppArmor (ad 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.

Esecutiva (enforce)

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.

Avviare e arrestare AppArmor

Come ogni altro servizio presente sul sistema, è possibile gestire l'avvio e l'arresto di AppArmor con il relativo script di init: /etc/init.d/apparmor. Tale scrip accetta i seguenti parametri:

  • start - carica il modulo del kernel, analizza e carica i profili. Notare che i profili e il confino sono applicati a ogni applicazione avviata dopo che questo comando è stato eseguito. I processi già in esecuzione al momento dell'avvio di AppArmor continueranno ad essere eseguiti senza essere confinati.

  • stop - scarica (o invalida) i profili

  • reload|restart|force-reload - ricarica i profili

  • try-restart -

  • kill

  • status - se AppArmor è caricato, stampa i profili caricati e la modalità, i processi in confino e la modalità.

Stumenti a riga di comando di AppArmor

aa-autodep

aa-complain

aa-enforce

aa-genprof

aa-logprof

aa-unconfined

Metodi di profiling

NdT profiling --> generazione di profili??

Profiling singolo

Usare aa-genprof. Adatto per il profiling di piccole applicazioni.

Profiling organico

Adatto per il profiling di un discreto numero di programmi in contemporanea così come per il profiling di applicazioni che siano sempre in esecuzione.

Per mettere in pratica il profiling organico, procedere come segue:

  1. Creare dei profili per i singoli programmi che costituiscono la propria applicazione (aa-autodep).

  2. Porre i profili rilevanti in modalità apprendimento.
  3. Esercitare la propria applicazione.
  4. Analizzare il registro (aa-logprof).

  5. Ripetere i passi 3-4.
  6. Modificare i profili.
  7. Tornare alla modalità esecutiva.
  8. Ricaricate tutti i profili (/etc/init.d/apparmor restart)

Modalità di apprendimento

Quando si usa aa-getprof o aa-logprof in modalità apprendimento, è possibile avere diverse opzioni sul modo di procedere:

  • Allow - garantisce l'accesso

  • Deny - previene l'accesso

  • Glob - modifica il percorso delle directory per includere tutti i file nella directory suggerita

  • Glob w/Ext - modifica il il percorso delle directory originale mentre trattiene l'estensione del nome di file. Ciò consente ai programmi di accedere a tutti i file nelle directory suggerite, purché terminino con l'estensione specificata.

  • Edit/New - abilita la modifica della riga evidenziata XXXXXXX

  • Abort - interrompe aa-logprof, scartando tutte i cambiamenti di regola inseriti e lasciando tutti i profili non modificati.

  • Finish - chiude aa-logprof, salvando tutte i cambiamenti di regola inseriti e modificando tutti i profili.

Profilo d'esempio

# una definizione di variabile
@{HOME} = /home/*/ /root/

# un commento su foo.
/usr/bin/foo {
  /bin/mount          ux,
  /dev/{,u}random     r,
  /etc/ld.so.cache    r,
  /etc/foo.conf       r,
  /etc/foo/*          r,
  /lib/ld-*.so*       mr,
  /lib/lib*.so*       mr,
  /proc/[0-9]**       r,
  /usr/lib/**         mr,
  /tmp/foo.pid        wr,
  /tmp/foo.*          lrw,
  /@{HOME}/.foo_file  rw,

  # un commento sul sottoprofilo di foo, bar.
  ^bar {
    /lib/ld-*.so*       mr,
    /usr/bin/bar        px,
    /var/spool/*        rwl,
  }
}

Struttura di un profilo

I profili sono file di testo semplice nella directory /etc/apparmor.d. Sono composti da diverse sezioni: #include, voci di proprietà, regole e "cappelli".

#include

Voci di proprietà (POSIX.1e)

Regole: opzioni generiche per file e directory

Regole: definizione dei permessi di esecuzione

Regole: percorsi e globbing

Cappelli


CategoryDaCancellare