[ << ]
[ < ]
[ Inicio ]
[ > ]
[ >> ]
11. Chroot o servidores virtuales
Contenido:
11.a. Chrooting
Hacer chroot (enjaular) a un servicio es la manera de limitar el entorno de un servicio (o usuario) para que acceda sólo a lo que debería y para que no escale acceso (o consiga información) que le permita un acceso de
root. Ejecutando el servicio como un usuario distinto de root (nobody, apache, named) un atacante sólo podrá acceder a los ficheros con permisos para dicho usuario. Lo que significa que un atacante no conseguirá el acceso de root incluso si los servicios tuvieran algún defecto de seguridad.
Algunos servicios como pure-ftpd y bind tienen
características para hacer chroot, pero otros no. Si el servicio lo
soporta, úselo, si no usted tiene que saber como crearse el suyo
propio. Veamos como crear un chroot. Para una comprensión elemental de
como trabaja un chroot, vamos a probarlo con bash (la manera
fácil de aprenderlo)
Cree el directorio /chroot con mkdir /chroot. Y
averigüe con qué librerías dinámicas está compilado bash (este
paso no es necesario si está compilado con -static).
El siguiente comando creará una lista con las librerías usadas por
bash.
Listado de Código 1.1: Obtener la lista de librerías usadas |
# ldd /bin/bash
libncurses.so.5 => /lib/libncurses.so.5 (0x4001b000)
libdl.so.2 => /lib/libdl.so.2 (0x40060000)
libc.so.6 => /lib/libc.so.6 (0x40063000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
|
Ahora creemos el entorno para bash.
Listado de Código 1.2: Crear el entorno chroot para bash |
# mkdir /chroot/bash
# mkdir /chroot/bash/bin
# mkdir /chroot/bash/lib
|
Luego copie los ficheros usados por bash (/lib) al
directorio lib del chroot y copie también el comando bash
al directorio bin del chroot. Esto creará exactamente el
mismo entorno, pero con menos funcionalidad. Después de copiarlo
pruébelo:chroot /chroot/bash /bin/bash. Si obtiene un prompt
indicado / ¡funciona! En caso contrario le informará
adecuadamente de qué fichero falta. Algunas librerías compartidas
dependen unas de otras.
Se dará cuenta que dentro del chroot sólo funciona echo. Esto
ocurre porque no tenemos otros comandos dentro del entorno chroot que
no sean bash y echo que es una funcionalidad incorporada.
Esta es básicamente la manera en la que usted podría crear un servicio
ejecutado con chroot. La única diferencia es que los servicios a veces
depende de servicios y ficheros de configuración en
/etc. Simplemente cópielos (los dispositivos pueden
copiarse con cp -a) en el entorno de chroot, edite el guión de
inicio init para que use chroot antes de ejecutarlo. Puede resultar
difícil encontrar qué dispositivos y ficheros de configuración
necesita un servicio. Para esto es práctico el comando
strace. Inicie el servicio en bash con /usr/bin/strace y
busque los open, read, stat y puede que connect. Lo que le dará una
pista de qué ficheros copiar. Pero en muchos casos basta copiar el
fichero de contraseñas (passwd) (edite la copia y borre los usuarios
que no tienen nada que ver con el servicio), /dev/zero,
/dev/log y /dev/random.
11.b. User Mode Linux
Otra forma de crear un entorno más seguro es ejecutar una máquina
virtual. Una máquina virtual, como su nombre implica, es un proceso
que se ejecuta en el nivel más alto de su sistema operativo real,
proporcionando un entorno de hardware y sistema operativo que parece
ser el propio de una única máquina. Su beneficio de seguridad está en
que si es comprometido el servidor ejecutado en la máquina virtual,
sólo se ve afectado este servidor virtual no la instalación padre.
Para más información acerca de como instalar User Mode Linux consulte User Mode Linux Guide.
[ << ]
[ < ]
[ Inicio ]
[ > ]
[ >> ]
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|