AppArmor

AppArmor est une implémentation de contrôles d'accès obligatoires basée sur l'infrastructure LSM (Linux Security Module). AppArmor restreint les programmes individuels à un ensemble de fichiers répertoriés et de capacités définies dans l'ébauche POSIX 1003.1e.

AppArmor est installé et chargé en mémoire par défault. Il utilise des profils d'application afin de déterminer quels fichiers et quelles permissions l'application nécessite. Certains paquets installent leurs propres profils, et des profils additionnels se trouvent dans le paquet apparmor-profiles.

Pour installer le paquet apparmor-profiles depuis un terminal :

sudo apt install apparmor-profiles

Les profils d'AppArmor ont deux modes d'exécution :

  • Réclamation/apprentissage : les infractions au profil sont autorisées et journalisées. C'est utile pour tester et développer de nouveaux profils.

  • Imposé/restreint : la politique du profil est imposée et les infractions sont journalisées.

Utilisation d'AppArmor

Cette section souffre d'un bogue (LP #1304134) et les instructions ne fonctionneront pas comme annoncées.

Le paquet apparmor-utils contient des utilitaires en ligne de commande que vous pouvez utiliser pour changer le mode d'exécution d'AppArmor, trouver l'état d'un profil, créer de nouveaux profils, etc.

  • apparmor_status est utilisé pour voir l'état actuel des profils d'AppArmor.

    sudo apparmor_status
    
  • aa-complain place un profil en mode complain (réclamation).

    sudo aa-complain /chemin/vers/application
    
  • aa-enforce place un profil en mode enforce (imposé).

    sudo aa-enforce /chemin/vers/application
    
  • Le répertoire /etc/apparmor.d est l'endroit où se situent les profils d'AppArmor. Il peut être utilisé pour manipuler le mode de l'ensemble des profils.

    Saisissez ce qui suit pour placer tous les profils en mode complain (recommandation) :

    sudo aa-complain /etc/apparmor.d/*
    

    Pour placer tous les profils en mode enforce (imposé) :

    sudo aa-enforce /etc/apparmor.d/*
    
  • apparmor_parser est utilisé pour charger un profil dans le noyau. Il peut aussi être utilisé pour recharger un profil déjà chargé en utilisant l'option -r. Pour charger un profil :

    cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
    

    Pour recharger un profil :

    cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
    
  • systemctl can be used to reload all profiles:

    sudo systemctl reload apparmor.service
    
  • Le répertoire /etc/apparmor.d/disable peut être utilisé en même temps que l'option apparmor_parser -R pour désactiver un profil.

    sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/
    sudo apparmor_parser -R /etc/apparmor.d/profile.name
    

    Afin de ré-activer un profil désactivé, supprimez le lien symbolique vers le profil dans /etc/apparmor.d/disable/. Puis chargez le profil en utilisant l'option -a.

    sudo rm /etc/apparmor.d/disable/profile.name
    cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
    
  • AppArmor peut être désactivé, et le module déchargé du noyau en entrant les lignes suivantes :

    sudo systemctl stop apparmor.service
    sudo update-rc.d -f apparmor remove
    
  • Pour réactiver AppArmor saisissez :

    sudo systemctl start apparmor.service
    sudo update-rc.d apparmor defaults
    

Remplacez nom.profil avec le nom du profil que vous souhaitez manipuler. Remplacez aussi /chemin/vers/application avec le chemin d'accès de l'exécutable en cours. Par exemple, pour la commande ping utilisez /bin/ping.

Profils

Les profils AppArmor sont de simples fichiers texte qui se trouvent dans /etc/apparmor.d/. Les fichiers portent le nom du chemin d'accès entier de l'exécutable dont ils sont les profils en remplaçant "/" par ".". Par exemple /etc/apparmor.d/bin.ping est le profil AppArmor de la commande /bin/ping.

Il existe deux grands types de règles utilisées dans les profils :

  • Path entries: detail which files an application can access in the file system.

  • Capability entries : détermine les privilèges qu'un processus restreint est autoriser à utiliser.

As an example, take a look at /etc/apparmor.d/bin.ping:

#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>: directives d'inclusion d'autres fichiers. Ceci permet de placer dans un fichier commun les directives dépendant de plusieurs applications.

  • /bin/ping flags=(complain): chemin de l'exécutable et réglage du mode sur complain (réclamation).

  • capability net_raw,: autorise l'application à accéder à la fonctionnalité Posix 1e CAP_NET_RAW.

  • /bin/ping mixr,: donne à l'application les droits de lecture et d'exécution sur le fichier.

Après modification d'un fichier de profil, le profil doit être rechargé. Consultez Utilisation d'AppArmor pour plus de renseignements.

Création d'un profil

  • Conception d'un plan de test : Réfléchissez à la manière dont l'application doit être examinée. Le plan de test devrait être divisé en test unitaires. Chaque test unitaire devrait avoir une courte description et énumérer les étapes à suivre.

    Quelques tests unitaires standard sont :

    • Démarrage du programme.

    • Arrêt du programme.

    • Rechargement du programme.

    • Test de toutes les commandes prises en charge par le script init.

  • Générer le nouveau profil : Utilisez aa-genprof pour générer un nouveau profil. Depuis un terminal :

    sudo aa-genprof executable
    

    Par exemple :

    sudo aa-genprof slapd
    
  • Pour que votre nouveau profil soit inclus dans le paquet apparmor-profiles, remplissez un rapport de bogue (en anglais) sur Launchpad concernant le paquet AppArmor :

    • Inclure votre plan de test et vos cas de test.

    • Joignez votre nouveau profil au rapport de bogue.

Mise à jour des profils

Lorsque le programme ne se comporte pas correctement, des messages d'audit sont journalisés. L'application aa-logprof peut être utilisée pour analyser les massages d'audit AppArmor dans les fichiers journaux. Examinez-les puis mettez à jour le profil. Dans un terminal :

sudo aa-logprof

Références

  • Un endroit fantastique pour demander de l'assistance sur AppArmor, et s'impliquer dans la communauté Ubuntu Server, est le canal IRC anglophone #ubuntu-server sur le serveur freenode.