sftp en chroot

Hay veces que se puede dar el caso de que un equipo tenga que ser compartido por varias personas, lo típico es un servidor web, por ejemplo, que tiene un apache y un número de personas tienen acceso a su directorio web, para poder subir sus archivos, pero no por eso quiere decir que tengan que tener acceso al resto de las páginas. Ni mucho menos, al resto de los archivos del servidor. Aun cuando la gente es de confianza, puede suponer un peligro, si el servidor en 100% compartido, peor. Por lo tanto, vamos a ver cómo poder habilitar un acceso por usuario a un directorio (y subdirectorios) sin que pueda salir del mismo. Es decir, vamos a crear una jaula chroot para el sistema sftp. Como veremos la forma de realizarlo es muy sencilla, así que sólo hay que seguir estos pasos:
  • Editamos el fichero /etc/ssh/sshd_config
    En el hay que buscar la línea "Subsystema sftp" y dejarla tal como está a continuación y al final del fichero, incluir las líneas del final para cada uno de los usuarios que queramos enjaular.
  • ...
    Subsystem sftp internal-sftp
    ....
    Match User user1
      ChrootDirectory /home/user1
      AllowTCPForwarding no
      X11Forwarding no
      ForceCommand internal-sftp
    
  • Reiniciamos el servicio ssh
  • shell> service ssh restart
    
  • Creamos el usuario (el mismo que dimos de alta en el fichero sshd_config).
    Aquí es muy importante establecer los permisos correctamente. En caso de que éstos no estén así establecidos, el usuario no podrá acceder a su carpeta personal y por lo tanto no podrá iniciar sesión.
  • shell> adduser user1
    shell> chown root:root /home/user1
    shell> mkdir /home/user1/public_html
    shell> chown www-data:www-data /home/user1/public_html
    shell> chmow 0775 /home/user1/public_html
    
  • Para este ejemplo, el usuario tendrá una carpeta public_html que será de www-data, es decir, del usuario de apache y para que dicho usuario pueda escribir en ella, es conveniente que lo agreguemos al grupo www-data.
  • shell> adduser www-data user1
    
  • Finalmente ya podemos iniciar sesión con el usuario que hemos creado empleando sftp (ftp bajo ssh) y sabiendo que no podrá salir de la carpeta pre establecida en configuración.
  • En caso de que necesitemos que varios usuarios tengan que iniciar sesión a un mismo lugar, en el fichero sshd_config también se puede realizar un match por grupos, tal que así.
    Match Group webs
      ChrootDirectory /home/webs
      AllowTCPForwarding no
      X11Forwarding no
      ForceCommand internal-sftp
    
Espero que os haya ayudado.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios