Restringir acceso solo a SFTP
Introducción
Contamos con un gran problema a la hora de crear un usuario de acceso en nuestro servidor, con el objeto de transferir archivos, y que de forma natural cuenta con un acceso shell al mismo, pudiendo el usuario ejecutar comando y hacer uso no autorizado de nuestro hardware.
Lo que se busca es poder limitar el acceso exclusivamente a la transferencia de archivos, para lo cual ssh con su sub-sistema (subsystem) sftp nos puede resolver el problema.
Por simplicidad de la configuración no consideramos "enjaular" (chroot) al usuario en el directorio de trabajo, por lo que se debe tener en cuenta que se le permite al usuario descargar o subir todos los archivos del sistema según los permisos que tengan.
Configuración
Consideraremos un caso más general, donde podremos tener un grupo de usuarios que nos interesa dar solo acceso sftp. No está de más aclarar que los pasos indicados requieren permiso "root" de administrador del sistema y se basan en CentOS 6, aunque es válido para la gran mayoría de las distribuciones Linux probablemente con algunos ajustes menores (rutas de archivos por ejemplo)
Crear grupo "sftpuser"
groupadd sftpuser
Crear (o modificar) usuario asignando grupo sftpuser
En este caso se considerará un usuario para actilización de páginas web, por lo que se dejará como grupo principál "apache", y se agregará el grupo sftpuser, el usuario a crear será webusr1:
useradd -c "Carga de contenidos WWW" -g apache -G sftpuser -M -d /var/www/html webusr1
Limitar el acceso en /etc/ssh/sshd_config
Debemos editar el archivo /etc/ssh/sshd_config y agregar (generalmente al final) lo siguiente:
...
Match Group sftpuser
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Con ello se fuerza la ejecución de internal-sftp que corresponde al interprete interno de sshd para el protocolo sftp, evitando la ejecución de una shell o cualquier comando dado como parámetro. Igualmente "AllowTCPForwarding no" evita la definición de un tunel que pudiere saltar nuestras reglas de firewall.
Reiniciar sshd
Como último paso nos queda reiniciar sshd con objeto que tome los cambios realizados:
service sshd restart
Generado por Sistema y almacenado en cache
Wyzer Luis Hernán de la Barra |
|
Teléfono: | +56995451689 |
WhatsApp: | +56995451689 |
E-Mail: | info@wyzer.cl |
Web: | www.wyzer.cl |