5.2. Configuration d'Apache pour mod-apparmor

Apache est configuré en plaçant des directives en texte brut dans les fichiers de configuration. Le fichier de configuration principal est généralement httpd.conf. Lorsque vous compilez Apache, vous pouvez indiquer l'emplacement de ce fichier. Les directives peuvent être placées dans n'importe lequel de ces fichiers de configuration pour contrôler le comportement d'Apache. Lorsque vous modifiez les fichiers de configuration principaux, vous devez démarrer ou redémarrer Apache pour que ces modifications soient prises en compte.

5.2.1. Directives de l'hôte virtuel

Les directives de l'hôte virtuel contrôlent si des requêtes contenant des informations de nom de chemin finales, suivant un nom de fichier réel ou un fichier non existant dans un répertoire existant, sont acceptées ou rejetées. Pour obtenir la documentation d'Apache sur les directives de l'hôte virtuel, reportez-vous à http://httpd.apache.org/docs-2.0/mod/core.html#virtualhost.

Le mot-clé spécifique de configuration change_hat est ImmDefaultHatName. Il s'utilise comme ImmHatName, par exemple ImmDefaultHatName My_Funky_Default_Hat.

L'option de configuration est en fait basée sur une directive du serveur, qui permet d'utiliser le mot-clé en dehors des autres options, le définissant ainsi pour le serveur par défaut. Les hôtes virtuels sont considérés de façon interne au sein d'Apache comme des « serveurs » distincts, de sorte que vous pouvez définir un nom de hat par défaut pour le serveur par défaut, et un autre pour chaque hôte virtuel si vous le souhaitez.

Lorsqu'une requête se présente, les étapes suivantes reflètent la séquence selon laquelle mod-apparmor tente d'appliquer les hats.

  1. Un emplacement ou un hat de répertoire spécifié par le mot-clé ImmHatName.

  2. Un hat nommé par le chemin complet de l'URI.

  3. Un hat de serveur spécifié par le mot-clé ImmDefaultHatName.

  4. DEFAULT_URI (en leur absence, retour au hat Apache « parent »).

5.2.2. Directives d'emplacement et de répertoire

Les directives d'emplacement et de répertoire spécifient les noms de hat dans le fichier de configuration du programme afin que le programme appelle le hat pour sa sécurité. Pour Apache, une documentation est à votre disposition concernant les directives d'emplacement et de répertoire à l'adresse http://httpd.apache.org/docs-2.0/sections.html.

L'exemple suivant de directive d'emplacement spécifie que, pour un emplacement donné, mod-apparmor doit utiliser un hat spécifique :

<Location /foo/>
      ImmHatName MY_HAT_NAME
</Location>

Cela tente d'utiliser MY_HAT_NAME pour tout URI commençant par /foo/ (/foo/, /foo/bar, /foo/cgi/path/blah_blah/blah, etc.).

La directive de répertoire fonctionne de façon similaire à la directive d'emplacement, si ce n'est qu'elle fait référence à un nom de chemin dans le système de fichier. Dans l'exemple suivant :

<Directory "/srv/www/www.immunix.com/docs"> # Note lack of trailing slash
      ImmHatName immunix.com
</Directory>

Exemple :  le programme phpsysinfo est utilisé pour illustrer une directive d'emplacement dans l'exemple suivant. La tarball peut être téléchargée à l'adresse http://phpsysinfo.sourceforge.com.

  1. Après avoir téléchargé la tarball, installez-la dans /srv/www/htdocs/sysinfo/.

  2. Créez /etc/apache2/conf.d/sysinfo.conf et ajoutez-y le texte suivant :

    <Location "/sysinfo">
              ImmHatName sysinfo
    </Location>

    Le hat suivant doit fonctionner pour phpsyinfo :

       ^sysinfo {
      #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,
      }
    
  3. Rechargez les profils Novell AppArmor en saisissant rcapparmor restart dans une fenêtre de terminal en tant que root.

  4. Redémarrez Apache en saisissant rcapache2 restart dans une fenêtre de terminal en tant que root.

  5. Entrez http://hostname/sysinfo/ dans un navigateur pour recevoir les informations du système fournies par phpsysinfo.

  6. Recherchez les erreurs de configuration dans /var/log/syslog ou en exécutant dmesg et en recherchant les éventuels rejets dans le résultat.