Cómo configurar SFTP Chroot Jail para bloquear a un usuario en Linux

27 feb 2021 4 min di lettura
Cómo configurar SFTP Chroot Jail para bloquear a un usuario en Linux
Indice dei contenuti

Introducción

Si usted es un administrador del sistema que administra servidores Linux, es probable que deba otorgar acceso SFTP a algunos usuarios para cargar archivos en sus directorios de inicio. De forma predeterminada, los usuarios que pueden acceder al sistema a través de SSH, SFTP y SCP pueden explorar todo el sistema de archivos, incluidos los directorios de otros usuarios. Esto puede no ser un problema si estos usuarios son de confianza, pero si no desea que los usuarios registrados naveguen por el sistema, deberá restringir el acceso de los usuarios a su directorio personal. Esto agrega una capa adicional de seguridad, particularmente en sistemas con múltiples usuarios.

En este tutorial, explicaremos cómo configurar un entorno SFTP Chroot Jail que restringirá a los usuarios a sus directorios de inicio. Los usuarios solo tendrán acceso SFTP, el acceso SSH estará deshabilitado. Estas instrucciones deberían funcionar para cualquier distribución de Linux moderna, incluidos Ubuntu, CentOS, Debian y Fedora.

Si desea configurar SFTP Chroot Jail en un servidor remoto, siga leyendo; de lo contrario, omita el primer párrafo "Conectando al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:

ssh root@IP_DEL_SERVER

A continuación, deberá ingresar la contraseña del usuario root.

Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:

ssh nome_utente@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Crear un grupo SFTP

En lugar de configurar el servidor OpenSSH para cada usuario individualmente , crearemos un nuevo grupo y agregaremos todos nuestros usuarios chroot a este grupo.

Ejecute el groupadd comando groupadd para crear el grupo de usuarios sftponly

sudo groupadd sftponly

Puede nombrar el grupo como desee.

Agregar usuarios al grupo SFTP

El siguiente paso es agregar los usuarios que desea restringir al grupo sftponly

Si se trata de una nueva configuración y el usuario no existe, se puede crear una nueva cuenta de usuario escribiendo:

sudo useradd -g sftponly -s /bin/false -m -d /home/username username
  • La -g sftponly agregará al usuario al grupo sftponly.
  • La -s /bin/false establece el shell de inicio de sesión del usuario. Al configurar el shell de inicio de sesión /bin/false, el usuario no podrá iniciar sesión en el servidor a través de SSH.
  • Las -m -d /home/username indican a useradd que cree el directorio de inicio del usuario.

Establezca una contraseña segura para el usuario recién creado:

sudo passwd username

De lo contrario, si el usuario que desea restringir ya existe, agregue el usuario al sftponly y cambie el shell del usuario:

sudo usermod -G sftponly -s /bin/false username2

El directorio de inicio del usuario debe ser propiedad de root y tener 755 permisos:

sudo chown root: /home/username
sudo chmod 755 /home/username

Dado que los directorios de inicio de usuario son propiedad del usuario raíz, estos usuarios no podrán crear archivos y directorios en sus directorios de inicio. Si no hay directorios en la página de inicio del usuario, deberá crear nuevos directorios a los que el usuario tendrá acceso completo. Por ejemplo, puede crear los siguientes directorios:

sudo mkdir /home/username/{public_html,uploads}
sudo chmod 755 /home/username/{public_html,uploads}
sudo chown username:sftponly /home/username/{public_html,uploads}

Si una aplicación web usa el public_html como raíz del documento, estos cambios pueden causar problemas de autorización. Por ejemplo, si está ejecutando WordPress, deberá crear un grupo de PHP que se ejecutará como propietario del archivo y agregará el servidor web al grupo sftponly

Configuración SSH

SFTP es un subsistema de SSH y admite todos los mecanismos de autenticación SSH.

Abra el archivo de configuración SSH /etc/ssh/sshd_config con su editor de texto:

sudo nano /etc/ssh/sshd_config

Busque la línea que comienza con Subsystem sftp, generalmente al final del archivo. Si la línea comienza con un hash #, elimine el hash # y cámbielo para que se vea así:

Subsystem sftp internal-sftp

Al final del archivo, agregue el siguiente bloque de configuraciones:

Match Group sftponly
 ChrootDirectory %h
 ForceCommand internal-sftp
 AllowTcpForwarding no
 X11Forwarding no

La ChrootDirectory especifica la ruta al directorio chroot. %h indica el directorio de inicio del usuario. Este directorio debe ser propiedad del usuario root y ningún otro usuario o grupo debe poder escribirlo.

Tenga especial cuidado al editar el archivo de configuración SSH. Una configuración incorrecta podría impedir que se inicie el servicio SSH.

Una vez hecho esto, guarde el archivo y reinicie el servicio SSH para aplicar los cambios:

sudo systemctl restart ssh

En CentOS y Fedora, el servicio ssh se llama sshd:

sudo systemctl restart sshd

Prueba de configuración

Ahora que ha configurado el chroot SFTP, puede intentar acceder a la computadora remota a través de SFTP usando las credenciales de usuario del chroot. En la mayoría de los casos, usará un cliente SFTP de escritorio como FileZilla, pero en este ejemplo usaremos el comando sftp.

Abra una conexión SFTP usando el comando sftp seguido del nombre de usuario del servidor remoto y la dirección IP del servidor o el nombre de dominio:

sftp [email protected]

Se le pedirá que ingrese la contraseña del usuario. Una vez conectado, el servidor remoto mostrará un mensaje de confirmación y el mensaje sftp>:

[email protected]'s password:
 sftp>

Ejecute el pwd, como se muestra a continuación, y si todo funciona como se esperaba, el comando debería devolver /.

sftp> pwd
Remote working directory: /

También puede listar archivos y directorios remotos usando el ls y debería ver los directorios que creamos anteriormente:

sftp> ls
public_html uploads

Conclusión

En este tutorial, aprendió cómo configurar un entorno SFTP de Chroot Jail en su servidor Linux y restringir el acceso de los usuarios a su directorio de inicio.

De forma predeterminada, SSH escucha en el puerto 22. Cambiar el puerto SSH predeterminado agrega una capa adicional de seguridad al servidor al reducir el riesgo de ataques automatizados. También puede configurar la autenticación basada en claves SSH y conectarse al servidor sin ingresar una contraseña.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.