AppArmor è un sistema MAC o di controllo degli accessi obbligatorio.
Utilizza Linux Security Module per limitare i programmi. AppArmor imposta una raccolta di profili applicativi predefiniti per proteggere i servizi Linux.
Puoi anche proteggere qualsiasi altra applicazione in esecuzione sul tuo sistema creando tu stesso file di profilo.
In Ubuntu, AppArmor è installato e abilitato per impostazione predefinita. I profili apparmor vengono caricati all'avvio del sistema.
AppArmor opera nei seguenti due tipi di modalità profilo:
- Applica:nella modalità di applicazione, il sistema inizia a far rispettare le regole e a segnalare i tentativi di violazione in syslog o auditd (solo se auditd è installato) e l'operazione non sarà consentita.
- Reclamo:nella modalità reclamo, il sistema non applica alcuna regola. Registrerà solo i tentativi di violazione.
Ulteriori profili possono essere trovati nel pacchetto apparmor-profiles.
Visualizza lo stato dell'attrezzatura
Puoi visualizzare lo stato attuale di apparmor e tutti i profili caricati come mostrato di seguito:
$ sudo apparmor_status apparmor module is loaded. 5 profiles are loaded. 5 profiles are in enforce mode. /sbin/dhclient /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/connman/scripts/dhclient-script /usr/sbin/mysqld /usr/sbin/tcpdump 0 profiles are in complain mode. 2 processes have profiles defined. 2 processes are in enforce mode. /sbin/dhclient (585) /usr/sbin/mysqld (799) 0 processes are in complain mode. 0 processes are unconfined but have a profile defined.
Se controlliamo l'output sopra, potremmo vedere che 5 profili sono in modalità Enforce.
Ciò indica anche che due processi sono attualmente in esecuzione in modalità di applicazione (a causa dei profili). Ad esempio, /sbin/dhclient con PID 585 è in esecuzione in modalità di applicazione.
Cambia modalità profilo
Per impostare un profilo in modalità reclamo, prima installa il pacchetto apparmor-utils se non è già installato.
apt-get install apparmor-utils
Usa il comando aa-complain per impostare un profilo in modalità reclamo. Ad esempio, procedi come segue per abilitare la modalità reclamo per mysqld.
$ sudo aa-complain /usr/sbin/mysqld Setting /usr/sbin/mysqld to complain mode.
Ora quando esegui apparmor_status, vedrai mysqld in modalità reclamo.
$ sudo apparmor_status apparmor module is loaded. 5 profiles are loaded. 4 profiles are in enforce mode. /sbin/dhclient /usr/lib/NetworkManager/nm-dhcp-client.action /usr/lib/connman/scripts/dhclient-script /usr/sbin/tcpdump 1 profiles are in complain mode. /usr/sbin/mysqld 2 processes have profiles defined. 1 processes are in enforce mode. /sbin/dhclient (585) 1 processes are in complain mode. /usr/sbin/mysqld (799) 0 processes are unconfined but have a profile defined.
Puoi riportare il profilo alla modalità di applicazione utilizzando il comando aa-enforce come mostrato di seguito.
$ sudo aa-enforce /usr/sbin/mysqld Setting /usr/sbin/mysqld to enforce mode.
File profilo AppArmor
I profili AppArmor sono file di testo che si trovano nella directory /etc/apparmor.d/.
I file prendono il nome dal percorso completo dell'eseguibile che profilano, ma sostituendo "/" con ".".
Ad esempio, il comando ping si trova in /bin/ping. Il file del profilo AppArmor equivalente sarà denominato bin.ping
Quello che segue è il file del profilo Apparmor per usr.sbin.mysqld. /usr/sbin/mysqld è il percorso assoluto del binario a cui viene applicato questo profilo.
# cat usr.sbin.mysqld # vim:syntax=apparmor # Last Modified: Tue Jun 19 17:37:30 2007 #include <tunables/global> /usr/sbin/mysqld { #include <abstractions/base> #include <abstractions/nameservice> #include <abstractions/user-tmp> #include <abstractions/mysql> #include <abstractions/winbind> capability dac_override, capability sys_resource, capability setgid, capability setuid, network tcp, /etc/hosts.allow r, /etc/hosts.deny r, /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/*.cnf r, /usr/lib/mysql/plugin/ r, /usr/lib/mysql/plugin/*.so* mr, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, /var/lib/mysql/ r, /var/lib/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid rw, /var/run/mysqld/mysqld.sock w, /run/mysqld/mysqld.pid rw, /run/mysqld/mysqld.sock w, /sys/devices/system/cpu/ r, # Site-specific additions and overrides. See local/README for details. #include <local/usr.sbin.mysqld> }
In un file di profilo, i commenti procedono sempre con il segno #. #include righe carica il file.
Di seguito sono riportati i diversi tipi di regole utilizzate nei profili.
- Voci del percorso:contiene informazioni sui file a cui l'applicazione può accedere.
- Voci di capacità:determina i privilegi che un processo confinato può utilizzare.
- Voci di rete:determina il tipo di connessione. Ad esempio:tcp. Per un analizzatore di pacchetti la rete può essere grezza o a pacchetto ecc.
All'interno delle parentesi graffe {} abbiamo altre istruzioni include e include anche autorizzazioni/modalità di accesso [read(r)/write (w)/execute (x) (k) lock (richiede r o w, AppArmor 2.1 e versioni successive)] per vari file e directory, tra cui regex globbing le istruzioni include tra parentesi graffe {} aiutano a caricare i componenti dei profili Novell AppArmor.
Disabilita AppArmor
Se alcuni processi funzionano come previsto e se desideri eseguire il debug se i profili apparmor ne sono la ragione, potresti voler disabilitare temporaneamente apparmor per il debug.
# /etc/init.d/apparmor stop * Clearing AppArmor profiles cache [OK]
L'esecuzione del comando precedente cancellerà solo la cache dei profili. Per scaricare il profilo eseguire il comando seguente.
# /etc/init.d/apparmor teardown * Unloading AppArmor profiles [OK]