Enjaular usuarios en Linux

Particularmente, lo que necesitaba era Enjaular usuarios para que pudieran hacer lo que quieran a partir de un lugar determinado del árbol de directorio para abajo.

El problema que plantea linux es que si bien, uno no otorga permisos estos usuarios pueden subir en el árbol del servidor y navegar por él con restricciones.

Enjaular un usuario es mucho mejor, más seguro y evitamos que el mismo pueda subir por arriba del árbol de directorios configurado.

Una forma de Enjaular usuarios CHROOT y permitirle usar SSH, SFTP y SCP en forma efectiva es usar JAULKIT.

Con JAULKIT podemos es construirle al usuario enjaulado un entorno de comandos básicos (ls, cp, find, etc.).

Primero descargamos de la web el script desde:

  1. wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
  2. rpm -Uhv rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
  3. yum install jailkit

Ahora definiremos la JAULA que en mi ejemplo será /var/www/jaula y luego copiaremos el Shell básico.

Atención: Si la carpeta existe, mejor renombrarla y dejar que JAULKIT cree para otorgarle permisos y grupos adecuados podemos agregarle otros servicios atras de jk_lsh como ssh sftp scp, nosotros agregamos solo sftp.

  1. jk_init -v -j /var/www/jaula jk_lsh sftp
  2. jk_cp -v -f /var/www/jaula /bin/bash

Listamos para ver como quedo organizado y nos da algo parecido a:

  1. ls -l /var/www/jaula/

devolverá:

  1. drwxr-xr-x 2 root root 4096 jul 5 16:52 bin
  2. drwxr-xr-x 2 root root 4096 jul 5 16:49 dev
  3. drwxr-xr-x 3 root root 4096 jul 5 16:52 etc
  4. drwxr-xr-x 2 root root 4096 jul 5 16:49 lib
  5. drwxr-xr-x 2 root root 4096 jul 5 16:52 lib64 (depende el Sistema Operativo a veces no existe esta carpeta)
  6. drwxr-xr-x 6 root root 4096 jul 5 16:49 usr

Añadimos el usuario usdjaula y le damos una clave:

useradd usdjaula

passwd usdjaula (nos pide clave y confirmación)

Ahora vemos si existe una línea similar a esta

  1. cat /etc/passwd ; grep usdjaula
  2. usdjaula: x:501:501::/home/usdjaula:/bin/bash
  3. cat /etc/passwd ; grep usdjaula >> /var/www/jaula/etc/passwd

Ahora enjaulamos el usuario.

  1. jk_jailuser -m -j /var/www/jaula usdjaula
  2. cat /etc/passwd ; grep usdjaula
  3. usdjaula: x:500:500::/var/www/jaula/./home/usdjaula:/usr/sbin/jk_chrootsh

Editamos el archivo jk_lsh.ini y le agregamos las líneas de abajo luego grabamos con [ ESC]:wq!

  1. vi /var/www/jaula/etc/jailkit/jk_lsh.ini
  2. [ usdjaula]
  3. paths= /usr/bin, /usr/lib/
  4. executables= /usr/bin/scp, /usr/libexec/openssh/sftp-server

Copiamos los archivos que faltan.

  1. jk_cp -v -f /var/www/jaula /bin/ls /usr/bin/groups /bin/sh /usr/bin/id

Solo resta crear la conexión FTP desde el cliente que prefieras y listo. El usuario ha quedado enjaulado.

Leave a Comment