Accueil

AppArmor : Sécuriser les Applications Linux

Security
Difficulte: Intermediate
3 min de lecture

Guide complet pour installer et configurer AppArmor sur un système Linux afin de renforcer la sécurité des applications avec des profils de contrôle d'accès.

Retour aux tutoriels

L'essentiel

  • AppArmor est un contrôle d'accès obligatoire (MAC) intégré au noyau qui confine chaque programme à un jeu de ressources limité ; ses profils sont basés sur les chemins de fichiers, ce qui le rend plus simple à prendre en main que SELinux.
  • sudo aa-status (alias moderne de apparmor_status) est le point d'entrée : il liste les profils chargés et leur mode.
  • Deux modes seulement : enforce bloque toute action non autorisée, complain laisse passer et se contente de journaliser — c'est le mode dans lequel on met au point un profil.
  • Les profils sont de simples fichiers texte dans /etc/apparmor.d/ ; après chaque modification il faut recharger avec apparmor_parser -r, sinon le noyau continue d'appliquer l'ancienne version.
  • Le débogage passe par les lignes apparmor="DENIED" des logs noyau (journalctl -k, /var/log/audit/audit.log ou /var/log/syslog) : chacune indique l'opération refusée, le profil et le processus concernés.
Qu'est-ce qu'AppArmor ?
AppArmor (Application Armor) est un système de contrôle d'accès obligatoire (MAC) pour Linux, intégré au noyau. Il confine les programmes à un ensemble limité de ressources, réduisant ainsi la surface d'attaque en cas de compromission.

Pourquoi Utiliser AppArmor ?

  • Sécurité en profondeur : Ajoute une couche de sécurité au-delà des permissions traditionnelles (read, write, exécute).
  • Simplicité : Considéré comme plus simple à apprendre et à gérer que son alternative, SELinux. Les profils sont basés sur les chemins de fichiers.
  • Pré-configuré : De nombreuses distributions (comme Ubuntu) sont livrées avec des profils AppArmor pré-activés pour des services courants.

Prérequis

  • Système d'exploitation : Distribution Linux supportant AppArmor (Ubuntu, Debian, openSUSE...).
  • Privilèges : Accès root ou privilèges sudo.

Installation et Activation

Étape 1 : Vérification du statut d'AppArmor

AppArmor est souvent installé et activé par défaut. Vérifiez son statut :

sudo apparmor_status
# Alias plus moderne : sudo aa-status

Cette commande liste les profils chargés et leur mode (enforce ou complain).

Étape 2 : Installation

Si AppArmor n'est pas installé, vous pouvez le faire via votre gestionnaire de paquets :

# Sur Debian / Ubuntu
sudo apt-get update
sudo apt-get install -y apparmor apparmor-utils

Étape 3 : Activation du service

Assurez-vous que le service AppArmor est activé au démarrage :

sudo systemctl enable apparmor
sudo systemctl start apparmor
AppArmor est actif !
Le service est maintenant en cours d'exécution et les profils par défaut sont appliqués.

Gestion des profils AppArmor

Les profils sont des fichiers texte situés dans /etc/apparmor.d/ qui définissent les permissions pour une application spécifique.

Les deux modes de fonctionnement

  • Mode enforce : Le mode par défaut. AppArmor applique strictement les règles du profil et bloque toute action non autorisée.
  • Mode complain : Mode permissif. AppArmor ne bloque aucune action, mais enregistre les violations dans les logs système. C'est idéal pour tester et développer de nouveaux profils.

Changer le mode d'un profil

# Passer le profil de Firefox en mode complain
sudo aa-complain /etc/apparmor.d/usr.bin.firefox

# Repasser le profil en mode enforce
sudo aa-enforce /etc/apparmor.d/usr.bin.firefox

Recharger les profils

Après avoir modifié un profil, vous devez le recharger pour que les changements prennent effet :

# -r pour "replace" (remplacer)
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.firefox

Pour recharger tous les profils :

sudo systemctl reload apparmor

Analyser les logs

Les violations des règles AppArmor sont enregistrées dans les logs du noyau. C'est la source d'information principale pour déboguer un profil.

# Utiliser journalctl
sudo journalctl -k | grep "apparmor="DENIED""

# Ou directement dans les fichiers de log
sudo grep "apparmor="DENIED"" /var/log/audit/audit.log
sudo grep "apparmor="DENIED"" /var/log/syslog

Chaque ligne de log "DENIED" vous donnera des informations précieuses sur l'opération refusée, le profil concerné et le processus.

La création de profils
Créer un profil de A à Z peut être complexe. Il est recommandé d'utiliser les outils du paquet apparmor-utils, comme aa-genprof et aa-logprof, qui facilitent grandement ce processus.

Conclusion

AppArmor est une brique de sécurité fondamentale pour tout système Linux moderne. En confinant les applications, il limite drastiquement les dégâts potentiels d'une faille de sécurité. Bien que sa mise en place puisse sembler intimidante, l'utilisation des profils existants et des utilitaires comme aa-status et aa-complain la rend accessible et très efficace.

MR

Écrit par

Morgann Riu

Expert en cybersécurité et administration Linux. Je partage mes connaissances à travers des tutoriels gratuits et des formations pour aider les administrateurs systèmes et développeurs à sécuriser leurs infrastructures.

Questions fréquentes

Mon application ne fonctionne plus depuis l'activation d'AppArmor, comment trouver la règle en cause ?
Cherchez les refus dans les logs noyau avec sudo journalctl -k | grep 'apparmor="DENIED"', ou directement dans /var/log/audit/audit.log et /var/log/syslog. Chaque ligne DENIED nomme l'opération refusée, le profil concerné et le processus, ce qui suffit à identifier le chemin ou la capacité manquante. Pour débloquer immédiatement le service pendant que vous corrigez, basculez le profil en mode permissif avec sudo aa-complain /etc/apparmor.d/<profil>.
J'ai modifié un profil mais rien ne change, pourquoi ?
Éditer le fichier dans /etc/apparmor.d/ ne suffit pas : le noyau conserve la version précédemment chargée. Rechargez le profil concerné avec sudo apparmor_parser -r /etc/apparmor.d/usr.bin.firefox, ou tous les profils d'un coup avec sudo systemctl reload apparmor. Vérifiez ensuite avec sudo aa-status que le profil apparaît bien dans le mode attendu.
Quelle différence concrète entre le mode enforce et le mode complain ?
En enforce, qui est le mode par défaut, AppArmor applique strictement les règles du profil et bloque toute action non prévue. En complain, aucune action n'est bloquée : les violations sont uniquement enregistrées dans les logs système. On utilise complain pour tester ou développer un profil sans risquer de casser l'application, puis on repasse en enforce avec sudo aa-enforce une fois le profil complet.
Faut-il écrire un profil de zéro pour chaque application ?
Non, et c'est même déconseillé : rédiger un profil complet à la main est long et source d'erreurs. De nombreuses distributions, dont Ubuntu, livrent déjà des profils pré-activés pour les services courants. Pour une application non couverte, utilisez les outils du paquet apparmor-utilsaa-genprof génère un profil en observant l'application, aa-logprof le complète ensuite à partir des refus enregistrés.
AppArmor ou SELinux, lequel choisir ?
Les deux répondent au même besoin de contrôle d'accès obligatoire, mais AppArmor est généralement considéré comme plus simple à apprendre et à administrer parce que ses profils s'expriment en chemins de fichiers plutôt qu'en étiquettes. Il est aussi livré pré-configuré sur Ubuntu, Debian et openSUSE, avec des profils déjà actifs pour les services répandus. Si votre distribution embarque déjà AppArmor, partez de l'existant plutôt que de basculer sur SELinux.

Partager ce tutoriel

Cet article vous a plu ?

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Commentaires

Recommandé pour vous

Article de fond sur le sujet

Checklist Sécurité Linux

30 points essentiels pour sécuriser un serveur Linux. Recevez aussi les nouveaux tutoriels par email.

Pas de spam. Désabonnement en 1 clic.