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.