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 profils, afin de confiner les accès systèmes.
De ce fait, cela interdit tout accès système non désiré.
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.
Table des matières
Comment installer AppArmor sur Debian/Ubuntu
- Installez AppArmor et ses outils avec APT :
apt install apparmor apparmor-utils apparmor-profiles apparmor-profiles-extra
- 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
- 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.
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.
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
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
Ressources utiles et articles liés
- AppArmor pour sécuriser Linux
- AppArmor sur Debian/Ubuntu : Installation et configuration
- Comment créer un profile AppArmor
- Comment sécuriser Nginx+PHP-FPM avec AppArmor
- Ai-je besoin d’antivirus à Linux ?
- Comment installer et utiliser un antivirus sur Ubuntu (ClamTk)
- Comment installer et utiliser ClamAV sur Linux
- Comment installer ClamAV sur Postfix sur Debian
- ufw : configurer, voir, créer, supprimer, réinitialiser des règles de firewall
- gufw : configurer le firewall ufw sur Ubuntu (Firewall Configuration)