Chroot Apache2

Bonjour à tous,

Je fais un chroot manuel d’Apache2.

J’ai utilisé ldd pour récupérer les bibliothèques partagées, mais ce n’est pas tout ce qu’il faut.

Du coup je fais appel à la commande:

Mais j’ai ça après la commande :

Mon fichier /straceapache2 ne détient donc pas tous les appels.

Comment faire pour y remédier?

Oulah j’ai posé une tuile à tout le monde on dirait :laughing:

Si tu pouvais mettre ici step by step ce que tu as fait pour l’emprisonner avec chroot ca m’arrangerais, mci d’avance.

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?