Configurare Apache in un ambiente Chroot: differenze tra le versioni

da adottare
(Nuova pagina: __TOC__ == Introduzione == ''Chroot'', contrazione di ''change root'', è un metodo di sicurezza usato per isolare i limiti operativi di una applicazione. Il nome deriva dal termine i...)
 
(da adottare)
 
(8 versioni intermedie di 4 utenti non mostrate)
Riga 1: Riga 1:
{{Guida da adottare}}{{Versioni compatibili|Sarge|Etch|Lenny|Squeeze}}
__TOC__
__TOC__


Riga 6: Riga 7:
Normalmente se un cracker riesce a prendere il controllo di una applicazione, avrà tutti i privilegi associati all'applicazione e potrebbe essere in grado di compromettere la sicurezza dell'intero sistema, ad esempio installando un rootkit. Al contrario se il programma compromesso si trova in un ''chroot'', il malintenzionato non potrà uscire dal perimetro; potrà cambiare il contenuto di file del programma stesso, ma senza poter accedere ad altre risorse.<br/>
Normalmente se un cracker riesce a prendere il controllo di una applicazione, avrà tutti i privilegi associati all'applicazione e potrebbe essere in grado di compromettere la sicurezza dell'intero sistema, ad esempio installando un rootkit. Al contrario se il programma compromesso si trova in un ''chroot'', il malintenzionato non potrà uscire dal perimetro; potrà cambiare il contenuto di file del programma stesso, ma senza poter accedere ad altre risorse.<br/>
(''Fonte: [http://it.wikipedia.org/wiki/Chroot Wikipedia]'')
(''Fonte: [http://it.wikipedia.org/wiki/Chroot Wikipedia]'')
== Installazione ==
In questa breve guida vediamo come configurare Apache2 in un ambiente chroot utilizzando il modulo ''mod_chroot'' di Debian.<br/>
Come prerequisito è necessario che sul sistema sia già installato e funzionante un server web Apache2, con ''DocumentRoot'' impostata nella directory <code>/var/www</code>. Per l'installazione di Apache si veda ad esempio la guida: [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]].<br/><br/>
=== Installazione di mod_chroot ===
La prima operazione consiste nell’installare il modulo ''mod_chroot'':
<pre>
# aptitude install libapache2-mod-chroot
</pre>
A questo punto è possibile abilitare ''mod_chroot'' e riavviare Apache:
<pre>
# a2enmod mod_chroot
# /etc/init.d/apache2 restart
</pre>
=== Configurazione di Apache ===
Come detto, la directory utilizzata per l’ambiente chroot sarà <code>/var/www</code>.<br/>
Apache2 di Debian utilizza il file <code>/var/run/apache2.pid</code> come file PID; il PID (acronimo di Process Identifier) è un numero che viene assegnato ad ogni processo alla sua nascita, che lo accompagna durante tutta la sua esistenza e che lo identifica univocamente nel sistema.
<br/>
Dopo aver eseguito il ''chroot'' di Apache il file PID sarà creato in <code>/var/www/var/run/apache2.pid</code> e quindi è necessario creare questa directory:
<pre>
# mkdir -p /var/www/var/run
# chown -R root:root /var/www/var/run
</pre>
A questo punto è possibile istruire Apache per utilizzare la directory <code>/var/www/</code> come gabbia ''chroot'', aggiungendo la riga <code>ChrootDir</code> nel file di configurazione <code>/etc/apache2/apache2.conf</code>:
<pre>
# nano /etc/apache2/apache2.conf
</pre>
ad esempio in questo punto:
<pre>
#
# PidFile: The file in which the server should record its process
# identification number when it starts.
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}
ChrootDir /var/www
</pre>
=== Configurazione dei Virtual Host ===
A questo punto dobbiamo informare tutti i virtual host di Apache che la <code>DocumentRoot</code> è cambiata.
<br/>
Occorre perciò aprire tutti i file di configurazione dei nostri virtual hosts presenti nella directory <code>/etc/apache2/sites-available</code>, modificando la direttiva <code>DocumentRoot</code> e sostituendo il path <code>/var/www</code> con <code>/</code>.
<br/>
Ad esempio un virtual host con <code>DocumentRoot</code> pari a:
<pre>
DocumentRoot /var/www/sito1/www
</pre>
andrà modificato in:
<pre>
DocumentRoot /sito1/www
</pre>
Un metodo alternativo, suggerito in diversi howto, è quello di creare un symbolic link per la DocumentRoot, visto che <code>/var/www</code> corrisponde a <code>/</code> nell’ambiente ''chroot'':
<pre>
# mkdir -p /var/www/var
# cd /var/www/var
# ln -s ../../ www
</pre>
In diversi testi sulla sicurezza è '''sconsigliato''' utilizzare dei symlink che entrino o escano da una gabbia chroot; per questo motivo consiglio caldamente il primo metodo e invito a modificare a mano le direttive <code>DocumentRoot</code> dei vari virtual host.
=== Conclusione ===
Una volta fatto tutto questo, è possibile fermare Apache, creare un symbolic link in <code>/var/run/apache2.pid</code> per <code>/var/www/var/run/apache2.pid</code> e riavviare il server web:
<pre>
# /etc/init.d/apache2 stop
# ln -s /var/www/var/run/apache2.pid /var/run/apache2.pid
# /etc/init.d/apache2 start
</pre>
Se tutto è andato per il verso giusto, collegandovi all'indirizzo IP del vostro server dovreste vedere i siti ospitati proprio come prima della costruzione della gabbia ''chroot''.
{{Autori
|Autore = [[Utente:Ferdybassi|Ferdybassi]] 00:45, 7 nov 2010 (CET)
}}
[[Categoria:Web server]]
3 581

contributi