Voici mon step by step:
On arrête Apache2:
Maintenant on crée les répertoires dans le chroot Apache2 qui sera /chroot/apache2/:
mkdir –p /chroot/apache2/dev &&
mkdir /chroot/apache2/etc &&
mkdir –p /chroot/apache2/lib/i686/cmov &&
mkdir –p /chroot/apache2/usr/lib &&
mkdir /chroot/apache2/usr/sbin &&
mkdir –p /chroot/apache2/var/log &&
mkdir /chroot/apache2/bin
On crée /dev/null et /dev/urandom:
mknod –m 666 /chroot/apache2/dev/null c 1 3 &&
mknod –m 644 /chroot/apache2/dev/urandom c 1 9
On copie les bibliothèques d’apache2 obtenues grâce à strace et ldd (libgcc est donné par lsof):
cp /usr/lib/libpcre* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libapr* /chroot/apache2/usr/lib/ &&
cp /lib/i686/cmov/libpthread* /chroot/apache2/lib/i686/cmov/ &&
cp /lib/i686/cmov/libc* /chroot/apache2/lib/i686/cmov/ &&
cp /usr/lib/libldap* /chroot/apache2/usr/lib/ &&
cp /usr/lib/liblber* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libdb* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libpq* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libmysqlclient* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libsqlite* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libexpat* /chroot/apache2/usr/lib/ &&
cp /lib/libuuid* /chroot/apache2/lib/ &&
cp /lib/i686/cmov/librt* /chroot/apache2/lib/i686/cmov/ &&
cp /lib/i686/cmov/libcrypt* /chroot/apache2/lib/i686/cmov/ &&
cp /lib/i686/cmov/libdl* /chroot/apache2/lib/i686/cmov/ &&
cp /lib/ld-linux* /chroot/apache2/lib/ &&
cp /lib/i686/cmov/libresolv* /chroot/apache2/lib/i686/cmov/ &&
cp /usr/lib/libsasl* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libgnutls* /chroot/apache2/usr/lib/ &&
cp /usr/lib/i686/cmov/libssl* /chroot/apache2/usr/lib/i686/cmov/ &&
cp /usr/lib/i686/cmov/libcrypto* /chroot/apache2/usr/lib/i686/cmov/ &&
cp /usr/lib/libkrb* /chroot/apache2/usr/lib/ &&
cp /lib/libcom_err* /chroot/apache2/lib/ &&
cp /usr/lib/libgssapi_krb* /chroot/apache2/usr/lib/ &&
cp /lib/i686/cmov/libnsl* /chroot/apache2/lib/i686/cmov/ &&
cp /lib/i686/cmov/libm* /chroot/apache2/lib/i686/cmov/ &&
cp /usr/lib/libz* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libtasn* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libgpg-error* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libgcrypt* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libk5crypto* /chroot/apache2/usr/lib/ &&
cp /usr/lib/libkrb5support* /chroot/apache2/usr/lib/ &&
cp /lib/libkeyutils* /chroot/apache2/lib/ &&
cp /lib/libgcc_s* /chroot/apache2/lib/
On copie les bibliothèques de sh demandé par apache2ctl:
On copie les bibliothèques d’install demandé par apache2ctl:
cp /lib/libselinux* /chroot/apache2/lib/ &&
cp /lib/libacl* /chroot/apache2/lib/ &&
cp /lib/libattr* /chroot/apache2/lib/
Les bibliothèques pour rm et mkdir sont du coup déjà copiées.
On copie les bibliothèques réseaux:
cp /lib/libnss_compat* /chroot/apache2/lib/ &&
cp /lib/libnss_dns* /chroot/apache2/lib/ &&
cp /lib/libnss_files* /chroot/apache2/lib/ &&
cp /lib/libnss_nis* /chroot/apache2/lib/ &&
cp /lib/libnsl* /chroot/apache2/lib/
On copie les modules d’Apache2:
On copie les fichiers de configuration d’Apache2:
On copie le répertoire des sites web:
On copie les binaires (apache2, apache2ctl, sh, mkdir, rm et install):
cp /usr/sbin/apache2* /chroot/apache2/usr/sbin/ &&
cp –t /chroot/apache2/bin/ /bin/mkdir /bin/rm /bin/sh /usr/bin/install
On copie le mod_ssl:
On copie les fichiers réseaux:
cat /etc/passwd | grep www-data > /chroot/apache2/etc/passwd &&
cat /etc/group | grep www-data > /chroot/apache2/etc/group &&
cp /etc/hosts /chroot/apache2/etc/ &&
cp /etc/host.conf /chroot/apache2/etc/ &&
cp /etc/resolv.conf /chroot/apache2/etc/ &&
cp /etc/nsswitch.conf /chroot/apache2/etc/
On rajoute le bit pour les rendre immuable:
chattr +i /chroot/apache2/etc/passwd &&
chattr +i /chroot/apache2/etc/group &&
chattr +i /chroot/apache2/etc/hosts &&
chattr +i /chroot/apache2/etc/host.conf &&
chattr +i /chroot/apache2/etc/resolv.conf &&
chattr +i /chroot/apache2/etc/nsswitch.conf
On copie le timezone pour avoir la bonne heure dans nos journaux:
On copie le répertoire de log avec les mêmes droits:
On modifie le lancement d’Apache2 pour le chroot:
[code]vim /etc/init.d/apache2
APACHE2CTL="$ENV /usr/sbin/chroot /chroot/apache2/ /usr/sbin/apache2ctl"[/code]
On lance Apache2 en chroot:
Et après nous avons un gros failed…
Toutes les commandes avant la modification du script de démarrage fonctionnent et devraient être bonnes.
Je sèche à cause d’apache2ctl qui est appelé par apache2 et inversement si j’appelle apache2ctl, j’appelle apache2 donc du coup je ne sais pas comment faire pour mon chroot.
De plus ce n’est pas vraiment sécurisé de mettre rm, mkdir et sh dans un chroot.
Comment faire?