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.gzLa instalación es común a cualquier herramienta en Linux, en este caso:
se descomprime:
# tar -zxvf jailkit-2.14.tar.gzse instala
# ./configure
# make
# make installUna 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/jailSe 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/bashSe 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_helperTambié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:userPara 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
#allowsvnserveLa 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.


Comentarios
Muy bueno, directo a mis favoritos.
Añadir comentario