24 diciembre 2015

Restringir a los usuarios SFTP acceso a un directorio principal de un sitio web

La siguiente es una guía para la creación de usuarios SFTP y la restricción de acceso hacia el directorio home del usuario.

La confirmación la realizara agregando lo siguiente al final del archivo /etc/ssh/sshd_config

[root@gostir ~]# vi /etc/ssh/sshd_config

Subsystema sftp internal-sftp
#configuracion de sftp
Match Group sftpgroup
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no

Esto significa que todos los usuarios en el grupo de "sftpgroup “ estan restringidos a su directorio principal, en el que sólo podrán ejecutar procesos internos SFTP y nada mas.

Ahora creamos el grupo sftpgroup ejecutando el siguiente comando:

[root@gostir ~]# groupadd sftpgroup

Creamos los usuarios requeridos y configuramos las passwords respectivas

[root@gostir ~]# useradd usuario1
[root@gostir ~]# passwd usuario1
[root@gostir ~]# useradd usuario2
[root@gostir ~]# passwd usuario2

Establecer un grupo de usuarios:

[root@gostir ~]# usermod –g sftpgroup usuario1
[root@gostir ~]# usermod –g sftpgroup usuario2

Para denegar el acceso shell SSH, ejecutamos el siguiente comando:

[root@gostir ~]# usermod usuario1 –s  /bin/false
[root@gostir ~]# usermod usuario2 –s /bin/false

Y configuramos el directorio de inicio del usuario:

[root@gostir ~]# usermod  usuario1 –d /var/www/
[root@gostir ~]# usermod usuario2 –d /var/www/

Establecemos el propietario del directorio raiz de los sitios web

[root@gostir ~]# chown root:sftpgroup /var/www/

Establecemos los permisos para los directorios

[root@gostir ~]# chmod 755 –R /var/www/web.com

Establecemos el permiso de escritura al grupo sftpgroup

[root@gostir ~]# chmod g+w /var/www/web.com

Por último, pero no menos importante, reiniciar el servicio SSH

En caso de ser un BSD (tipo Slackware)
[root@gostir ~]# /etc/rc.d/rc-sshd restart

En caso de ser un SystemV (tipo Mageia o Red Hat)
[root@gostir ~]# service sshd restart

La parte SSH ahora esta en orden, pero tenes que asegurarte de que los permisos de los archivos también son correctos. Si el entorno chroot está en el directorio principal de un usuario a la vez / debe ser propiedad de root y debe tener permisos de 755 o 750.

En otras palabras, todas las carpetas que lleva hasta e incluyendo la carpeta de inicio debe ser propiedad de root, de lo contrario, aparecerá el siguiente error después de iniciar sesión:

Error en la escritura: Tubería rota
No se pudo leer paquete: Connection reset by peer

En el caso de ser necesario verificar que se tengan permisos necesarios para acceder y de tener SELinux habilitado:

[root@gostir ~]# getenforce
[root@gostir ~]# setenforce 0

Basado en: http://edwin-montenegro.blogspot.com.ar/2013/09/restringir-los-usuarios-sftp-la-carpeta.html