Restringiendo CHROOT

1

Visto 4294 veces | Publicado el 28/09/2011 | educativo


CHROOT es una forma de crear lo que se denomina jaula en sistemas operativos Unix y Linux. Su principal función es la de aislar un determinado servicio y evitar que cualquier problema de seguridad en ese servicio pueda afectar al resto del sistema operativo u a otros servicios que estén ejecutándose en el mismo servidor. Mediante CHROOT se cambia el directorio raíz del sistema y se crea un entorno virtual (jaula) a partir de la nueva raíz del sistema, impidiendo al servicio enjaulado invocar algún otro proceso o acceder a otros sistemas que estén por encima del fichero raíz definido.

SCP o Secure Copy, es un protocolo para transferencia de ficheros entre sistemas remotos de forma segura a través del protocolo Secure Shell (SSH). Los ficheros se cifran durante la transferencia para evitar accesos a la información no autorizados o impedir potenciales capturas de tráfico.

Para facilitar la tarea de configuración e instalación de la jaula CHROOT, se va a utilizar el programa Jailkit (http://olivier.sessink.nl/jailkit/) que no es más que una serie de herramientas escritas en lenguaje python que permiten de forma sencilla instalar y configurar todo lo necesario.

# wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz
La instalación es común a cualquier herramienta en Linux, en este caso:

se descomprime: # tar -zxvf jailkit-2.14.tar.gz
se instala # ./configure
# make
# make install

Una vez instalado Jailkit para configurarlo es necesario situarse en el directorio a partir del cual se quiere crear la jaula Chroot, por ejemplo:

# mkdir -p /chroot/jail

Se copia todo lo necesario para que funcione el servicio SSH y el propio intérprete de comandos, en ese caso “Bash Shell”, al directorio que se ha configurado anteriormente como raíz de Chroot:

# jk_cp -v -f /chroot/jail /bin/bash

Se crea un usuario que será el que se utilice con Chroot y se copia al fichero de usuarios (/etc/passwd) dentro del Chroot:

# useradd user (se crea el usuario user en el sistema Linux)
# passwd user (se define la contraseña a utilizar para el usuario recién creado)
# grep user /etc/passwd >> /chroot/jail/etc/passwd (se copia la entrada en el /etc/passwd del sistema del usuario con el nombre user al /etc/passwd de la jaula chroot)
# mkdir -p home/user (se crea el directorio home si no existe para el usuario antes creado user)

Se copia la shell restringida a la ruta del chroot:

# jk_init -v /chroot/jail jk_lsh

Se aísla o enjaula al usuario creado con el siguiente comando del Jailkit:

# jk_jailuser -m -j /chroot/jail user (con la opción –m se mueve el directorio /home del usuario al directorio enjaulado, es decir, /chroot/jail/home/user)

Por último, se copian algunos comandos que serán importantes dentro de la jaula Chroot para que funcione correctamente tales como:

# jk_cp -v -f /chroot/jail /bin/ls /usr/bin/groups /bin/sh /usr/bin/id

Con los pasos configurados hasta ahora, Chroot ya estaría funcionando y sería operativo para permitir el protocolo SSH pero únicamente se desea permitir el protocolo SCP así que aún es preciso modificar la configuración para no admitir ningún otro protocolo o servicio no autorizado.

Nota: si el servicio SSH no está arrancado en el servidor Linux es necesario iniciarlo con el siguiente comando:

# /etc/init.d/sshd start

Para configurar RSSH limitándolo únicamente al protocolo SCP se ha de descargar el paquete y configurarlo de la siguiente forma:

# yum install rssh(descarga e instalación para sistemas Linux con la distribución Fedora)
# apt-get install rssh (para sistemas Linux basados en Debian, Ubuntu, etc.)

Para Fedora se crea, de forma automática, un grupo llamado rsshusers y el binario /usr/bin/rssh tiene unos permisos específicos junto con el archivo /usr/lib/rssh/rssh_chroot_helper.

Para Ubuntu la configuración es manual:

# groupadd rsshuser (se crea un grupo nuevo)
# chown root:rsshuser /usr/bin/rssh (se especifica que el binario rssh y el archivo rssh_chroot_helper pertenezcan al grupo antes creado)
# chown root:rsshuser /usr/lib/rssh/rssh_chroot_helper

Se cambian los permisos de dichos ficheros para evitar que cualquier otro usuario que no pertenezca al grupo creado (rsshuser) pueda ejecutar rssh:

# chmod 550 /usr/bin/rssh
# chmod 550 /usr/lib/rssh/rssh_chroot_helper

También es necesario modificar el intérprete de comandos que utiliza el usuario creado “user” por el de rssh. Se edita el /etc/passwd del servidor y se cambia la ruta (path) del bash por rssh, antes de proceder al cambio debe poner “/usr/sbin/jk_chrootsh”:

# user:x:???:???::/chroot/jail/./home/user:/usr/bin/rssh (los interrogantes indican que lo que aparezca por defecto no debe modificarse)

Por último, se edita el fichero /etc/group del sistema y se añade el usuario creado para Chroot (user) al grupo rssh de la siguiente forma:

# rsshuser:x:1003:user

Para permitir únicamente el protocolo SCP se ha de modificar la configuración del SSH editando el fichero de configuración (/etc/rssh.conf) y añadiendo y/o modificando los siguientes parámetros:

allowscp (todos los demás servicios y protocolos que pueden funcionar bajo SSH se comentan con el carácter # y así no se permite su uso por parte de ningún usuario)
#allowsftp
#allowcvs
#allowrdist
#allowrsync
#allowsvnserve

La siguiente linea indica donde la ruta donde se ha configurado e instalado Chroot, en este caso:

chrootpath = /chroot/jail/

Se reinicia el servicio SSH para que adquiera la nueva configuración y ya se dispone de una jaula Chroot que sólo permite el uso del protocolo SCP.

# /etc/init.d/sshd restart

Al acceder con un cliente SSH al sistema se obtiene el mensaje de error siguiente que indica que únicamente está permitido el uso del protocolo SCP.

Last login: Fri Sep 23 13:04:47 2011 from hacktimes.com

This account is restricted by rssh.
Allowed commands: scp

If you believe this is in error, please contact your system administrator.

Connection to hacktimes.com closed.

Es importante recordar que no hay que utilizar con Chroot un usuario con privilegios o permisos similares a root ya que, en caso de que se pudiera explotar alguna vulnerabilidad de, en este caso, SSH, es posible no quedar atrapado en la jaula y conseguir acceso completo al resto del sistema y como root. Además, todas las recomendaciones para securizar un entorno Linux o Unix también se aplican a Chroot como, por ejemplo, no configurar las herramientas para compilar fuentes, gcc y similares, ya que pueden permitir la instalación de programas maliciosos o no incluir interpretes de lenguajes como Perl o Python, etc.

Para ampliar la información sobre Chroot, su instalación y configuración, son imprescindibles las siguientes páginas:

http://www.unixwiz.net/techtips/chroot-practices.html como su nombre indica, se trata de una serie de buenas prácticas necesarias a la hora de trabajar con Chroot.

http://wiki.debian.org/Debootstrap paquete Debootstrap, alternativa al Jailkit utilizado en este artículo para sistemas Debian.


septiembre 29 12:31 p.m.
suzdal dijo:

Muy bueno, directo a mis favoritos.


Añadir comentario











Búsqueda

Síguenos


El staff de Hacktimes ruega a cualquier persona interesada en la distribución y/o publicación de estos artículos que lo haga sin alterar su contenido y cite a su autor y/o la fuente original. Muchas gracias.

Todos los artículos publicados se encuentran bajo la licencia Creative Commons