4.4. Limitazione di privilegi con AppArmor

Molte vulnerabilità di sicurezza derivano da bug nei programmi ritenuti affidabili. Un programma affidabile viene eseguito con privilegi di cui l'aggressore desidera impossessarsi. Se il programma include un bug che consente all'aggressore di impossessarsi di questi privilegi, perde la sua affidabilità.

Novell® AppArmor è una soluzione per la protezione delle applicazioni progettata specificatamente per fornire la minima limitazione dei privilegi ai programmi sospetti. AppArmor consente agli amministratori di specificare il dominio di attività eseguibili dal programma mediante lo sviluppo di un relativo profilo di sicurezza, vale a dire di un elenco dei file a cui il programma può accedere e delle operazioni che può eseguire.

Per un efficiente sicurezza di un sistema, è necessario ridurre al minimo i programmi che mediano le autorizzazioni in modo da proteggere il più possibile le applicazioni. Con Novell AppArmor è necessario definire solo i profili dei programmi esposti ad attacchi nell'ambiente in uso. Ciò riduce notevolmente la quantità di lavoro necessaria per rendere più sicuro il computer. I profili AppArmor applicano le norme per garantire che i programmi eseguano solo le operazioni previste, evitando imprevisti.

Gli amministratori devono solo occuparsi delle applicazioni più soggette agli attacchi e generare appositi profili. Per proteggere un sistema è quindi necessario creare e gestire il gruppo di profili AppArmor nonché monitorare tutte le violazioni alle norme o le eccezioni registrate nel servizio di creazione rapporti di AppArmor.

Il processo di generazione dei profili AppArmor per la limitazione di un'applicazione è semplice e intuitivo. AppArmor include infatti numerosi strumenti guida per la creazione dei profili. Non sono necessari interventi di programmazione o scripting. L'amministratore deve solo stabilire regole di accesso molto rigide ed eseguire le autorizzazioni per ciascuna applicazione da proteggere.

È necessario aggiornare o modificare i profili dell'applicazione solo se si apportano modifiche alla configurazione software o al gruppo di attività desiderate. AppArmor fornisce strumenti intuitivi per la gestione degli aggiornamenti o delle modifiche dei profili.

Queste operazioni vengono eseguite senza che gli utenti se ne accorgano. In pratica, vengono eseguite "dietro le quinte" e non richiedono alcun intervento da parte dell'utente. AppArmor non influisce sulle prestazioni. Se alcune attività dell'applicazione non vengono considerate o vengono evitate da un profilo AppArmor, è necessario che l'amministratore modifichi il profilo dell'applicazione in modo da correggere questo comportamento.

In questa guida vengono illustrate le operazioni di base che devono essere eseguite con AppArmor per un'efficiente protezione del sistema. Per informazioni dettagliate fare riferimento alla Guida all'amministrazione di Novell AppArmor 2.0.

4.4.1. Installazione di Novell AppArmor

Gli utenti che effettuano un'installazione desktop GNOME o KDE possono ignorare questa sezione. Infatti, per impostazione predefinita Novell AppArmor viene installato come parte di queste selezioni.

Se non si desidera installare questi desktop oppure se si desidera un ambiente basato completamente su testo, eseguire le operazioni riportate di seguito per installare i pacchetti necessari con il gestore pacchetti YaST.

  1. Effettuare l'accesso come utente root e avviare YaST.

  2. Nel Centro di controllo YaST, selezionare Software+Gestione software.

  3. Per installare i pacchetti riportati di seguito, utilizzare le funzioni di ricerca di YaST (parole chiave "AppArmor").

    • apparmor-parser

    • libapparmor

    • apparmor-docs

    • yast2-apparmor

    • apparmor-profiles

    • apparmor-utils

  4. Selezionare tutti questi pacchetti per l'installazione, quindi scegliere Accetto. YaST risolve tutte le dipendenze e installa tutti i pacchetti automaticamente.

  5. Dopo che YaST ha terminato di aggiornare la configurazione del sistema, selezionare Fine per uscire dal gestore pacchetti.

4.4.2. Abilitazione di Novell AppArmor.

Dopo aver installato Novell AppArmor, abilitarlo in maniera esplicita per garantire che venga avviato ogni volta che si avvia il computer. Utilizzare il modulo System Services (Runlevel) di YaST per l'operazione seguente:

  1. Effettuare l'accesso come utente root e avviare YaST.

  2. Avviare System+System Services (Runlevel).

  3. Nell'elenco dei servizi visualizzati selezionare apparmor. Vedere la Figura 4.3, "Abilitazione di Novell AppArmor con YaST".

  4. Fare clic su Abilita per abilitare AppArmor in maniera permanente.

  5. Fare clic su Fine per rendere effettive le impostazioni.

Figura 4.3. Abilitazione di Novell AppArmor con YaST

Abilitazione di Novell AppArmor con YaST

Con lo strumento Runlevel di YaST è possibile abilitare i servizi in maniera permanente, ovvero le impostazioni rimangono invariate anche dopo un riavvio del sistema. Per abilitare AppArmor in maniera permanente, solo per la durata di una sessione, eseguire le operazioni riportate di seguito.

  1. Effettuare l'accesso come utente root e avviare YaST.

  2. Avviare Novell AppArmor+Pannello di controllo AppArmor.

  3. Impostare Stato AppArmor su AppArmor è abilitato facendo clic su Configura+Abilita+OK.

  4. Confermare le impostazioni premendo OK.

4.4.3. Introduzione alla definizione di profili per le applicazioni

Leggere gli argomenti riportati di seguito per preparare una distribuzione efficiente di AppArmor sul computer in uso.

  1. Individuare le applicazioni per le quali creare un profilo. Per ulteriori informazioni, vedere la Sezione 4.4.3.1, "Scelta delle applicazioni per cui definire un profilo".

  2. Creare i profili necessari come illustrato nella Sezione 4.4.3.2, "Creazione e modifica di profili ". Esaminare i risultati e modificare i profili quando necessario.

  3. Tenere traccia delle attività del sistema mediante l'esecuzione dei rapporti AppArmor e la gestione degli eventi di sicurezza. Vedere la Sezione 4.4.3.3, "Configurazione di rapporti e notifiche eventi Novell AppArmor".

  4. Aggiornare i profili quando vengono apportate modifiche all'ambiente in uso oppure reagire agli eventi di sicurezza registrati dallo strumento di creazione profili di AppArmor'. Vedere la Sezione 4.4.3.4, "Aggiornamento di profili".

4.4.3.1. Scelta delle applicazioni per cui definire un profilo

È necessario proteggere solo i programmi esposti agli attacchi in una particolare installazione. Pertanto, utilizzare i profili soltanto per le applicazioni che vengono effettivamente eseguite. Per individuare le applicazioni che necessitano maggiormente di un profilo, leggere l'elenco riportato di seguito.

Agenti di rete

I programmi (server e client) presentano porte di rete aperte. Gli agenti di rete sono programmi server che rispondono a queste porte di rete aperte. Anche i client utente, quali i client di posta e i browser, presentano porte di rete aperte e arbitrano i privilegi.

Applicazioni Web

Gli script Perl CGI, le pagine PHP e le applicazioni Web più complesse possono essere invocati mediante un browser Web.

Processi Cron

I programmi eseguiti periodicamente dal daemon leggono gli input di numerose risorse.

Per individuare i processi correntemente in esecuzione con porte di rete aperte che potrebbero necessitare di un profilo per limitarli, eseguire unconfined come root.

Esempio 4.1. Output di unconfined

19848 /usr/sbin/cupsd not confined
19887 /usr/sbin/sshd not confined
19947 /usr/lib/postfix/master not confined
29205 /usr/sbin/sshd confined by '/usr/sbin/sshd (enforce)'

Ogni processo nell'esempio in alto contrassegnato dal comando not confined potrebbe necessitare di un profilo personalizzato che lo limiti. I processi contrassegnati dal comando confined by sono già protetti da AppArmor.

[Tip]Ulteriori informazioni

Per informazioni utili sulla scelta delle applicazioni appropriate per le quali definire un profilo, vedere il capitolo Selezione di programmi da immunizzare (Guida all'amministrazione di Novell AppArmor 2.0).

4.4.3.2. Creazione e modifica di profili

Novell AppArmor in SUSE Linux presenta un gruppo preconfigurato di profili per le applicazioni più importanti. Inoltre, è possibile utilizzare AppArmor per creare profili personalizzati per una serie di applicazioni definite in /etc/apparmor/README.profiles.

Esistono due metodi di gestione dei profili. Uno consiste nell'utilizzo del front-end grafico fornito dai moduli Novell AppArmor di YaST mentre l'altro nell'utilizzo degli strumenti a riga di comando forniti dalla stessa suite AppArmor. Entrambi i metodi si comportano sostanzialmente allo stesso modo.

L'esecuzione del comando unconfined come illustrato nella Sezione 4.4.3.1, "Scelta delle applicazioni per cui definire un profilo" consente di identificare un elenco di applicazioni che possono necessitare di un profilo da eseguire in modalità sicura.

Per la creazione di un profilo, eseguire per ciascuna applicazione le operazioni riportate di seguito.

  1. Dopo essersi connessi come root, creare in AppArmor una struttura approssimativa del profilo dell'applicazione mediante l'esecuzione di genprof nomeprogramma

    oppure

    Eseguire YaST+Novell AppArmor+Aggiunta guidata profili e specificare il percorso completo dell'applicazione di cui si desidera creare il profilo.

    Verrà creato un profilo di base e AppArmor viene esso in modalità learning, la quale consente di registrare tutte le attività del programma in esecuzione senza tuttavia limitarlo.

  2. Eseguire tutte le azioni dell'applicazione per consentire a AppArmor di ottenere un'immagine molto specifica delle attività.

  3. Consentire a AppArmor di analizzare i file di registro generati in Passo 2. A questo scopo, digitare S in genprof

    oppure

    fare clic su Ricerca eventi AppArmor nel registro di sistema in Aggiunta guidata profili e seguire le istruzioni visualizzate fino a completare il profilo.

    Verranno cercati i registri compilati durante l'esecuzione dell'applicazione e verrà chiesto di impostare i diritti di accesso registrati per ciascun evento. Impostarli per ogni file oppure utilizzare la funzione glob.

  4. Dopo aver impostato tutte le autorizzazioni di accesso, per il profilo viene attivata la modalità enforce. Il profilo verrà applicato e AppArmor limita l'applicazione in base al profilo appena creato.

    Se si avviasse genprof per un'applicazione con un profilo in modalità complain, al termine del ciclo di apprendimento questo profilo rimarrebbe in modalità learning. Per ulteriori informazioni sulla modifica della modalità di un profilo, vedere la sezione Modalità Complain o Learning (capitolo 3, Creazione di profili Novell AppArmor, Guida all'amministrazione di Novell AppArmor 2.0) e la sezione Modalità Enforce (capitolo 3, Creazione di profili Novell AppArmor, Guida all'amministrazione di Novell AppArmor 2.0).

Testare le impostazioni del profilo eseguendo tutte le attività necessarie con l'applicazione appena limitata. Generalmente il programma limitato viene eseguito senza che l'utente si accorga delle attività di AppArmor Tuttavia, se l'applicazione si comporta in modo strano, controllare i registri di sistema per vedere se AppArmor limita troppo l'applicazione. Individuare i registri appropriati in /var/log/messages oppure eseguire dmesg.

Qualsiasi risultato simile a quello riportato di seguito indica che AppArmor limita troppo l'applicazione.

AppArmor: REJECTING w access to /var/run/nscd/socket (traceroute(2050) profile
/usr/sbin/traceroute active /usr/sbin/traceroute)

Per modificare il profilo, eseguire di nuovo l'Aggiunta guidata profili come illustrato in precedenza e analizzare i messaggi di registro relativi all'applicazione in oggetto. Specificare i diritti o le restrizioni di accesso quando richiesto da YaST.

[Tip]Ulteriori informazioni

Per ulteriori informazioni sulla creazione e la modifica dei profili, vedere il capitolo Creazione di profili Novell AppArmor (Guida all'amministrazione di Novell AppArmor 2.0).

4.4.3.3. Configurazione di rapporti e notifiche eventi Novell AppArmor

Impostare una notifica eventi in Novell AppArmor in modo da poter rivedere gli eventi di sicurezza. La notifica degli eventi è una funzione di Novell AppArmor che invia un messaggio e-mail al destinatario specificato quando si verifica un'attività Novell AppArmor di sistema nel livello di gravità specificato. Questa funzione è attualmente disponibile mediante l'interfaccia YaST.

Per impostare una notifica eventi in YaST, eseguire le operazioni riportate di seguito.

  1. Verificare che il server di posta sia in esecuzione sul sistema per la consegna delle notifiche degli eventi.

  2. Effettuare l'accesso come utente root e avviare YaST. Avviare Novell AppArmor+Pannello di controllo AppArmor.

  3. Nella sezione Abilita notifica eventi di sicurezza scegliere Configura.

  4. Per ciascun tipo di record (Schematica, Riepilogativa e Dettagliata) impostare una frequenza di creazione rapporti, immettere l'indirizzo e-mail di destinazione e specificare il livello di gravità degli eventi da registrare. Per includere eventi sconosciuti nei rapporti, selezionare Includi eventi di gravità sconosciuta.

    [Note]Nota

    Se non si conosce la classificazione degli eventi di AppArmor, scegliere di ricevere le notifiche per tutti i livelli di sicurezza.

  5. Uscire dalla finestra di dialogo selezionando OK (Scegliere)+Fine per confermare le impostazioni specificate.

Configurare i rapporti Novell AppArmor. Con i rapporti è possibile leggere importanti eventi di sicurezza di Novell AppArmor disponibili nei file di registro senza dover esaminare manualmente i numerosi messaggi utili solo allo strumento logprof. È possibile limitare le dimensioni del rapporto applicando un filtro in base a un intervallo date o al nome del programma.

Per configurare i rapporti AppArmor, eseguire le operazioni riportate di seguito.

  1. Effettuare l'accesso come utente root e avviare YaST. Selezionare Novell AppArmor+Rapporti AppArmor.

  2. Selezionare il tipo di rapporto che si desidera esaminare o configurare in Riepilogo di sicurezza Executive, Controllo applicazioni e Rapporto eventi di sicurezza.

  3. Modificare la frequenza di generazione dei rapporti, gli indirizzi e-mail e il percorso dei rapporti selezionando Modifica e selezionando i dati richiesti.

  4. Per eseguire un rapporto del tipo selezionato, fare clic su Esegui.

  5. Esplorare i rapporti archiviati di un determinato tipo selezionando Visualizza archivio e specificando il tipo di rapporto.

    oppure

    Eliminare i rapporti non necessari o aggiungere nuovi rapporti.

[Tip]Ulteriori informazioni

Per ulteriori informazioni sulla configurazione di una notifica eventi in Novell AppArmor, vedere la sezione "Impostazione di una notifica eventi" (capitolo Gestione di applicazioni con profili, Guida all'amministrazione di Novell AppArmor 2.0). Per ulteriori informazioni sulla configurazione dei rapporti, vedere la sezione "Rapporti" (capitolo 4, Gestione di applicazioni con profili, Guida all'amministrazione di Novell AppArmor 2.0).

4.4.3.4. Aggiornamento di profili

Le configurazioni software e di sistema cambiano nel tempo. Di conseguenza, può essere necessario ottimizzare la configurazione del profilo AppArmor di tanto in tanto. AppArmor controlla se nel log del sistema sono presenti violazioni alle norme oppure altri eventi AppArmor e consente di modificare le impostazioni del profilo di conseguenza. Qualsiasi comportamento dell'applicazione esterno alla definizione del profilo può essere modificato con l'Aggiornamento guidato profili.

Per aggiornare i profili, eseguire le operazioni riportate di seguito.

  1. Effettuare l'accesso come utente root e avviare YaST.

  2. Avviare Novell AppArmor+Aggiornamento guidato profili.

  3. Quando richiesto, modificare i diritti di accesso o esecuzione per qualsiasi risorsa o file eseguibile registrato.

  4. Dopo aver risposto a tutte le domande, uscire da YaST. Le modifiche apportate vengono applicate ai rispettivi profili.

[Tip]Ulteriori informazioni

Per ulteriori informazioni sull'aggiornamento dei profili dai registri di sistema, vedere la sezione "Aggiornamento di profili dalle voci syslog" (capitolo 3, Creazione di profili Novell AppArmor, Guida all'amministrazione di Novell AppArmor 2.0).