Gentoo Logo

[ << ] [ < ] [ 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 solo 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 solo 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 tendrá 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).

La siguiente orden 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 intérprete 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 símbolo de espera de órdenes 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 solo funciona echo. Esto ocurre porque no tenemos otras órdenes dentro del entorno chroot que no sean bash y echo que es una funcionalidad incorporada.

Esta es básicamente la manera en la que 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áctica la orden 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, solo 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 ] [ > ] [ >> ]


Imprimir

Ver completo

Página actualizada 2 de abril, 2010

Sumario: Aisle los servidores.

Kim Nielsen
Autor

John P. Davis
Editor

Eric R. Stockbridge
Editor

Carl Anderson
Editor

Jorge Paulo
Editor

Sven Vermeulen
Editor

Benny Chuang
Editor

Sune Jeppesen
Editor

Tiemo Kieft
Editor

Zack Gilburd
Editor

Dan Margolis
Editor

Joshua Saddler
Editor

John Christian Stoddart
Traductor

José Luis Rivero
Traductor

Postel
Traductor

Carles Ferrer Peris
Traductor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.