Chrootage de apache

Dans le cas ou apache est installé par package, on va utiliser makejail pour créer l'arborescence chrootée /data/chrootapache

Makejail est performant dans le sens où tous les binaires qu'il copie qui sont nécéssaire au fonctinoneemnt de notre appli dans l'environnement chrooté, il fait un ldd dessus pour savoir exactment toutes les lib dont il a besoins et qu'il doit donc copié avec le binaire.

Pour commencer : voici une très bonne doc pour faire un chrootage de apache avec makejail :
http://worldserver3.oleane.com/bouynot/gabuzomeu/alex/doc/apache/index.html

cf le fichier /etc/makejail/apache.py pour la definition locale de ce que makejail doit faire.

Commencer par spécifier un shell au script /usr/lib/apache2/modules/httpd.exp (à enlever ensuite) sinon le makejail fera une erreur

Après avoir fait la commande :

# makejail /etc/makejail/apache.py

Astuces en complément de la doc

Vérifier les lib du binaire bash :

Il faut qu'elles soient présentes dans le chrootage de apache.

# ldd /bin/bash

Créer dans le répertoire /data/chrootapache/dev :

# mknod null c 1 3
# mknod random c 1 8
# mknod urandom c 1 9
# mknod zero c 1 5

Sinon apache fera une erreur du style : apr_proc_detach failed
- copier en epurant les /etc/passwd, /etc/group
- copier le /etc/nsswitch.conf avec les lib libnss*

Changement complet du fichier de démarrage

Pour utilisation du starter “start-stop-deamon) qui contient une option –-chroot dir très pratique
Remplissage du /etc/default/apache2

Modifier correctement le logrotate de apache :
Les logs courant sont dans le repertoire chrooté mais à la rotation, ils sont mis dans le répertoire habituel hors chrootage ! (directive mv et/ou olddir suivant comment est défini le log)

Et ca marche
Vérifier tout de meme le error.log de apache pour voir si il manque pas une lib.

Vérification

Pour vérifier que apache est bien chrooté, tapez :

# ps –edf | grep apache2

Prenez un numéro de processus fils

root     13707     1  0 15:21 ?        00:00:00 /usr/sbin/apache2
httpadm  13708 13707  0 15:21 ?        00:00:00 /usr/sbin/apache2
httpadm  13709 13707  0 15:21 ?        00:00:00 /usr/sbin/apache2
httpadm  13711 13707  0 15:21 ?        00:00:00 /usr/sbin/apache2

Tapez ensuite la commande :

# ls –al /proc/13708/root

Cette commande doit vous retourner l'environnement limité chrooté : /data/chrootapache.

 
tutoriels/gnu_linux/applications/apache_chrootage.txt · Dernière modification: 2008/08/19 15:43 (édition externe)     Haut de page