viernes, 10 de enero de 2014

Enjaular usuarios en Linux

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:
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.
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:

ls -l /var/www/jaula/

devolverá:

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

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.
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!
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.
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.

0 comentarios:

Publicar un comentario