AppArmor

Tutoriel Debian AppArmor

Tutoriel Debian AppArmor
AppArmor est un système de contrôle d'accès obligatoire pour Linux. Dans un système de contrôle d'accès obligatoire (MAC), le noyau impose des restrictions sur les chemins, les sockets, les ports et divers mécanismes d'entrée/sortie. Il a été développé par Immunex et est maintenant maintenu par SUSE. Il fait partie du noyau Linux depuis la version 2.6.36.

Alors que le noyau Linux offre une bonne isolation des utilisateurs et un contrôle strict des autorisations de fichiers, un MAC comme AppArmor fournit des autorisations plus fines et une protection contre de nombreuses menaces inconnues. Si une vulnérabilité de sécurité est détectée dans le noyau Linux ou un autre démon système, un système AppArmor bien configuré peut empêcher l'accès aux chemins critiques qui pourraient être vulnérables au problème.

AppArmor peut fonctionner efficacement dans deux modes - appliquer et se plaindre. Enforce est le statut de production par défaut d'AppArmor, tandis que plaindre est utile pour développer un ensemble de règles basé sur des modèles d'opération réels et pour consigner les violations. Il est configuré via des fichiers de texte brut dans un format relativement convivial et a une courbe d'apprentissage plus courte que la plupart des autres systèmes de contrôle d'accès obligatoires.

Installation

Pour installer AppArmor sur Debian, exécutez (en tant que root) :

apt installer apparmor apparmor-utils auditd

Vous pouvez omettre auditd si vous n'avez pas besoin d'outils de génération de profil.

Si vous souhaitez installer des profils de démarrage et supplémentaires, exécutez :

apt installer apparmor-profiles apparmor-profiles-extra

Étant donné qu'AppArmor est un module du noyau Linux, vous devez l'activer avec les commandes suivantes :

mkdir -p /etc/default/grub.ré

Créez le fichier /etc/default/grub.d/apparaitre.cfg avec le contenu suivant :

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor"

Enregistrez et quittez, puis exécutez :

mise à jour-grub

puis redémarrer.

Il y a débat si cela devrait être fait automatiquement. Vous pouvez consulter la fin de ce rapport de bogue pour voir si cela a été modifié depuis le moment de la rédaction de cet article.

Une fois que vous avez redémarré, vous pouvez vérifier si AppArmor est activé en exécutant :

aa-statut

Cette commande répertorie les profils AppArmor chargés et répertorie leur état de conformité actuel (appliqué, se plaindre, etc.)

Si vous exécutez :

ps auxZ | grep -v '^non confiné'

Vous verrez une liste de programmes qui sont confinés par un profil AppArmor. Un programme confiné est un programme qui est affecté et limité (soit passivement, en mode réclamation, soit activement en mode forcé) par AppArmor.

Changement de mode / Désactivation d'AppArmor

Si vous souhaitez désactiver AppArmor parce qu'un programme ne fonctionne pas, vous pouvez envisager de placer le profil en mode réclamation plutôt qu'en mode forcé. Pour ce faire, exécutez (en tant que root, ou via sudo) :

aa-plainte /chemin/vers/programme

Par exemple, si le ping ne fonctionne pas correctement, utilisez :

aa-plainte /usr/bin/ping

Une fois qu'un profil est en mode réclamation, vous pouvez examiner la journalisation via /var/log/syslog ou avec journalctl -xe sur les systèmes systemd (Debian 8.x, Jessie et plus).

Une fois que vous avez modifié le profil pour supprimer ou ajuster la restriction, vous pouvez réactiver le mode d'application pour le binaire avec :

aa-enforce /chemin/vers/programme

Dans l'exemple ci-dessus, remplacez /path/to/program par le chemin complet du binaire affecté par le profil en question.

Si vous rencontrez un problème avec un programme et qu'il est en mode réclamation, les journaux fourniront des informations spécifiques sur l'action refusée. Le champ d'opération expliquera ce que le programme a essayé de faire, le champ de profil le profil spécifique affecté, le nom spécifiera la cible de l'action (i.e. quel fichier a été arrêté à partir d'une opération de lecture ou d'écriture), et les masques demandé et refusé indiquent si l'opération, à la fois demandée par le programme et refusée par le profil, a été en lecture ou en lecture-écriture.

Vous pouvez désactiver entièrement un profil en exécutant :

aa-disable /chemin/vers/programme

Ou, vous pouvez désactiver complètement AppArmor en modifiant le fichier : /etc/default/grub.d/apparaitre.cfg pour contenir :

GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=0"

Puis en cours d'exécution :

mise à jour-grub

Et redémarrer votre système.

Utilisation des profils AppArmor

Les profils AppArmor résident dans le fichier /etc/apparmor.d/ répertoire. Si vous installez les packages apparmor-profiles et apparmor-profiles-extra, vous trouverez des profils dans /usr/share/doc/apparmor-profiles et /usr/share/doc/apparmor-profiles/extra. Pour les activer, copiez les fichiers dans /etc/apparmor.d puis éditez-les pour vous assurer qu'ils contiennent les valeurs souhaitées, enregistrez, puis exécutez :

rechargement de l'apparence de service

Si vous souhaitez recharger un seul profil, exécutez :

apparmor_parser -r /etc/apparmor.d/profil

Où "profil" est le nom du profil en question.

Il n'est pas recommandé de simplement copier les profils et les profils supplémentaires dans le fichier /etc/apparmor.d répertoire sans les éditer à la main. Certains profils peuvent être anciens et certains ne contiendront certainement pas les valeurs que vous souhaitez. Si vous les copiez tous, configurez-les au moins pour se plaindre afin que vous puissiez surveiller les violations sans casser les programmes en production :

cd /etc/apparmor.ré
pour f dans *.* ; faire aa-plainte /etc/apparmor.d/$f; Fini

Vous pouvez utiliser la commande aa-enforce individuellement pour activer les profils que vous souhaitez conserver, régler ceux qui causent des problèmes et les appliquer, ou supprimer ceux dont vous n'avez pas besoin en exécutant aa-disable ou en supprimant le fichier de profil de /etc/apparmor.ré.

Création d'un profil AppArmor

Avant de créer un profil personnalisé, vous souhaiterez rechercher le fichier /etc/apparmor.d et /usr/share/doc/apparmor-profiles pour un profil existant qui couvre le binaire en question. Pour les rechercher, exécutez :

trouver /usr/share/doc/apparmor-profiles | grep "programme" -i

Remplacer programme avec le programme que vous souhaitez protéger avec AppArmor. Si vous en trouvez un, copiez-le dans /etc/apparmor.d puis éditez le fichier dans votre éditeur de texte préféré.

Chaque profil comprend trois sections principales : comprend, capacités et chemins. Vous pouvez trouver une référence utile dans la documentation de SuSE.

Comprend

Comprend une syntaxe que vous pouvez utiliser dans le fichier. Ils utilisent la syntaxe C/C++ #include <> et font généralement référence aux abstractions trouvées dans le fichier /etc/apparmor.répertoire d/abstractions.

Capacités

La section des capacités, généralement trouvée après les inclusions, répertorie les capacités spécifiques que le programme peut exécuter. Par exemple, vous pouvez laisser un programme effectuer une opération setuid avec :

ensemble de capacités

La capacité net_bind_service permet à un programme de se lier à un port réseau. Si vous ne l'accordez pas, un démon de serveur comme Apache ne peut pas ouvrir le port 80 et écouter. Cependant, l'omission de cette capacité peut fournir une excellente sécurité pour les processus auxquels vous ne faites pas confiance sur le réseau.

Chemins

Vous pouvez lister les chemins que le programme est capable de lire (et éventuellement d'écrire). Par exemple, si vous souhaitez autoriser le programme à accéder au fichier /etc/passwd, ajoutez :

/etc/passwdr

Dans le profil. Notez le "r" - cela signifie lecture seule. Si vous changez cela en "w", l'écriture dans ce chemin ou fichier sera autorisée.

Même si vous autorisez un chemin dans AppArmor, il est toujours soumis aux restrictions du système de fichiers Linux (i.e. défini avec chmod, chgrp et chown). Cependant, AppArmor fournira toujours une couche de protection supplémentaire si ces mécanismes sont compromis.

Conclusion

La clé d'un déploiement réussi d'AppArmor est de définir des profils pour se plaindre, puis d'appliquer. Un examen minutieux du journal vous donnera les chemins et les capacités minimaux nécessaires au bon fonctionnement du programme. En les attribuant et pas plus, vous augmenterez considérablement la sécurité de votre système.

Top 5 des produits de souris d'ordinateur ergonomiques pour Linux
L'utilisation prolongée de l'ordinateur provoque-t-elle des douleurs au poignet ou aux doigts? Vous souffrez de raideurs articulaires et devez constam...
Comment modifier les paramètres de la souris et du pavé tactile à l'aide de Xinput sous Linux
La plupart des distributions Linux sont livrées avec la bibliothèque "libinput" par défaut pour gérer les événements d'entrée sur un système. Il peut ...
Remappez les boutons de votre souris différemment pour différents logiciels avec X-Mouse Button Control
Peut-être que vous avez besoin d'un outil qui pourrait faire changer le contrôle de votre souris avec chaque application que vous utilisez. Si tel est...