El siguiente artículo muestra como permitir el acceso a algunos usuarios del sistema por SFTP usando SSH para la transferencia de archivos de forma segura impidiendo el acceso a directorios fuera de su home (Chroot). Además, los usuarios no podrán conectarse al sistema por SSH desde linea de comandos.
¿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.
En Debian Squeeze, la configuración de SSH por default permite el acceso a todos los usuarios del sistema y recorrer todo el árbol de directorios incluyendo /. Sin embargo, se puede restringir el acceso a ciertos usuarios al Servidor y enjaularlos en su propio home (el usuario se podrá conectar al servidor pero no podrá salir fuera de su directorio personal).
Preparando el Sistema
Primeramente se crea un directorio donde se ubicaran los home de los usuarios del grupo:
Luego se crea un grupo de usuarios y los usuarios deseados:
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:
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.
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:
Para limitar el acceso al servicio SSH a ciertos usuarios se usa la directiva AllowUsers:
Para limitar el acceso a ciertos grupos se puede usar:
Verificar que se tiene la siguiente linea para enjaular el servicio SFTP:
Agregar las siguientes lineas a final del archivo /etc/ssh/sshd_config para enjaular a un usuario:
Agregar las siguientes lineas a final del archivo /etc/ssh/sshd_config para enjaular a un grupo de usuarios:
Para que los cambios surjan efecto se reinicia el servicio:
Si se tiene un firewall se deben de abrir el puerto correspondiente.
Acceder remotamente
Para acceder remotamente al servicio SFTP se puede usar el navegador de archivos tecleando en la barra de direcciones "sftp://IP".
Desde Windows se puede usar cualquier cliente que se indica en esta lista. De los que vienen en la lista, yo recomiendo FileZilla pues con este al subir archivos con acentos y Ñ se mostrarán correctamente en GNU/Linux.
Si se intenta acceder desde linea de comandos a SSH marcara el error:
FUENTE:
http://www.esdebian.org/wiki/enjaulado-sftp
http://linuxsix.blogspot.com/2009/03/tutorial-para-hacer-una-jaula-chroot.html
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config
¿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.
En Debian Squeeze, la configuración de SSH por default permite el acceso a todos los usuarios del sistema y recorrer todo el árbol de directorios incluyendo /. Sin embargo, se puede restringir el acceso a ciertos usuarios al Servidor y enjaularlos en su propio home (el usuario se podrá conectar al servidor pero no podrá salir fuera de su directorio personal).
Preparando el Sistema
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 tiene un firewall se deben de abrir el puerto correspondiente.
Acceder remotamente
Para acceder remotamente al servicio SFTP se puede usar el navegador de archivos tecleando en la barra de direcciones "sftp://IP".
Desde Windows se puede usar cualquier cliente que se indica en esta lista. De los que vienen en la lista, yo recomiendo FileZilla pues con este al subir archivos con acentos y Ñ se mostrarán correctamente en GNU/Linux.
Si se intenta acceder desde linea de comandos a SSH marcara el error:
This service allows sftp connections only.
FUENTE:
http://www.esdebian.org/wiki/enjaulado-sftp
http://linuxsix.blogspot.com/2009/03/tutorial-para-hacer-una-jaula-chroot.html
http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config