Cristina Alcantarilla
INFORMÁTICA & DISEÑADORA
Enjaula usuarios sftp

Nos vamos a centrar en enjaular usuarios sftp, SFTP es el programa de conexión segura que sustituye a FTP. Al igual que SSH respecto a telnet, SFTP ofrece una transferencia de información encriptada y un método de autentificación más seguro que el tradicional FTP.

Al igual que en el caso de SSH, para que podamos conectarnos por SFTP a una máquina remota necesitamos que en dicha máquina esté corriendo el programa servidor sshd y que esté configurado para permitir conexiones SFTP.

¿Porque usar SFTP con SSH en lugar de usar el servicio vsftpd? Porque toda la información viajara encriptada (incluyendo la contraseña) impidiendo que alguien pueda acceder a la información durante la transferencia.

Ahora vamos a ello:
Primeramente se crea un directorio donde se ubicaran los home de los usuarios del grupo:

mkdir /home/usersjaula

Luego se crea un grupo de usuarios y los usuarios deseados:

groupadd usersjaula
useradd -g usersjaula -d /home/usersjaula/nombreUsuario -m -s /bin/false nombreUsuario
passwd nombreUsuario

Con los comandos anteriores se creó el grupo “usersjaula” y el usuario “nombreUsuario” sin shell perteneciente al grupo recién creado.

Luego se cambian los permisos de los siguientes directorios:

chmod 755 -R /home/usersjaula
chmod 755 -R /home/usersjaula/nombreUsuario
chown root.root -R /home/usersjaula

Con los comandos anteriores el usuario no podrá escribir en su propio home. Por ello se crea un directorio en su home para que pueda almacenar sus archivos.

mkdir /home/usersjaula/nombreUsuario/archivos
chown nombreUsuario.nombreUsuario -R /home/usersjaula/nombreUsuario/archivos

Los permisos que se modificaron en los pasos anteriores se realizaron para que funcione el enjaulado SFTP. El propietario del directorio jaula y los directorios sobre este, debe ser root con permisos 755. Esta es una restricción del ChrootDirectory en OpenSSH.

Configuración de SSH

El archivo de configuración de SSH es /etc/ssh/sshd_config. Por lo que todas las configuraciones se realizaran en este archivo.

Por seguridad se recomienda deshabilitar el acceso a root por SSH con la siguiente directiva:

PermitRootLogin no

Para limitar el acceso al servicio SSH a ciertos usuarios se usa la directiva AllowUsers:

AllowUsers nombreUsuario nombreUsuario2 etc

Para limitar el acceso a ciertos grupos se puede usar:

AllowGroups usersjaula

Verificar que se tiene la siguiente linea para enjaular el servicio SFTP:

Subsystem sftp /usr/lib/openssh/sftp-server

Agregar las siguientes lineas a final del archivo /etc/ssh/sshd_config para enjaular a un usuario:

Match User nombreUsuario
ChrootDirectory /home/usersjaula/nombreUsuario
ForceCommand /usr/lib/openssh/sftp-server
# AllowTCPForwarding no    ## opcional
# X11Forwarding no        ## opcional

Agregar las siguientes lineas a final del archivo /etc/ssh/sshd_config para enjaular a un grupo de usuarios:

Match group usuariossftp
ChrootDirectory /home/usersjaula
ForceCommand /usr/lib/openssh/sftp-server
# AllowTCPForwarding no    ## opcional
# X11Forwarding no        ## opcional

Para que los cambios surjan efecto se reinicia el servicio:

/etc/init.d/ssh restart

Si se intenta acceder desde linea de comandos a SSH marcara el error:

This service allows sftp connections only.

A disfrutar

Share Button

Deja un comentario