Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
apparmor [Le 04/02/2011, 07:30]
YannUbuntu mise en page
apparmor [Le 04/07/2022, 09:17] (Version actuelle)
82.65.90.171 vandalisme
Ligne 1: Ligne 1:
-{{tag>​serveur sécurité ​vétuste}}+{{tag>Trusty ​serveur sécurité}}
  
 ---- ----
Ligne 8: Ligne 8:
 AppArmor ("​Application Armor"​) est un logiciel libre de sécurité pour Linux. AppArmor permet à l'​administrateur système d'​associer à chaque programme un profil de sécurité qui restreint les capacités de celui-ci. AppArmor ("​Application Armor"​) est un logiciel libre de sécurité pour Linux. AppArmor permet à l'​administrateur système d'​associer à chaque programme un profil de sécurité qui restreint les capacités de celui-ci.
  
-Il s'agit plus précisément d'un outil qui permet de verrouiller les applications ​pour les forcer à n’accéder qu’aux ressources auxquelles elles ont droit sans perturber leur fonctionnement. +Il s'agit plus précisément d'un outil qui permet de verrouiller les applications ​en limitant strictement leur accès ​aux seules ​ressources auxquelles elles ont droit sans perturber leur fonctionnement.
- +
- +
- +
  
  
 ===== Installation ===== ===== Installation =====
  
-FIXME //​date ​de Feistya mettre a jour//+AppArmor est installé par défaut sous Ubuntu.\\ 
 +Vous pouvez ajouter ​de nouveaux profils en [[:​tutoriel:​comment_installer_un_paquet|installant le paquet]] **[[apt>​apparmor-profiles]]**. 
 +Pour pouvoir contrôler Apparmorvous devriez installer le paquet **[[apt>​apparmor-utils]]** qui contient des utilitaires en ligne de commande que vous pouvez utiliser pour changer le mode d'​exécution d'​AppArmor,​ trouver l'​état d'un profil, créer de nouveaux profils, etc.
  
-Il suffit d'​[[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] **[[apt://​apparmor-modules-source,​dpatch|apparmor-modules-source dpatch]]**+===== Utilisation =====
  
-Ensuite, saisir dans la [[:terminal|console]] :+Le répertoire **/​etc/​apparmor.d** est l'​endroit où se situent les profils d'​AppArmor. Il peut être utilisé pour manipuler le mode de l'​ensemble des profils.\\ 
 +Cette commande va lancer tous les profils en mode ''​enforce''​ : 
 +<​code>​ 
 +sudo aa-enforce /​etc/​apparmor.d/​*</​code>​ 
 +Celle-ci va tous les mettre en mode ''​complain''​ (recommandation) : <​code>​sudo aa-complain /​etc/​apparmor.d/​*</​code>​ 
 +Pour mettre seulement le profil d'une application en marche: 
 +<​code>​ 
 +sudo aa-enforce firefox 
 +</​code>​ 
 +Les commandes d'​AppArmor : 
 +  * Pour voir l'​état actuel des profils d'​AppArmor entrez ​la commande dans un [[:​terminal]]: ​<​code>​sudo apparmor_status</​code>​ 
 +  * Pour placer un profil en mode ''​complain''​ (réclamation) : <​code>​sudo aa-complain /​chemin/​vers/​application</​code>​ 
 +  * Pour placer un profil en mode ''​enforce''​ (imposé) :: <​code>​sudo aa-enforce /​chemin/​vers/​application</​code>​ 
 +  * ''​apparmor_parser''​ est utilisé pour charger un profil dans le noyau. Il peut aussi être utilisé pour recharger un profil déjà chargé en utilisant l'​option -r. Pour charger un profil : <​code>​cat /​etc/​apparmor.d/​profile.name | sudo apparmor_parser -a</​code>​ 
 +Pour recharger un profil : <​code>​cat /​etc/​apparmor.d/​profile.name | sudo apparmor_parser -r</​code>​ 
 +  * ''​service apparmor''​ peut être utilisé pour recharger tous les profils: <​code>​sudo service apparmor reload</​code>​ 
 +  * Le répertoire **/​etc/​apparmor.d/​disable** peut être utilisé en même temps que l'​option apparmor_parser -R pour désactiver un profil: <​code>​sudo ln -s /​etc/​apparmor.d/​profile.name /​etc/​apparmor.d/​disable/​  
 +sudo apparmor_parser -R /​etc/​apparmor.d/​profile.name</​code>​ Afin de ré-activer un profil désactivé,​ supprimez le lien symbolique vers le profil dans **/​etc/​apparmor.d/​disable/​**,​ puis chargez le profil en utilisant l'​option -a : <​code>​sudo rm /​etc/​apparmor.d/​disable/​profile.name 
 +cat /​etc/​apparmor.d/​profile.name | sudo apparmor_parser -a</​code>​ 
 +  * AppArmor peut être désactivé,​ et le module déchargé du noyau en entrant les lignes suivantes : <​code>​sudo service apparmor stop 
 +sudo update-rc.d -f apparmor remove</​code>​ 
 +  * Pour réactiver AppArmor saisissez : <​code>​sudo service apparmor start 
 +sudo update-rc.d apparmor defaults</​code>​ 
 +Remplacez ''​nom.profil''​ avec le nom du profil que vous souhaitez manipuler. Remplacez aussi **/​chemin/​vers/​application** avec le chemin d'​accès de l'​exécutable en cours. Par exemple, pour la commande ping utilisez **/​bin/​ping**.
  
-  sudo m-a -v -t prepare +=====Les profils===== 
-  sudo m-a -v -t -f build apparmor-modules +Les profils AppArmor sont de simples fichiers texte qui se trouvent dans **/etc/apparmor.d/**. Les fichiers portent le nom du chemin d'​accès entier de l'​exécutable dont ils sont les profils en remplaçant "/"​ par "​."​. Par exemple **/etc/apparmor.d/​bin.ping** est le profil AppArmor de la commande ''/​bin/​ping''​.
-  sudo m-a -v -t -f install ​apparmor-modules+
  
-Puis  +Il existe deux grands types de règles utilisées dans les profils : 
-[[:tutoriel:​comment_installer_un_paquet|installer ​les paquets]] ​**[[apt://​apparmor,​apparmor-utils,​apparmor-profiles,​libterm-readline-gnu-perl|apparmor apparmor-utils apparmor-profiles libterm-readline-gnu-perl]]**+  * ''​Path entries'' ​: les fichiers auxquels une application peut avoir accès dans le système de fichier. 
 +  ​''​Capability entries'' ​détermine les privilèges qu'un processus restreint est autorisé à utiliser.
  
-et enfin redémarrer sa machine.+À titre d'​exemple,​ regardez le fichier **/​etc/​apparmor.d/​bin.ping** : <​file>​ /​etc/​apparmor.d/​bin.ping>​ 
 +#include <​tunables/​global>​ 
 +/bin/ping flags=(complain) { 
 +#include <​abstractions/​base>​ 
 +#include <​abstractions/​consoles>​ 
 +#include <​abstractions/​nameservice>​
  
 +capability net_raw,
 +capability setuid,
 +network inet raw,
  
 +/bin/ping mixr,
 +/​etc/​modules.conf r,
 +}
 +#include <​tunables/​global>:​ directives d'​inclusion d'​autres fichiers. Ceci permet de placer dans un fichier commun les directives dépendant de plusieurs applications.
  
 +/bin/ping flags=(complain):​ chemin de l'​exécutable et réglage du mode sur complain (réclamation).
  
 +capability net_raw,: autorise l'​application à accéder à la fonctionnalité Posix 1e CAP_NET_RAW.
  
-===== Utilisation =====+/bin/ping mixr,: donne à l'​application les droits de lecture et d'​exécution sur le fichier. 
 +</​file>​ 
 +Après modification d'un fichier de profil, le profil doit être rechargé (Voir plus haut).
  
-Les profils ​apparmor sont situés ​dans le répertoire ​''/​etc/apparmor.d/''​On peut installer quelques profils supplémentaires avec le paquet ''​apparmor-profiles''​. Quand on modifie des profils, il faut recharger la liste des profils avec la commande : +====Création d'un profil==== 
-  sudo invoke-rc.d apparmor reload+Il existe deux manières de créer de nouveaux ​profils. La première s'​applique ​dans le cas d'un processus qui s'exécute simplement, pour une durée limitée. La seconde s'​applique aux processus de type //daemon//, ou encore aux processus exécutés périodiquement ou sur une longue période
 +=== Processus à durée limitée ===
  
-Pour connaître ​l'état actuel ​de AppArmor, utiliser ​la commande ​: +Il suffit de lancer ​l'application à l'​aide ​de la commande ​''​aa-genprof''​. AppArmor détectera automatiquement les accès faits par l'​application,​ générera le fichier profil approprié et le placera dans le répertoire ''/​etc/​apparmor.d''​. 
-  sudo apparmor_status+<​code>​sudo aa-genprof /​chemin/​vers/​mon/​processus</​code>​
  
-<note important>​Quand on ajoute un profil à AppArmor, ce dernier n'est appliqué que si le processus auquel s'​applique le profil est relancé. ''​apparmor_status''​ signalera ces derniers en tant que //​unconfined//​.</​note>​+=== Processus de type daemon ===
  
-Les profils peuvent être en mode //​complain//​ ou en mode //​enforced//​. ​On passe d'​un ​mode à l'autre à l'aide des commandes ​''​aa-complain''​ et ''​aa-enforce''​. En mode //​complain//​AppArmor ne bloque pas les accès faits par le processus, même si ceux-ci ne sont pas autorisés par le profil. ​Il se contente de les signaler dans le fichier ​''​/var/log/messages''​. En monde //enforced//, AppArmor empêche tout accès qui n'est pas permis par le profil du processus.+On crée d'abord un profil temporaire ​à l'aide de la commande ''​aa-autodep''​. On laisse tourner le processus à confiner durant le temps nécessaire,​ puis on corrige le fichier de profil ​à l'aide des messages laissés dans les fichiers log, grâce à la commande ​''​aa-logprof''​. Au besoin, on continue à laisser tourner le processus ​et on relance la commande ​''​aa-logprof'', ​jusqu'​à ce que le fichier de profil ​soit adéquatOn peut alors placer ce fichier ​en mode //enforced// : <​code>​sudo aa-autodep ​/chemin/vers/mon/processus</​code>​ 
 +<​code>​sudo aa-logprof</​code>​
  
-==== Activer un profil existant ====+Pour plus de détails, vous pouvez vous reporter à la documentation sur [[http://​www.novell.com/​documentation/​apparmor/​book_apparmor21_admin/​data/​book_apparmor_admin.html|le site de Novell]] pour connaître les différentes options proposées par ''​aa-logprof''​.
  
-  sudo aa-enforce [programme] 
  
-''​[programme]''​ peut être le nom du programme ou le chemin complet vers l'​exécutable.+Pour la conception d'un plan de test, réfléchissez à la manière dont l'application doit être examinée. Le plan de test devrait être divisé en tests unitaires. Chaque test unitaire devrait avoir une courte description et énumérer les étapes à suivre.
  
-Exemple ​+Quelques tests unitaires standard sont 
-  ​sudo aa-enforce firefox+  ​* Démarrage du programme,​ 
 +  * Arrêt du programme,​ 
 +  * Rechargement du programme.
  
-==== Activer tous les profils ====+Test de toutes ​les commandes prises en charge par le script ''​init''​.
  
-La commande suivante active tous les profils connus+Générer le nouveau profil : Utilisez ''​aa-genprof''​ pour générer un nouveau profilDepuis un terminal : 
-  sudo aa-enforce ​/etc/​apparmor.d/*+<​code>​sudo aa-genprof executable<​/code> 
 +Par exemple : <​code>​sudo aa-genprof slapd</code>
  
-==== Mettre un profil en mode complain ==== 
  
-La commande ''​aa-complain''​ s'​utilise de la même manière que ''​aa-enforce''​. Par défaut les profils ​sont en mode //​enforced//​.+====Mise à jour des profils====
  
-==== Création de nouveaux profils ====+Lorsque le programme ne se comporte pas correctement,​ des messages d'​audit sont journalisés. L'​application ''​aa-logprof''​ peut être utilisée pour analyser les messages d'​audit AppArmor dans les fichiers journaux. Examinez-les puis mettez à jour le profil. Dans un terminal : 
 +<​code>​sudo aa-logprof</​code>​
  
-Il existe deux manières de créer de nouveaux profils. La première s'​applique dans le cas d'un processus qui s'​exécute simplement, pour une durée limitée. La seconde s'​applique aux processus de type //daemon//, ou encore aux processus exécutés périodiquement ou sur une longue période. 
-=== Première méthode === 
- 
-Il suffit de lancer l'​application à l'aide de la commande ''​aa-genprof''​. AppArmor détectera automatiquement les accès faits par l'​application,​ générera le fichier profil approprié et le placera dans le répertoire ''/​etc/​apparmor.d''​. 
-  sudo aa-genprof /​chemin/​vers/​mon/​processus 
- 
-=== Seconde méthode === 
- 
-On crée d'​abord un profil temporaire à l'aide de la commande ''​aa-autodep''​. On laisse tourner le processus à confiner durant le temps nécessaire,​ puis on corrige le fichier de profil à l'aide des messages laissés dans les fichiers log, grâce à la commande ''​aa-logprof''​. Au besoin, on continue à laisser tourner le processus et on relance la commande ''​aa-logprof'',​ jusqu'​à ce que le fichier de profil soit adéquat. On peut alors placer ce fichier en mode //​enforced//​. 
-  sudo aa-autodep /​chemin/​vers/​mon/​processus 
-  ... 
-  sudo aa-logprof 
- 
-Pour plus de détails, vous pouvez vous reporter à la documentation sur le site de Novell pour connaître les différentes options proposées par ''​aa-logprof''​. 
  
 ==== Notifications de violations ==== ==== Notifications de violations ====
  
-FIXME //​date ​de Gutsya mettre a jour// +Le mode strict applique les règles et rapporte les tentatives ​de violationalors que le mode relâché se contente ​d'enregistrer dans les journaux système les appels système qui auraient été bloqués, sans les bloquer réellement.\\ 
-Gusty n'​inclut pas encore ​d'outils pour avertir l'​utilisateur des violations de profilsIl faut donc examiner manuellement le fichier ​''​syslog''​, ce qui peut être fastidieux. Une solution pourrait être d'installer ​le paquet ​''​logcheck''​qui se chargera d'​envoyer par courriel diverses informations contenues dans les logs, dont les violations ​signalées par AppArmor.+''​aa-genprof'' ​n'est en fait qu'un petit script intelligent ​qui utilise ​''​aa-logprof''​ : il crée un profil vide, le charge en mode relâché, puis lance ''​aa-logprof''​. Ce dernier est un outil qui met à jour un profil en fonction des violations ​qui ont été enregistrées. On peut donc relancer cet outil plus tard, de manière à améliorer le profil nouvellement créé. 
 +Pour voir une notification sur votre bureau lorsqu'​AppArmor ​entre un log "​DENIED"​ log entry vous devez entrer cette commande : 
 +<​code>​sudo aa-notify -p --display $DISPLAY</​code>​ 
 +qui doit être ajoutée à chaque boot.
  
-===== Exemples de profils =====+Une autre solution pourrait être l'​installation du paquet **[[apt>​logcheck]]** ( [[http://​nyquist.life.free.fr/​dotclear/​index.php?​post/​2008/​10/​13/​Logcheck|tutoriel-1]],​ [[https://​home.demi-lune.org/​brain/?​page=display&​section=articles&​id=129|tutoriel-2]] ) , qui se chargera d'​envoyer par courriel diverses informations contenues dans les logs, dont les violations signalées par AppArmor.
  
  
  
 ===== Voir aussi ===== ===== Voir aussi =====
-  ​* [[selinux]] + 
-  * [[sécurité]]+  * [[https://​code.launchpad.net/​apparmor-profiles|Sur launchpad]] 
 +  * [[https://​wiki.ubuntu.com/​AppArmor|Wiki ubuntu Apparmor]] 
 +  * [[https://​wiki.ubuntu.com/​DebuggingApparmor|Wiki Ubuntu DebuggingApparmor]] 
 +  * [[http://​fabianmoser.at/​blog/​2010/​09/​24/​secure-firefox-with-apparmor/​|Ajouter le support des profiles pulseaudio dans les profiles firefox]] 
 +  * [[http://​www.mpipks-dresden.mpg.de/​~mueller/​docs/​suse10.1/​suselinux-manual_en/​manual/​bx5bmkm.html|Building Novell AppArmor Profiles with the YaST GUI]] ( une interface un peu plus évolué pour apparmor sur novell ) 
 +  ​* [[:selinux]] 
 +  * [[:sécurité]]
   * [[http://​www.novell.com/​linux/​security/​apparmor/​|Apparmor par Novell]], plus spécifiquement la [[http://​www.novell.com/​documentation/​apparmor/​book_apparmor21_admin/​data/​book_apparmor_admin.html|documentation]].   * [[http://​www.novell.com/​linux/​security/​apparmor/​|Apparmor par Novell]], plus spécifiquement la [[http://​www.novell.com/​documentation/​apparmor/​book_apparmor21_admin/​data/​book_apparmor_admin.html|documentation]].
-  * [[http://​blog.nschirrer.com/​fr/​apparmor-les-bases|Les bases d'​Apparmor]] par Nicolas Schirrer le 8 mars 2010. 
  
 ---- ----
 //​Contributeurs principaux: ..// //​Contributeurs principaux: ..//
  • apparmor.1296801058.txt.gz
  • Dernière modification: Le 18/04/2011, 14:44
  • (modification externe)