Chapitre 5. Réglage de vos applications Web avec ChangeHat Apache

Table des matières

5.1. Apache ChangeHat
5.2. Configuration d'Apache pour mod-apparmor

Un profil Novell® AppArmor représente la stratégie de sécurité pour une instance de programme ou un processus individuel. Il s'applique à un programme exécutable. Toutefois, si une partie du programme nécessite des droits d'accès différents d'autres parties, le programme peut « changer les hats » pour utiliser un contexte de sécurité différent, distinct de l'accès du programme principal. Cela est nommé hat ou sous-profil.

ChangeHat permet aux programmes de changer de hat au sein d'un profil Novell AppArmor. Il permet de définir la sécurité à un niveau plus fin que le processus.

Cette fonction nécessite que chaque application « reconnaisse changehat », ce qui signifie qu'elle est modifiée pour qu'une requête au module Novell AppArmor change de domaine de sécurité selon une périodicité arbitraire lors de l'exécution de l'application.

Un profil peut posséder un nombre arbitraire de sous-profils, mais sur deux niveaux seulement : un sous-profil ne peut pas posséder lui-même de sous-profils. Un sous-profil est écrit comme un profil séparé et son nom est celui du profil qui le contient suivi du nom du sous-profil, les deux noms étant séparés par un ^. Les sous-profils doivent être stockés dans le même fichier que le profil parent.

[Note]Remarque

Pour plus d'informations, reportez-vous à la page de manuel change_hat.


5.1. Apache ChangeHat

Novell AppArmor fournit un module mod-apparmor pour le programme Apache. Le module mod-apparmor fonctionne sur votre système SUSE Linux pour le que le serveur Web Apache puisse « reconnaître ChangeHat ». Il est installé si Apache se trouve sur votre système.

Lorsque Apache reconnaît ChangeHat, il vérifie les profils de sécurité Novell AppArmor personnalisés suivants dans l'ordre donné pour chaque demande d'URI qu'il reçoit.

  • Hat spécifique d'un URI (par exemple, ^phpsysinfo-dev/templates/classic/images/bar_left.gif)

  • DEFAULT_URI

  • HANDLING_UNTRUSTED_INPUT

Si vous disposez de la version 2 d'Apache requise sur votre système, le module mod-apparmor est installé automatiquement avec Novell AppArmor et il est ajouté à la configuration d'Apache. La version 1.3 d'Apache n'est pas prise en charge.

[Note]Remarque

Si vous installez mod-apparmor sans Novell AppArmor, vous devez vérifier que le module de chargement d'Apache a une commande dans le fichier de configuration qui charge le module mod-apparmor en ajoutant la ligne suivante à votre fichier de configuration Apache :

LoadModule change_hat_module modules/mod_change_hat.so

5.1.1. Outils de gestion des applications qui reconnaissent ChangeHat

Comme avec la plupart des outils Novell AppArmor, vous disposez de deux méthodes de gestion de ChangeHat, YaST ou l'interface de ligne de commande. Vous pouvez gérer les applications qui reconnaissent ChangeHat de façon beaucoup plus souple sur la ligne de commande, mais ce processus est également plus complexe. Les deux méthodes permettent de gérer les hats de votre application et de les remplir avec des entrées de profil.

Dans les étapes qui suivent, nous vous présentons une démonstration qui ajoute des hats à un profil Apache en utilisant YaST. Dans le menu Ajouter un assistant de profil, les utilitaires de profil de Novell AppArmor invitent à créer de nouveaux hats pour les requêtes d'URI distinctes. La création d'un nouveau hat permet de créer des profils individuels pour chaque URI. Vous pouvez ainsi créer des règles très précises pour chaque requête.

Si l'URI traité ne représente pas un traitement significatif ou un risque de sécurité significatif, vous pouvez sélectionner Use Default Hat (Utiliser hat par défaut) en toute sécurité pour traiter cet URI dans le hat par défaut, qui est le profil de sécurité par défaut.

Dans la démonstration, nous allons créer un nouveau hat pour l'URI phpsysinfo-dev et ses accès suivants. À l'aide des utilitaires de profil, nous déléguons ce qui est ajouté à ce nouveau hat. Le hat résultant devient un conteneur à sécurité renforcée qui englobe tout le traitement du serveur qui se produit lorsque l'URI phpsysinfo-dev est transmis au serveur Web Apache.

Dans cette démonstration, nous allons générer un profil pour le phpsysinfo de l'application (reportez-vous à http://phpsysinfo.sourceforge.net pour plus d'informations). Le paquetage phpsysinfo-dev doit être installé sous /srv/www/htdocs/phpsysinfo-dev/ dans une nouvelle installation de Novell AppArmor.

  1. Lorsque phpsysinfo-dev est installé, vous êtes prêt à ajouter des hats au profil Apache. Dans l'interface graphique de Novell AppArmor, sélectionnez Ajouter un assistant de profil.

    Ajouter un assistant de profil
  2. Dans Profil à ajouter, entrez httpd2-prefork.

  3. Cliquez sur Créer profil. La fenêtre Assistant de profil AppArmor s'ouvre.

    Assistant de profil AppArmor
  4. Redémarrez Apache en entrant rcapache2 restart dans une fenêtre de terminal.

    [Note]Remarque

    Redémarrez maintenant les programmes concernés.

  5. Ouvrez http://localhost/phpsysinfo-dev/ dans un navigateur Web. La fenêtre du navigateur doit afficher des informations relatives à l'utilisation du réseau et au système.

    [Note]Remarque

    Pour vérifier que cette requête est traitée par le serveur et que vous ne reportez pas aux données mises en cache dans votre navigateur, vous devez rafraîchir la page. Pour cela, cliquez sur le bouton Actualiser du navigateur pour vous assurer qu'Apache traite la requête de l'URI phpsysinfo-dev.

  6. Cliquez sur Rechercher les entrées du journal du système à ajouter aux profils. Novell AppArmor lance l'outil logprof, qui recherche toutes les informations apprises au cours de l'étape précédente. Il commence à vous poser des questions relatives au profil.

  7. Dans notre démonstration, logprof nous demande d'abord Ajouter le hat demandé ou Utiliser le hat par défaut. En effet, il a remarqué que phpsysinfo-dev a fait l'objet d'un accès dans une URI. Sélectionnez Ajouter le hat demandé.

    Assistant de profil AppArmor : Ajouter le hat demandé
  8. Cliquez sur Autoriser.

    Lorsque vous choisissez Ajouter le hat demandé à l'étape précédente, un nouveau hat est créé dans le profil. Il est spécifié que les questions ultérieures sur les actions du script sont ajoutées dans le hat qui vient d'être créé et non dans le hat par défaut de cette application.

    Dans l'écran suivant, Novell AppArmor affiche un programme externe que le script a exécuté. Vous pouvez spécifier que le programme doit s'exécuter en confiné par le hat phpsysinfo-dev (choisissez Hériter), confiné par un profil séparé (choisissez Profil), ou non confiné ou sans aucun profil de sécurité (choisissez Non confiné). Avec l'option Profil, un nouveau profil est créé pour le programme s'il n'en existe pas encore.

    [Note]Remarque

    Le fait de choisir Non confiné peut générer une faille de sécurité importante et doit être utilisé avec précaution.

    Assistant de profil AppArmor : Hériter
    1. Sélectionnez Hériter pour le chemin /bin/bash. Cela ajoute /bin/bash/ (accédé par Apache) au profil du hat phpsysinfo-dev avec les autorisations nécessaires.

    2. Cliquez sur Autoriser.

  9. Les questions restantes invitent à générer de nouveaux hats et à ajouter des entrées à votre profil et à ses hats. Le processus d'ajout d'entrées à des profils est abordé en détail à la Section 3.3.1, « Ajout d'un profil à l'aide de l'assistant » (↑Guide d'administration de Novell AppArmor 2.0).

    Après avoir répondu à toutes les questions, cliquez sur Terminer pour enregistrer vos modifications et quitter l'assistant.

Voilà à quoi peut ressembler un hat phpsyinfo-dev.

Exemple 5.1. Exemple de hat phpsysinfo-dev

  ^phpsysinfo {
  #include <program-chunks/base-files>
    /bin/df                               ix,
    /bin/bash                             ix,
    /dev/tty                              rw,
    /etc/SuSE-release                     r,
    /etc/fstab                            r,
    /etc/hosts                            r,
    /etc/mtab                             r,
    /proc/**                              r,
    /sbin/lspci                           ix,
    /srv/www/htdocs/sysinfo/**            r,
    /sys/bus/pci/devices                  r,
    /sys/devices/**                       r,
    /usr/bin/who                          ix,
    /usr/share/pci.ids                    r,
    /var/log/apache2/{access,error}_log   w,
    /var/run/utmp                         r,
  }
[Note]Remarque

Le profil, ^phpsysinfo-dev, n'est valide que dans le contexte d'un processus fonctionnant sous le profil parent httpd2-prefork.

5.1.2. Ajout de hats et d'entrées aux hats

Lorsque vous utilisez la boîte de dialogue Modifier le profil (pour obtenir des instructions, reportez-vous à la Section 3.3.3, « Modification d'un profil » (↑Guide d'administration de Novell AppArmor 2.0)) ou lorsque vous ajoutez un nouveau profil en ajoutant Ajouter un profil Novell AppArmor manuellement (pour obtenir des instructions, reportez-vous à la Section 3.3.2, « Ajout manuel d'un profil » (↑Guide d'administration de Novell AppArmor 2.0)), vous pouvez ajouter des hats (sous-profils) à vos profils Novell AppArmor.

Vous pouvez ajouter un sous-profil ChangeHat à partir de la fenêtre Boîte de dialogue de profil AppArmor.

Boîte de dialogue de profil AppArmor
  1. Dans la fenêtre Boîte de dialogue de profil AppArmor, cliquez sur Ajouter une entrée puis sélectionnez Hat. La boîte de dialogue Entrer le nom du hat s'ouvre :

    Entrer le nom du hat
  2. Entrez le nom du hat à ajouter au profil Novell AppArmor. Le nom est l'URI qui, lors de l'accès, reçoit l'ensemble d'autorisations défini dans le hat.

  3. Cliquez sur Créer hat. Vous revenez à la boîte de dialogue de profil AppArmor.

  4. Après avoir ajouté un nouveau hat, cliquez sur Terminé.

[Note]Remarque

Pour consulter un exemple de profil Novell AppArmor, reportez-vous à l'Exemple 5.1, « Exemple de hat phpsysinfo-dev » (↑Guide d'administration de Novell AppArmor 2.0).