Apache in chroot jail su debian wheezy 1

Questa tecnica ci permette di aumentare la sicurezza del nostro web server facendo in modo che possa accedere solamente ad un ambiente limitato.

Usando una chroot jail creiamo quindi una sorta di ambiente a tenuta stagna in cui il nostro software (in questo caso apache) può vedere solamente file e cartelle contenuti all’interno di questo ambiente. Capite quindi che in caso di intrusione, ad esempio a causa di una falla di sicurezza, il nostro aggressore non sarà in grado di uscire dalla chroot e non potrà quindi danneggiare l’intero sistema.

Ma ora vediamo come realizzare una chroot jail su debian wheezy.

Prerequisito ovvio e fondamentale è avere installato apache :) se non lo avete ancora fatto potete sempre fare riferimento alla mia guida per installare un server lamp e ovviamente il presupposto fondamentale è che i file dei vostri siti si trovino all’interno della cartella /var/www.

Innanzitutto dobbiamo installare il modulo di apache che ci permette di effettuare il chrooting, quindi apriamo un terminale, logghiamoci come utente root e diamo

apt-get install libapache2-mod-chroot

A questo punto dobbiamo dire ad apache di utilizzare questo modulo. Facciamolo con i comandi

a2enmod mod_chroot
service apache2 restart

Come directory per il chroot useremo /var/www, quindi dobbiamo creare e assegnare i permessi corretti a tutte le cartelle necessarie al funzionamento del webserver. Ancora da terminale diamo

mkdir -p /var/www/var/run
chown -R root:root /var/www/var/run

Ora diciamo ad apache qual è la cartella del chroot. Per farlo apriamo il file di configurazione /etc/apache2/apache2.conf (potete usare l’editor di testo che preferite). Trovate la riga

PidFile ${APACHE_PID_FILE}

e subito sotto aggiungete

ChrootDir /var/www

Per completare l’opera dobbiamo creare un symbolic link per la document root dato che ora non può più essere /var/www dato che apache, essendo in chroot, /var/www la vede come fosse /. Quindi

mkdir -p /var/www/var
cd /var/www/var
ln -s ../../ www

Ultima cosa per completare l’opera, è quella di creare un symbolic link anche per il file pid che si troverà nella chroot.

/etc/init.d/apache2 stop
ln -s /var/www/var/run/apache2.pid /var/run/apache2.pid
/etc/init.d/apache2 start

Bene! Ora apache è in una chroot jail ;)

Accedendo ai siti internet presenti sulla vostra macchina dovresti riuscire a vederli normalmente.

L’unico accorgimento è quello da utilizzare in caso i vostri siti si colleghi ad un database mysql installato sulla stessa macchina. L’host che dovrete usare non è più localhost (in quanto mysql non è all’interno del chroot che vede apache) ma dovrete usare l’ip 127.0.0.1

Detto questo, buon divertimento :)

One comment on “Apache in chroot jail su debian wheezy

  1. Reply Rui Ribeiro May 8, 2013 03:44

    Have you notice it doesn’t work in Wheezy anymore?

Leave a Reply