Enjaular usuarios en Linux

Iniciado por ANTRAX, Marzo 01, 2014, 02:37:02 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.


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:

Código: bash
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
rpm -Uhv rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
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.

Código: bash
jk_init -v -j /var/www/jaula jk_lsh sftp
jk_cp -v -f /var/www/jaula /bin/bash


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

Código: bash
ls -l /var/www/jaula/


devolverá:

Código: bash
drwxr-xr-x 2 root root 4096 jul 5 16:52 bin
drwxr-xr-x 2 root root 4096 jul 5 16:49 dev
drwxr-xr-x 3 root root 4096 jul 5 16:52 etc
drwxr-xr-x 2 root root 4096 jul 5 16:49 lib
drwxr-xr-x 2 root root 4096 jul 5 16:52 lib64 (depende el Sistema Operativo a veces no existe esta carpeta)
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

Código: bash
cat /etc/passwd ; grep usdjaula
usdjaula: x:501:501::/home/usdjaula:/bin/bash
cat /etc/passwd ; grep usdjaula >> /var/www/jaula/etc/passwd


Ahora enjaulamos el usuario.

Código: bash
jk_jailuser -m -j /var/www/jaula usdjaula
cat /etc/passwd ; grep usdjaula
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!

Código: bash
vi /var/www/jaula/etc/jailkit/jk_lsh.ini
[ usdjaula]
paths= /usr/bin, /usr/lib/
executables= /usr/bin/scp, /usr/libexec/openssh/sftp-server


Copiamos los archivos que faltan.

Código: bash
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.