miércoles, 17 de agosto de 2011

Creación de Usuarios FTP enjaulados – VSFTP


El servidor FTP (File Transfer Protocol) es el que nos da la facilidad de poder subir y bajar archivos de nuestro servidor remoto.
Esta vez me pidieron crear un usuario FTP para un sitio web que no contaba con interfase de administración y el trabajo con el servidor normalmente se realiza por medio de SSH( Secure Shell) la cual nos proporciona una consola de comandos para poder gestionar el servidor.
Pero agregándole complejidad, el requerimiento fue que ese nuevo usuario solo pueda interactuar con la carpeta a la cual se le asigne como puede ser /var/www/html/enjaular y no pueda ver absolutamente nada mas que lo que este dentro de esa carpeta por lo cual lo primero que se me ocurrió es “enjaular al usuario” para lo cual utilizaría chroot, mi método tenia lógica pero antes se necesitaba modificar algunas directivas, para lo cual este método se puede acercar a lo que se estaba buscan y quizás les sirva de ayuda.

Creando y enjaulando usuarios 


1. creamos el usuarios y le asignamos el directorio sin acceso a shell
root@neotrons:/# useradd promocion -d /var/www/html/enjaulado -s /sbin/nologin
root@neotrons:/# passwd enjaulado
Introduzca la nueva contraseña de UNIX: 
Vuelva a escribir la nueva contraseña de UNIX: 
passwd: contraseña actualizada correctamente
Verificando permisos: 
root@neotrons:/# chmod 755 /var/www/html/enjaulado

root@neotrons:/# vi /etc/vsftpd/vsftpd.conf 
En la ultima linea agregar:  
 
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
luego crear el archivo chroot_list   
root@neotrons:/# touch /etc/vsftpd/chroot_list
luego ir a /etc/passwd y copiar la linea donde se encuentra la configuración del usuario “enjaulado” lo cual al ser el ultimo usuario creado debe estar al final de la linea:
root@neotrons:/# vi /etc/passwd
enjaulado:x:501:501::/var/www/html/enjaulado:/bin/bash
luego copiarla en el archivo /etc/vsftpd/chroot_list
root@neotrons:/# vi /etc/vsftpd/chroot_list
enjaulado:x:501:501::/var/www/html/enjaulado:/bin/bash
guardar el archivo y reiniciar el servicio vsftpd
/etc/init.d/vsftpd restart
por tanto cuando ingresemos por nuestro cliente FTP “/var/www/html/enjaulado” tendrá o aparecera como nuestra Raiz “/”

3 comentarios:

  1. Muchas gracias. Esta es la guía más simple y efectiva que he visto para crear usuarios enjaulados. Como complemento, recomendaría crear la carpeta de usuario dentro de /home/"usuario" (para tener un orden) y luego configurar un VirtualServer en Apache apuntando hacia dicho recurso.

    Un saludo cordial
    Enrique

    ResponderEliminar
  2. que bueno que te aya servido solo para acotar tienes razón en lo del /home/user solo que el requerimiento exacto era que ese usuario pueda acceder a la carpeta /www/html/carpteta
    Saludos luego de tiempo que no entraba en miblog que bueno que te aya servido

    ResponderEliminar
  3. Buena información, recomiendo su blog.

    Un saludo.

    ResponderEliminar