Menu Fermer

AppArmor sur Debian/Ubuntu : Installation et configuration

AppArmor est un système de contrôle d’accès obligatoire (Mandatory Access Control) qui s’appuie sur l’interface LSM (Linux Security Modules) fournie par le noyau Linux.
Il permet d’établir des règles et politiques d’accès aux processus, via des profiles, afin de confiner les accès systèmes.
De ce fait, cela interdit tout accès système non désirés.
AppArmor est donc un utilitaire important pour améliorer la sécurité de votre serveur Linux en protégeant contre les accès frauduleux via des vulnérabilités.

Dans ce tutoriel, je vous guide pour installer et configurer AppArmor sur Debian ou Ubuntu.

AppArmor sur Debian/Ubuntu : Installation et configuration

Comment installer AppArmor sur Debian/Ubuntu

  • Installez AppArmor et ses outils avec APT :
apt install apparmor apparmor-utils apparmor-profiles apparmor-profiles-extra
Comment installer AppArmor sur Debian/Ubuntu
  • Puisque Apparmor est un module de noyau Linux, vous devez l’activer dans grub avec les commandes suivante s:
mkdir -p /etc/default/grub.d
  • Créez le fichier /etc/default/grub.d/apparmor.cfg avec le contenu suivant :
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor"
  • Enregistrer et sortir, puis exécuter :
update-grub
Comment installer AppArmor sur Debian/Ubuntu
  • Redémarrez le serveur / PC

Comment configurer AppArmor

Avant de vous lancer et afin de bien comprendre le fonctionnement d’AppArmor, suivez ce tutoriel :

Comment vérifier qu’AppArmor est actif dans le système

Voici trois façons de vérifier qu’AppArmor est actif dans le système.

  • Retourne Y lorsque AppAmor est actif :
cat /sys/module/apparmor/parameters/enabled
  • Vérifier l’état du service AppArmor avec systemctl :
systemctl status apparmor
● apparmor.service - Load AppArmor profiles
     Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2022-07-13 14:52:55 CEST; 16h ago
       Docs: man:apparmor(7)
             https://gitlab.com/apparmor/apparmor/wikis/home/
   Main PID: 207500 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 9383)
     Memory: 0B
        CPU: 0
     CGroup: /system.slice/apparmor.service

Jul 13 15:01:26 ns320684 apparmor.systemd[209376]: Reloading AppArmor profiles
Jul 13 15:01:26 ns320684 systemd[1]: Reloaded Load AppArmor profiles.
Jul 13 15:01:51 ns320684 systemd[1]: Reloading Load AppArmor profiles.
Jul 13 15:01:51 ns320684 apparmor.systemd[209474]: Restarting AppArmor
Jul 13 15:01:51 ns320684 apparmor.systemd[209474]: Reloading AppArmor profiles
Jul 13 15:01:51 ns320684 systemd[1]: Reloaded Load AppArmor profiles.
Jul 13 15:07:47 ns320684 systemd[1]: Reloading Load AppArmor profiles.
Jul 13 15:07:47 ns320684 apparmor.systemd[211969]: Restarting AppArmor
Jul 13 15:07:47 ns320684 apparmor.systemd[211969]: Reloading AppArmor profiles
Jul 13 15:07:47 ns320684 systemd[1]: Reloaded Load AppArmor profiles.
Comment vérifier qu'AppArmor est actif

Copier les profiles “extras”

Les paquets apparmor-profiles et apparmor-profiles-extra fournissent des profiles supplémentaires qui se trouvent dans /usr/share/apparmor/extra-profiles/.
Vous pouvez copier l’intégralité dans le répertoire de profil AppArmor /etc/apparmor.d/ ou ne copier que ceux que vous comptez utiliser pour une installation plus “propre”.

cp /usr/share/apparmor/extra-profiles/*/etc/apparmor.d/

Comment vérifier l’état des profiles AppArmor

AppArmor fonctionne avec des profiles pour chaque binaire qui établisse les politiques autorisées.
Deux mode de fonctionnement par profile est possible :

  • Mode complain : les violations de la politique ne seront enregistrées dans les logs et aucun blocage n’est effectué. C’est un mode d’apprentissage pour régler le profile
  • Mode enforce : les opérations qui violent la politique seront bloquées

Pour énumérer tous les profils Apparmor chargés pour les applications et les processus et détaille leur statut (loaded., complain mode, enforce mode):

aa-status

La sortie suivante apparaîtra montre que 79 profils sont chargés sous forme de profils Apparmor et 46 sont définis en mode forcé par défaut. Ici, 5 processus, freshclam, clamd, sshd sont définis par les profils avec mode forcé et 2 processus en mode plainte. Vous pouvez modifier le mode d’exécution pour n’importe quel profil défini.

Comment vérifier l'état des profiles AppArmor

Activer un profile en mode complain

On utilise la commande aa-complain pour passer un binaire en mode plainte.
Voici la syntaxe :

aa-complain </chemin/binaire>

Par exemple pour passer la commande ping en mode complainte :

aa-complain /usr/bin/ping

Activer un profile en mode enforce

aa-enforce </chemin/binaire>

Vérifier les binaires sensibles à sécuriser

Comme je l’ai expliqué, il faut avant tout configurer un profile pour limiter les applications qui exposent le système.
C’est à dire les applications réseaux avec des ports ouverts, celles qui exécutent des cron etc.

Pour vous y aider, Apparmor possède la commande aa-unconfined qui liste les applications non confinés et qu’il faut en priorité configurer.

aa-unconfined /usr/sbin/nginx
La commande aa-unconfined qui liste les applications sensubles non confinés

Comment désactiver AppArmor

Si AppArmor pose des problèmes, vous pouvez le désactiver temporairement.
Pour cela, arrêtez le service à l’aide de systemctl :

systemctl stop AppArmor

Mais pour désactiver complètement AppArmor du système :

$ sudo mkdir -p /etc/default/grub.d
$ echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=0"' \
  | sudo tee /etc/default/grub.d/apparmor.cfg
$ sudo update-grub
$ sudo reboot