SFTP (Protocolo de transferencia de archivos SSH) es un protocolo de archivo seguro que se utiliza para acceder, administrar y transferir archivos a través de una sesión de transporte SSH cifrada. La seguridad primero es una regla general para los administradores del sistema. En algunos casos, necesitamos permitir que los usuarios remotos accedan al sistema de archivos en nuestro sistema, pero no desea permitirles obtener un shell. Esto le permitirá un canal seguro para brindar acceso limitado a archivos y directorios específicos.
Este tutorial lo ayudará a configurar el acceso solo a SFTP (sin acceso de shell) en el sistema Debian 11. Creará un entorno chroot en su sistema para limitar el usuario SFTP a un directorio específico únicamente. Además, solo permitirá acceso SFTP sin acceso SSH al usuario.
Requisitos
- Un sistema Debian 11 Bullseye Linux en ejecución
- Debe tener una cuenta privilegiada de sudo con acceso shell
Paso 1:crear un nuevo usuario
En primer lugar, cree un nuevo usuario para conectarse con el servidor sftp. El siguiente comando creará una nueva cuenta llamada sftpuser sin acceso al shell. Puede usar cualquier nombre de su elección o requerimiento.
sudo adduser --shell /bin/false sftpuser
Paso 2:cree un directorio para acceso SFTP
Ha creado un usuario para sftp. Ahora, cree un directorio para configurar como chroot para el sftp. Para este ejemplo, crearé un /var/sftp directorio. El directorio debe tener propiedad raíz para configurarse como directorio chroot. Así que crearemos un subdirectorio en /var/sftp con acceso de escritura a la cuenta sftp.
Cree la estructura de directorios con el siguiente comando:
sudo mkdir -p /var/sftp/files
A continuación, debemos establecer el permiso adecuado en los directorios para configurar como acceso chroot con acceso de escritura para el usuario. Aquí /var/sftp debe tener la propiedad raíz y el grupo con el permiso adecuado. Para establecer ese permiso, escriba:
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
Ahora, cambie el permiso para los "files"
directorio para permitir el acceso de escritura a sftpuser. Para establecer esos permisos, escriba:
sudo chown sftpuser:sftpuser /var/sftp/files
Una vez que sftpuser se conecte al servidor, obtendrá /var/sftp como directorio raíz. No puede acceder al sistema de archivos fuera de él. Además, el usuario puede leer/escribir archivos solo en el directorio "archivos".
Paso 3:configurar sshd solo para SFTP
A continuación, debe configurar el servidor SSH para permitir que el "sftpuser" conecte el servidor con sFTP solo sin acceso de shell. Para realizar los cambios necesarios, edite el archivo de configuración de SSH.
sudo nano /etc/ssh/sshd_config
y agregue la siguiente configuración al final del archivo.
Match User sftpuser ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /var/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Vuelva a verificar que todas las configuraciones sean correctas. Luego guarde los cambios y reinicie el servicio SSH para aplicar los cambios.
sudo systemctl restart ssh
Todo listo, el uso exclusivo de SFTP se crea con éxito en su sistema Debian. Ahora intente iniciar sesión en el sistema remoto con las credenciales del nuevo usuario y compruebe si todo funciona correctamente.
Paso 4:Conéctese a SFTP
Uno puede conectarse a un servidor SFTP remoto usando una línea de comando o aplicaciones gráficas como Filezilla o WinSCP. En este tutorial, le mostraré las dos formas de conectar el servidor SFTP.
Los usuarios de Linux pueden usar la utilidad de línea de comandos sftp para conectarse a instancias remotas de sftp.
sftp [email protected]
[email protected]'s password:
sftp>
La interfaz GUI o los usuarios de Windows pueden usar clientes sftp gráficos. Por ejemplo, use el cliente de Filezilla para conectar una cuenta remota de sftp en el sistema remoto.
Verificar que no haya acceso shell:
Como esta cuenta está configurada solo para conexión SFTP. Entonces, si algún usuario intentó conectarse a través de SSH, se desconectará inmediatamente después de la autenticación exitosa. El usuario recibirá el siguiente mensaje:
ssh [email protected]
[email protected]'s password:
This service allows sftp connections only.
Connection to sftp.tecadmin.net closed.
Conclusión
En esta guía práctica, aprendió a crear un entorno chroot jail para usuarios de SFTP sin acceso de shell al servidor. El entorno Chroot protege el sistema de archivos al evitar que los usuarios accedan a archivos fuera del directorio definido. Este tutorial está creado y probado con el sistema Debian 11 Bullseye, pero funcionará en otras versiones de Debian.