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 11/02/2014, 22:57]
mavosaure Suppression lien vers version EOL
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 11: Ligne 11:
  
  
 +===== Installation =====
  
 +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 Apparmor, vous 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.
  
 +===== Utilisation =====
  
- +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.\\ 
-===== Installation ===== +Cette commande ​va lancer tous les profils en mode ''​enforce'' ​
-====Installation lucid et supérieur==== +<​code>​ 
- +sudo aa-enforce /etc/apparmor.d/*</​code>​ 
-AppArmor est installé par défaut \\ +Celle-ci ​va tous les mettre ​en mode ''​complain''​ (recommandation) : <​code>​sudo aa-complain /​etc/​apparmor.d/​*</​code>​ 
-Vous pouvez ajouter de nouveaux profils en[[:​tutoriel:​comment_installer_un_paquet| installant le paquet]] ​**[[apt>apparmor-profiles]]** \\ +Pour mettre seulement le profil d'une application en marche:
-Pour pouvoir controler Apparmor, vous devriez installer le paquet **[[apt>​apparmor-utils]]** +
-En une seule commande :  +
-<​code>​sudo ​apt-get install ​apparmor-profiles apparmor-utils</​code>​  +
- +
-\\  +
-Lancer dans la [[:​terminal|console]] : +
-FIXME ! ATTENTION : la première commande ​va lancer tout les profils ​en mode enforce ​+
 <​code>​ <​code>​
-echo " pour mettre tous les profiles en marche " 
-sudo aa-enforce /​etc/​apparmor.d/​* 
-echo " pour mettre seulement le profile d'une application en marche"​ 
 sudo aa-enforce firefox sudo aa-enforce firefox
 </​code>​ </​code>​
-====Installation feisty==== +Les commandes d'​AppArmor : 
-FIXME //date de Feisty, a mettre ​jour//+  * 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 -: <​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**.
  
-Il suffit ​d'[[:​tutoriel:​comment_installer_un_paquet|installer ​les paquets]] ​**[[apt://apparmor-modules-source,​dpatch|apparmor-modules-source dpatch]]**  ​(__paquets indisponible avec natty -11.04__ )+=====Les profils===== 
 +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''​.
  
-Ensuite, saisir ​dans la [[:terminal|console]] ​:+Il existe deux grands types de règles utilisées ​dans les profils ​: 
 +  * ''​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.
  
-  sudo m-a -v -t prepare ​           +À titre d'​exemple,​ regardez le fichier ​**/etc/apparmor.d/bin.ping** : <​file>​ /​etc/​apparmor.d/​bin.ping>​ 
-  sudo m-a -v -t -f build apparmor-modules ​         +#include <​tunables/​global>​ 
-  sudo m-a -v -t -f install apparmor-modules ​        +/bin/ping flags=(complain{ 
-Puis  +#include <​abstractions/​base>​ 
-[[:​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]]** +#include <​abstractions/​consoles>​ 
-__ne se trouve plus dans les dépôts avec natty__ ​)  +#include <​abstractions/​nameservice>​
-et enfin redémarrer sa machine.+
  
 +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.
  
-- Pour **Natty**  ​et supérieur FIXME  installer ​ **[[apt>​user-space parcer utility for apparmor]]** disponible dans les dépôts(pour consulter le profil ​)+/bin/ping flags=(complain):​ chemin de l'​exécutable ​et réglage du mode sur complain ​(réclamation).
  
-Puis dans  [[:​terminal|console]] saisir ​+capability net_raw,autorise l'​application à accéder à la fonctionnalité Posix 1e CAP_NET_RAW.
  
-apparmor_parser ​+/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).
  
-Pour consulter le statut ​d'apparmor installer via le terminal :+====Création ​d'un profil==== 
 +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 ===
  
-sudo apt-get install ​apparmor-utils+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''​. 
 +<​code>​sudo aa-genprof /​chemin/​vers/​mon/​processus</​code>​
  
-===== Utilisation =====+=== Processus de type daemon ​===
  
-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 profilsil faut recharger la liste des profils avec la commande : +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 besoinon 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// ​<​code>​sudo aa-autodep /​chemin/​vers/​mon/​processus</​code>​ 
-  sudo invoke-rc.d apparmor reload+<​code>​sudo aa-logprof</​code>​
  
-Pour connaître l'​état actuel ​de AppArmorutiliser ​la commande ​: +Pour plus de détailsvous 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 apparmor_status+
  
-<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>​ 
  
-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 profilIl se contente de les signaler dans le fichier ''/​var/​log/​messages''​. En mode //​enforced//,​ AppArmor empêche tout accès non permis par le profil du processus.+Pour la conception ​d'​un ​plan de test, réfléchissez ​à la manière dont l'application doit être examinéeLe plan de test devrait être divisé en tests unitairesChaque test unitaire devrait avoir une courte description et énumérer ​les étapes à suivre.
  
-==== Activer un profil existant ====+Quelques tests unitaires standard sont : 
 +  * Démarrage du programme,​ 
 +  * Arrêt du programme,​ 
 +  * Rechargement du programme.
  
-  sudo aa-enforce [programme]+Test de toutes les commandes prises en charge par le script ''​init''​.
  
-''​[programme]'' ​peut être le nom du programme ou le chemin complet vers l'​exécutable.+Générer le nouveau profil : Utilisez ​''​aa-genprof'' ​pour générer un nouveau profilDepuis un terminal : 
 +<​code>​sudo aa-genprof executable</​code>​ 
 +Par exemple : <​code>​sudo aa-genprof slapd</​code>​
  
-Exemple : 
-  sudo aa-enforce firefox 
  
-==== Activer tous les profils ====+====Mise à jour des profils====
  
-La commande suivante active tous les profils connus+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 journauxExaminez-les puis mettez à jour le profil. Dans un terminal : 
-  sudo aa-enforce /​etc/​apparmor.d/*+<​code>​sudo aa-logprof</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//​. 
- 
-==== Création de nouveaux profils ==== 
- 
-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 +Le mode strict applique les règles et rapporte les tentatives de violation, alors 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 profils. Il faut donc examiner manuellement ​le fichier ​''​syslog''​, ce qui peut être fastidieuxUne solution pourrait être d'installer le 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.+''​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 =====
-Ou trouver d'​autres profiles : 
-  * [[https://​code.launchpad.net/​apparmor-profiles|Sur launchpad]] 
-  * [[http://​bodhizazen.net/​Tutorials/​aa|Les profiles de bodhy zazen]] 
-  *  [[http://​apparmor.opensuse.org/​|AppArmor profile exchange ( apparmor.opensuse.org )]] ( les profiles partagés ou mise à jour par apparmor arrivent ici ) ( voir sudo aa-logprof ​ [[http://​doc.opensuse.org/​products/​opensuse/​openSUSE/​opensuse-security/​cha.apparmor.repos.html|AppArmor Profile Repositories]] ) 
  
 +  * [[https://​code.launchpad.net/​apparmor-profiles|Sur launchpad]]
   * [[https://​wiki.ubuntu.com/​AppArmor|Wiki ubuntu Apparmor]]   * [[https://​wiki.ubuntu.com/​AppArmor|Wiki ubuntu Apparmor]]
   * [[https://​wiki.ubuntu.com/​DebuggingApparmor|Wiki Ubuntu DebuggingApparmor]]   * [[https://​wiki.ubuntu.com/​DebuggingApparmor|Wiki Ubuntu DebuggingApparmor]]
-  * [[http://​ubuntuforums.org/​showthread.php?​t=1008906|Introduction to AppArmor ( de bodhi zazen ) sur le forum ubuntu anglais]] 
   * [[http://​fabianmoser.at/​blog/​2010/​09/​24/​secure-firefox-with-apparmor/​|Ajouter le support des profiles pulseaudio dans les profiles firefox]]   * [[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 )   * [[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]] +  * [[:selinux]] 
-  * [[sécurité]]+  * [[: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]].
  
 ---- ----
 //​Contributeurs principaux: ..// //​Contributeurs principaux: ..//
  • apparmor.1392155873.txt.gz
  • Dernière modification: Le 11/02/2014, 22:57
  • par mavosaure