Un administrador de sistemas que conozco me recomendó que ejecutara Apache en una cárcel chroot para aumentar la seguridad.
Tengo las siguientes preguntas:
- ¿Es esto aconsejable (es decir, hay algún problema que debo tener en cuenta)?
- ¿La ejecución de Apache en una cárcel chroot afecta sus problemas de capacidad, como el rendimiento y la escalabilidad?
También me recomendó que ejecutara mis bases de datos (mySQL y PostgreSQL) en cárceles chroot separadas.
¿Es esto algo que se hace a menudo en los sistemas de producción?
[Editar]
Olvidé decir que el servidor se ejecuta en Ubuntu 8.04 LTS
Respuesta1
El chrooting es una buena medida de seguridad, limita las posibilidades de comprometer el sistema en caso de un exploit exitoso, pero en algunos casos también hay formas de evadir un chroot, por lo que no es una forma definitiva de proteger el sistema.
No conozco ninguna desventaja con respecto al rendimiento y la escalabilidad. Con respecto al acceso a la base de datos, generalmente se realiza con un enlace al socket dentro del chroot, de esta manera no es necesario abrir ningún puerto de red para la conectividad de la base de datos.
EDITAR: a continuación se muestra un ejemplo de acceso a MySQL tomado de OpenBSD rc.local (OpenBSD chrooted httpd)
if [ X"${mysql_server_flags-NO}" != X"NO" -a -x /usr/local/bin/mysqld_safe ]; then
rm -R /var/www/var/run/mysql
mkdir -p /var/www/var/run/mysql
chown _mysql:_mysql /var/www/var/run/mysql
echo -n 'MySQL server: '; /usr/local/bin/mysqld_safe --user=_mysql ${mysql_server_flags} &
sleep 10
ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock
fi
Espero que esto ayude.
Respuesta2
Tengo dos programas, uno de ellos es Apache httpd, que se comunican entre sí a través de un socket de dominio Unix. Los cambié para que se ejecutaran bajo chroot y luego una pérdida de rendimiento del 10%. Depende de las aplicaciones en ejecución, creo. No escuché ninguna pérdida de rendimiento para Apache en chroot antes, por lo que parece que mi segunda aplicación perdió rendimiento en chroot.