martes, 28 de mayo de 2019

Enjaular usuario mediante CHROOT para acceder solo por SFTP

Transferir archivos sigue siendo una actividad importante a nivel corporativo. No obstante, los servicios como FTP o FTPs no son los más adecuados dado que los datos son de facil acceso, pues viajan sin encriptar através de la red.

La solución más práctica es SFTP, un protocolo interno de SSH, mediante el cual la información viaja encriptada de extremo a extremo. Sin embargo, crear el usuario y asignarle una contraseña no es suficiente si se quiere mantener un estandar de seguridad. Así mismo, mejorar la seguridad a veces causa que el servicio esté inaccesible por problemas de permisos.

Veremos como configurar el servidor para dar los permisos precisos sobre carpetas puntuales a multiples usuarios.

Como bonus, vamos a generar un conjunto de claves rsa publico-privada para acceder sin necesidad de contraseña.


En primer lugar, crearemos un grupo con el cual administraremos a todos los usuarios a nivel SSH
#groupadd usuarios-sftp

a continuación definimos la carpeta raíz donde estarán los directorios de todos los usuarios

#mkdir /carpetas-sftp
seguidamente editaremos el archivo sshd_config para asociar los recursos creados.

#nano /etc/ssh/sshd_config

Comentamos el comando Subsystem y añadimos las lineas siguientes
 #Subsystem       sftp    /usr/libexec/openssh/sftp-server
 Subsystem       sftp     internal-sftp
 Match Group usuarios-sftp
 ChrootDirectory /carpetas-sftp/%u
 ForceCommand internal-sftp
 AllowTCPForwarding no
 X11Forwarding no

Reiniciamos ssh

systemctl restart sshd

Creamos nuestros usuarios

useradd usuario1 -g usuarios-sftp

Desde aquí tenemos 2 opciones. Manejar contraseñas o archivos de llave (.key, .ppk).

Opción 1: Contraseña.

passwd usuario1

Opción 2: Generar archivo de llave

su usuario1
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
nano ~/.ssh/authorized_keys

Colocar una llave pública previamente creada con openssh o puttygen (tutorial próximamente) y guardar el archivo.

exit

Finalmente impedir que el usuario pueda acceder mediante ssh

usermod -s /usr/sbin/nologin usuario1


Creamos la carpeta destino y asignamos permisos.

mkdir /carpetas-sftp/usuario1
mkdir /carpetas-sftp/usuario1/data
chown root.root /carpetas-sftp/usuario1
chmod -R 0755 /carpetas-sftp/usuario1/
chown usuario1:usuarios-sftp /carpetas-sftp/usuario1/data
chmod -R 0755 /carpetas-sftp/usuario1/data/



No hay comentarios.:

Publicar un comentario