Chroot para usuarios sftp


Icono de ssh con carpeta Si es necesario dar acceso para descargar ficheros de un servidor no hace falta instalar un servidor ftp y configurarlo. Basta con hacer un chroot con ssh para realizar conexiones sftp. Es sencillo de realizar y no hay que instalar nada extra en un servidor Linux.

Para que sirve chroot en SFTP? Se trata de "encerrar" a un usuario o grupo de usuarios con un acceso SFTP a una carpeta para que no puedan acceder a otras carpetas.

1. El primer paso es crear un grupo de usuarios que entren por SFTP y queremos que tengan el chroot.
groupadd sftp
2. Lo siguiente es crear un usuario o modificarlo para asignarlo al grupo de sftp. Tambíen es importante asignarle la shell /sbin/nologin o /bin/false para que solo pueda acceder por ssh. El directorio a añadir puede ser el /home/ del usuario.

Crear usuario:

useradd -g sftp -d /home/sftpuser -s /sbin/nologin sftpuser
passwd sftpuser

O podemos nodificar usuario creado:

usermod -g sftp -s /sbin/nologin sftpuser
3. Añadimos la configuración en el mismo fichero (/etc/sshd/sshd_config).
Match Group sftp
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
  PermitTunnel no
  X11Forwarding no
4. Les asignamos los permisos correctos a las carpetas.
chown root /home/sftpuser
chmod go-w /home/sftpuser
5. Creamos una carpeta para que pueda subir sus ficheros.
mkdir /home/sftpuser/incoming
chown sftpuser:sftpuser /home/sftpuser/incoming
6. Reinciamos el servicio de sshd para cargar la configuración.
service sshd restart

Probamos que no funcione el acceso por ssh.

ssh sftpuser@localhost

Probamos a acceder por sftp.

sftp sftpuser@localhost

Intentamos acceder al directorio padre alq ue hemos accedido para ver si realmente el usuario está en su chroot.

cd .. 
pwd 

Con esos dos comandos deberia mostrate lo siguiente:

/home/sftpuser

Webgrafía

https://wiki.archlinux.org/index.php/SFTP_chroot