Cos'è Apparmor?


93

Sento molti discorsi su apparmor, voglio sapere quanto segue:

  • Cos'è Apparmor?
  • Come funziona apparmor?

Risposte:


92

Cos'è

Apparmor è un sistema di controllo di accesso obbligatorio (o MAC). Utilizza i miglioramenti del kernel LSM per limitare i programmi a determinate risorse. AppArmor lo fa con i profili caricati nel kernel all'avvio del sistema. Apparmor ha due tipi di modalità profilo, applicazione e reclamo. I profili in modalità di imposizione applicano le regole di quel profilo e segnalano tentativi di violazione in syslogo auditd. I profili in modalità di reclamo non applicano regole del profilo, ma solo i tentativi di violazione.

In Ubuntu Apparmor è installato di default. Limita le applicazioni ai profili per determinare a quali file e autorizzazioni deve accedere un programma. Alcune applicazioni arriveranno con le loro proprietà e altre possono essere trovate nel apparmor-profilespacchetto.

È possibile installare apparmor-profileseseguendo sudo apt-get install apparmor-profiles.

Ho trovato un buon esempio di Apparmor nei forum di Ubuntu che ho riscritto per questo post.

Apparmor è un framework di sicurezza che impedisce alle applicazioni di diventare malvagie. Ad esempio: se homeeseguo Firefox e visito un sito errato che tenta di installare malware che eliminerà la mia cartella, Apparmor ha dei limiti su Firefox, sebbene gli impedisca di fare tutto ciò che non desidero (come accedere alla mia musica, documenti, ecc.). In questo modo, anche se l'applicazione è compromessa, non è possibile fare alcun danno.

Come funziona

Il apparmor-utilspacchetto contiene strumenti da riga di comando per la configurazione di Apparmor. Usandolo puoi cambiare la modalità di esecuzione di Apparmor, trovare lo stato di un profilo, creare nuovi profili, ecc.

Questi sono i comandi più comuni:

Nota: i profili sono memorizzati in/etc/apparmor.d/

  • Puoi controllare lo stato di Apparmor con sudo apparmor_status. Verrà visualizzato un elenco di tutti i profili * caricati, tutti i profili in modalità di applicazione, tutti i profili in modalità di reclamo, quali processi sono definiti in applicazione / reclamo, ecc.
  • Per mettere un profilo in modalità di reclamo che usi sudo aa-complain /path/to/bin, dov'è /path/to/binla bincartella dei programmi . Ad esempio, in esecuzione: sudo aa-complain /usr/bin/firefoxmetterà Firefox in modalità di reclamo.
  • Si utilizza sudo aa-enforce /path/to/binper imporre un profilo di programmi.
  • Puoi caricare tutti i profili nelle modalità di reclamo / applicazione con sudo aa-complain /etc/apparmor.d/*e sudo aa-enforce.d/*rispettivamente.

Per caricare un profilo nel kernel dovresti usare apparmor_parser. È possibile ricaricare i profili utilizzando il -rparametro

  • Per caricare un profilo usa :, cat /etc/apparmor.d/profile.name | sudo apparmor_parser -ache stampa efficacemente il contenuto del profile.nameparser di Apparmor.
  • Per ricaricare un profilo si utilizza il -rparametro, in questo modo:cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
  • Per ricaricare tutti i profili di Apparmor usare: sudo service apparmor reload

Per disabilitare un profilo che si collega a /etc/apparmor.d/disable/utilizzare lnin questo modo: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/quindi eseguire: sudo apparmor_parser -R /etc/apparmor.d/profile.name.

Nota: non confondereapparmor_parser -rconapparmor_parser -R NON SONO LE STESSE COSE!

  • Per riattivare un profilo, rimuovere il collegamento simbolico ad esso /etc/apparmor.d/disable/e caricarlo utilizzando il -aparametrosudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
  • Puoi disabilitare Apparmor con sudo service apparmor stope rimuovere il modulo del kernel usandosudo update-rc.d -f apparmor defaults
  • Avviare Apparmor con sudo service apparmor starte caricare i moduli del kernel consudo update-rc.d apparmor defaults

Profili

I profili sono memorizzati /etc/apparmor.d/e prendono il nome dal percorso completo dell'eseguibile che profilano, sostituendo '/' con '.'. Ad esempio /etc/apparmor.d/bin.pingè il profilo di pingin /bin.

Esistono due tipi principali di voci utilizzate nei profili:

  1. Le voci del percorso determinano a quali file può accedere un'applicazione.

  2. Le voci di capacità determinano quali privilegi può utilizzare un processo.

Vediamo il profilo di ping, situato in etc/apparmor.d/bin.ping, come esempio.

#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>Include il file globalnella directory tunables, ciò consente di inserire in un file comune le istruzioni relative a più applicazioni.

/bin/ping flags=(complain)imposta il percorso del programma profilato e imposta la modalità per lamentarsi.

capability net_rawconsente all'applicazione di accedere alla CAP_NET_RAW Posix.1efunzionalità.

/bin/ping mixr consente all'applicazione di leggere ed eseguire l'accesso al file.

/etc/modules.conf r,Il rdà l'applicazione di lettura privilegi per/etc/modules.conf

Nota: dopo aver creato / modificato un profilo, è necessario ricaricare il profilo per rendere effettive le modifiche.

Ecco un elenco di autorizzazioni che è possibile utilizzare:

  • r - leggere
  • w - Scrivi
  • ux - Esegui senza vincoli
  • Ux - Unconstrained Execute - scrub the environment
  • px - Esegui profilo discreto
  • Px - Esegui profilo discreto: pulisci l'ambiente
  • ix - Eredita eseguire
  • m - consentire PROT_EXECcon le mmap(2)chiamate
  • l - link

fonti


Quindi è un po 'come un programma che agisce come un utente e non ha i permessi per modificare la maggior parte dei file sul sistema?
Izkata,

Sì e no. Si imposta un profilo che definisce cosa possono fare determinate applicazioni. Quindi aggiungi programmi a quel profilo e questo limita ciò che i programmi in quel profilo sono autorizzati a fare. Quindi è come un utente perché possono accedere solo a ciò che l'amministratore (tu) dice di poter fare nel profilo.
Seth,

Ah, quindi i profili sono come gruppi di utenti per i programmi;)
Izkata

Sì, molto simile;)
Seth

Pensi che apparmor possa essere usato per bloccare ogni connessione Internet e dire chi sta provando ad accedervi? e sulla base di quel registro creiamo le autorizzazioni per ogni applicazione? l'idea è di farlo funzionare come Zonalarm su window $ e come vecchi "firewall per applicazione" su Linux come LeopardFlower e ProgramGuard (credo che questi non siano più compilabili), e ce n'è anche uno nuovo chiamato Douane che utilizza un modulo del kernel per far funzionare le cose.
Aquarius Power

6

AppArmor è un sistema di controllo dell'accesso obbligatorio (MAC) che è un miglioramento del kernel (LSM) per limitare i programmi a un insieme limitato di risorse. Il modello di sicurezza di AppArmor è di associare gli attributi di controllo dell'accesso ai programmi piuttosto che agli utenti. Il confinamento di AppArmor viene fornito tramite profili caricati nel kernel, in genere all'avvio. I profili AppArmor possono essere in una di due modalità: applicazione e reclamo. I profili caricati in modalità di imposizione comporteranno l'applicazione della politica definita nel profilo, nonché i tentativi di violazione della politica di segnalazione (tramite syslog o auditd). I profili in modalità di reclamo non applicheranno la politica ma segnaleranno invece i tentativi di violazione della politica.

AppArmor è diverso da alcuni altri sistemi MAC su Linux in quanto è basato sul percorso, consente la miscelazione di profili di modalità di reclamo e di imposizione, usa i file include per facilitare lo sviluppo e ha una barriera molto più bassa all'ingresso rispetto ad altri sistemi MAC popolari.

AppArmor è una tecnologia consolidata vista per la prima volta in Immunix e successivamente integrata in Ubuntu, Novell / SUSE e Mandriva. La funzionalità Core AppArmor è nel kernel principale di Linux dalla 2.6.36 in poi; AppArmor, Ubuntu e altri sviluppatori stanno lavorando per unire le funzionalità AppArmor aggiuntive nel kernel mainline.

Ho alcuni link più utili a te: Wiki.Ubuntu.com Ubuntuforums.org

Guide Apparmor per Ubuntu 12.04 e Ubuntu 12.10

Spero che ti possa aiutare.


3

Ecco una citazione dal wiki di Apparmor :

AppArmor è un sistema di sicurezza delle applicazioni Linux efficace e facile da usare. AppArmor protegge in modo proattivo il sistema operativo e le applicazioni da minacce esterne o interne, anche dagli attacchi zero-day, applicando un buon comportamento e impedendo lo sfruttamento anche di difetti di applicazioni sconosciute. Le politiche di sicurezza di AppArmor definiscono completamente a quali risorse di sistema possono accedere le singole applicazioni e con quali privilegi. Numerosi criteri predefiniti sono inclusi in AppArmor e, utilizzando una combinazione di analisi statica avanzata e strumenti basati sull'apprendimento, i criteri AppArmor per applicazioni anche molto complesse possono essere implementati con successo nel giro di poche ore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.