chroot con sftp y sshd
Posted on Thu 19 May 2011 in Tutorial • 2 min read
Hace ya muchos años, muchos vimos como iban desapareciendo los accesos por telnet a las maquina unix y se sustituia por un acceso encriptado, el cual nos obligaba a cambiar nuestro terminal, ya que por los años 90 no existian demasiados clientes ssh. Para windows aparecio el famoso putty.
SSH aparte de permitir el acceso remotamente a un tty de una maquina unix, implementa sftp, el cual permite la transferencia de archivos mediante los mismos comandos que ftp, pero mediante un canal encriptado.
Cuando necesitamos dar acceso a nuestras maquinas por sftp, la mayoria de los caso queremos que el usuario que lo usa, no pueda andar por nuestras maquinas a sus anchas, por lo que vamos a ver como hacer un chroot a tambien llamado jail o jaula.
Cuando creamos un chroot, lo que hacemos es encerrar al usuario en una parte del sistema de archivos, haciendole creer que se encuentra en el raiz de sistema y aunque intente ir para atras con un cd .. seguira en el mismo sitio.
Primero creamos el directorio donde queremos hacer el chroot y le cambiamos los permisos para que sean de root el propietario, tambien creamos un usuario webuser, con el home en / y como shell /bin/false, para que no pueda entrar por ssh a la maquina.
root@lnxport:~# mkdir /chroot
root@lnxport:~# chown root /chroot/
root@lnxport:~# useradd -d / -s /bin/false webuser
root@lnxport:~# passwd webuser
Introduzca la nueva contraseña de UNIX:
Vuelva a escribir la nueva contraseña de UNIX:
passwd: password updated successfully
Ahora hay que configurar el chroot en el fichero de configuracion de sshd
root@lnxport:~# vi /etc/ssh/sshd_config
Y añadimos al final lo siguente
Match user webuser
ChrootDirectory /chroot
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
Hacemos reload de ssh
root@lnxport:~# service ssh reload
Ahora ya podemos hacer secure ftp a nuestro chroot para verificar que todo funciona y que realmente estamos en una jaula
lnxuser@lnxport:~$ sftp webuser@lnxport
webuser@lnxport's password:
Connected to lnxport.
sftp> ls
sftp> pwd
Remote working directory: /
sftp> cd ..
sftp> ls
sftp> quit
Como veis, aunque el usuario intente ir a un nivel inferior no le deja, solo podria entrar en los directorios que haya en su jaula.