Sommario
In questo capitolo viene illustrato come creare e gestire i profili Novell® AppArmor. Per definire i profili Novell AppArmor, selezionare i programmi di cui si desidera creare i profili. Per ulteriori informazioni su questo argomento, vedere il Capitolo 2, Selezione dei programmi da immunizzare (↑Guida all'amministrazione di Novell AppArmor 2.0).
In questa sezione viene illustrata la sintassi o la costruzione dei profili Novell AppArmor. Un esempio della sintassi è contenuto nella Sezione 3.1.1, "Divisione di un profilo Novell AppArmor in più parti" (↑Guida all'amministrazione di Novell AppArmor 2.0).
I componenti di un profilo Novell AppArmor sono chiamati regole Novell AppArmor. Esistono attualmente due tipi principali di voci di funzione, percorso e regole AppArmor. Le voci di percorso specificano il contenuto a cui può accedere il processo nel file system mentre quelle di funzione forniscono un controllo più preciso sulle operazioni consentite a un processo limitato tramite chiamate di altre sistemi che richiedono autorizzazioni. Le istruzioni Include sono un tipo di meta regole o direttive che raccolgono le voci di percorso e di funzione da altri file.
La visualizzazione dei dettagli di un profilo di esempio rappresenta il miglior metodo per spiegare la struttura di un profilo e come crearne uno. Si osservi il profilo seguente per il programma /sbin/klogd:
# profile to confine klogd/sbin/klogd
{
#include <abstractions/base>
capability sys_admin,
/boot/* r
, /proc/kmsg r, /sbin/klogd r, /var/run/klogd.pid lw, }
Quando si crea un profilo per un programma, quest'ultimo può accedere solo ai file, alle modalità e alle funzioni POSIX specificate nel profilo. Queste limitazioni si aggiungono ai controlli di accessi nativi di Linux.
Esempio: .
Per accedere alla funzionalità CAP_CHOWN, il programma deve disporre dell'accesso a CAP_CHOWN nei controlli di accesso Linux convenzionali (generalmente un processo root) e contenere la funzionalità chown nel proprio profilo. In modo simile, per poter scrivere nel file /foo/bar, il programma deve disporre dell'ID utente corretto, i bit di modalità devono essere impostati negli attributi dei file (vedere le pagine man chmod e chown) e inoltre deve contenere /foo/bar w nel proprio profilo.
I tentativi di violazione delle regole Novell AppArmor vengono registrati nel syslog. In molti casi, le regole Novell AppArmor impediscono l'esecuzione di un attacco perché i file necessari non sono accessibili e, in tutti i casi, la limitazione di Novell AppArmor riduce l'entità del danno provocato dall'aggressore al gruppo di file accessibili da Novell AppArmor.
Le istruzioni #include sono direttive che raccolgono i componenti di altri profili Novell AppArmor per semplificarli. I file Include recuperano le autorizzazioni di accesso per i programmi. L'utilizzo di un'istruzione Include consente al programma di accedere ai percorsi o ai file di directory richiesti da altri programmi. Le istruzioni Include consentono inoltre di ridurre le dimensioni di un profilo.
Per impostazione predefinita, l'istruzione #include aggiunge /etc/apparmor.d/ all'inizio del nome del percorso, ovvero il percorso in cui prevede di trovare i file include. A differenza di altre istruzioni di profilo, ma come i programmi C, le righe #include non terminano con una virgola.
Per semplificare la definizione dei profili per le applicazioni, in Novell AppArmor sono disponibili due classi di #include, astrazioni e porzioni di programmi.
Le astrazioni sono istruzioni #include raggruppate dalle comuni attività dell'applicazione. Queste attività includono l'accesso ai sistemi di autenticazione, l'accesso alle routine del servizio dei nomi, i comuni requisiti grafici e la contabilità di sistema. I file inclusi in queste astrazioni sono specifici dell'attività menzionata. I programmi che richiedono uno di questi file generalmente necessitano di altri file disponibili nel file delle astrazioni (in base alla configurazione locale e ai specifici requisiti del programma). Le astrazioni sono incluse in /etc/apparmor.d/abstractions/.
Le porzioni di programma sono controlli di accesso per programmi specifici che può essere opportuno vengano controllati dall'amministratore del sistema in base alle norme locali. Ciascuna porzione viene utilizzata da un solo programma. Queste porzioni semplificano le modifiche locali e gli aggiornamenti alle norme forniti da Novell AppArmor. Gli amministratori possono modificare le norme in questi file secondo le proprie esigenze e lasciare i profili dei programmi invariati semplificando l'operazione di unione degli aggiornamenti alle norme di Novell AppArmor con le norme applicate a ciascun sito.
Le limitazioni di accesso nelle porzioni di programma sono generalmente molto liberali e progettate per consentire agli utenti di accedere ai propri file nel modo meno invadente possibile e continuando a garantire la protezione delle risorse di sistema. Un'eccezione a questa regola è costituita dalla serie di porzioni di programma postfix*. Questi profili vengono utilizzati per semplificare l'estrazione del percorso dei binari postfix. Tuttavia, può essere non necessario ridurre le autorizzazioni nella serie postfix*. Le porzioni di programma sono disponibili in /etc/apparmor.d/program-chunks/.