AppArmor

AppArmor est un système de sécurité des applications Linux efficace et facile à utiliser. AppArmor protège de manière proactive le système d'exploitation et les applications contre les menaces externes ou internes, même les attaques de type "zero-day" (avec des profils stricts), en imposant un bon comportement et en empêchant l'exploitation des failles applicatives, même inconnues.

Les profils de sécurité d'AppArmor définissent complètement les ressources du système auxquelles les applications individuelles peuvent accéder, et avec quels privilèges. Plusieurs profils par défaut sont inclus dans AppArmor et, grâce à une combinaison d'outils avancés d'analyse statique et d'apprentissage, les profils AppArmor peuvent être déployés avec succès en quelques heures, même pour des applications très complexes.

Vérifier si AppArmor est installé

AppArmor et ses profils devraient déjà être activés et fonctionner sur Parrot OS. Pour vérifier si AppArmor est actif, faites :

sudo aa-status --enabled ; echo $?

La sortie doit retourner 0. Vous pouvez également exécuter la commande suivante pour afficher les profils AppArmor chargés :

sudo aa-status

Si, pour une raison quelconque, AppArmor n'est pas préinstallé, poursuivez la lecture ci-dessous.

Installer AppArmor

sudo apt install apparmor apparmor-utils auditd

apparmor = paquet principal
apparmor-utils = utilitaires pour contrôler les profils AppArmor
auditd = outils de génération automatique de profils

\

Pour activer AppArmor, exécutez les commandes suivantes :

sudo mkdir -p /etc/default/grub.d\ 

echo 'GRUB_CMDLINE_LINUX_DEFAULT=\"$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor\"' | sudo tee /etc/default/grub.d/apparmor.cfg

\

sudo update-grub

\

sudo reboot

Puis exécutez la commande suivante pour inspecter l'état actuel :

sudo aa-status

Ceci listera tous les profils AppArmor chargés pour les applications, les processus et détaillera leur état (enforced, complain, unconfined). Par exemple, pour vérifier le mode d'application, exécutez la commande suivante :

ps auxZ | grep -v '^unconfined'

Pour installer un profil, exécutez la commande suivante :

sudo apt install apparmor-profiles apparmor-profiles-extra 

Les profils AppArmor se trouvent dans /etc/apparmor.d/. Vous pouvez utiliser apparmor_parser(8) pour les insérer dans le noyau. Cela est fait automatiquement lors de l'installation de paquets qui déposent la politique dans /etc/apparmor.d/.

Par exemple, pour mettre tous les profils "extra" (fournis dans le paquet apparmor-profiles) en mode plainte (sauf les règles de refus qui sont appliquées silencieusement, la politique de sécurité n'est pas appliquée et les violations d'accès sont enregistrées), faites ce qui suit :

cd /usr/share/doc/apparmor-profiles/extras

\

cp -i *.* /etc/apparmor.d/

\

for f in *.* ; 
    do aa-complain /etc/apparmor.d/$f; 
done

Pour mettre ces profils en mode enforce, utilisez aa-enforce au lieu de aa-complain. Attention cependant : beaucoup de ces profils ne sont pas à jour et casseront des fonctionnalités en mode enforce (et peut-être même en mode complain) ; ne les appliquez que si vous êtes prêt à les améliorer en amont.

Désactiver AppArmor

D'abord, vous pouvez désactiver les profils individuels avec aa-disable. Mais si vous voulez vraiment désactiver AppArmor sur votre système, lancez :

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

Debugger AppArmor

La commande aa-notify, du paquet apparmor-notify, est capable de fournir une notification sur le bureau chaque fois qu'un programme provoque un message DENIED dans /var/log/kern.log. Accordez-vous les droits de lecture sur /var/log/kern.log en rejoignant le groupe adm :

sudo adduser "$USER" adm 

Ensuite, aa-notify devrait démarrer automatiquement lors de votre prochaine connexion (en utilisant /etc/xdg/autostart/apparmor-notify.desktop). Si ce n'est pas le cas, lancez-le manuellement :

aa-notify -p 

Si vous utilisez auditd, vous devriez lancer aa-notify de cette manière :

sudo aa-notify -p -f /var/log/audit/audit.log

Diagnostiquer si un bug a pu être causé par AppArmor

Le paquet apparmor-utils fournit de nombreuses commandes utiles pour déboguer AppArmor. Découvrez si AppArmor est activé à l'aide de la commande cat :

cat /sys/module/apparmor/parameters/enabled 

Cette commande renvoie Y si elle est vraie.

Découvrez quels profils sont activés

sudo aa-status

La commande ci-dessus répertorie tous les profils AppArmor chargés pour les applications et les processus et détaille leur état (enforced, complain, unconfined, et

ps auxZ | grep -v '^unconfined'

répertorie les exécutables en cours d'exécution qui sont actuellement confinés par un profil AppArmor. Parfois, il est utile de désactiver un profil et de tester à nouveau si le bug persiste :

sudo aa-disable /etc/apparmor.d/$profile 

par exemple sudo aa-disable /etc/apparmor.d/usr.bin.pidgin.

Vous pouvez réactiver le profil de cette façon :

sudo aa-enforce /etc/apparmor.d/$profile

Vérifier les journaux

sudo tail -f /var/log/syslog | grep 'DENIED' 

ou (si auditd est installé) : sudo tail -f /var/log/auditd/auditd.log | grep 'DENIED' Les lignes "DENIED" devraient fournir plus d'informations sur le processus concret ou l'accès au système de fichiers qui a été refusé. Produire une liste des processus avec des ports tcp ou udp qui n'ont pas de profils AppArmor chargés :

sudo aa-unconfined 

également possible avec le paramètre --paranoid.

Les profils en mode complain enverront des lignes ALLOWED dans les journaux pour des entrées qui seraient normalement DENIED en mode enforce. Vous pouvez utiliser ceci pour modifier les configurations avant de les activer en mode exécution.