Introducción
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, en primer lugar, es una regla general para los administradores de sistemas. En algunos casos, necesitamos permitir que los usuarios remotos accedan al sistema de archivos en nuestro sistema, pero no desea permitirles que obtengan un shell. Esto le permitirá un canal seguro para proporcionar acceso limitado a archivos y directorios específicos.
Este tutorial le ayudará a configurar el acceso SFTP únicamente (sin acceso shell) en el sistema Debian 11. Creará un entorno chroot en su sistema para restringir el usuario SFTP a un directorio específico únicamente. Además, solo permitirá el acceso SFTP sin acceso SSH al usuario.
Prerrequisitos
- Un sistema Linux en ejecución Debian 11 Bullseye
- Debe tener una cuenta sudo privilegiada con acceso al shell
Crea 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 utilizar cualquier nombre de su elección o requisito.
sudo adduser --shell /bin/false sftpuser
Cree un directorio para el acceso SFTP
Ha creado un usuario para sftp. Ahora, cree un directorio para configurarlo como chroot para sftp. Para este ejemplo, crearé un directorio / var / sftp. El directorio debe tener la propiedad raíz para configurarse como un directorio chroot. Luego crearemos un subdirectorio en / var / sftp con acceso de escritura a la cuenta sftp.
Cree la estructura del directorio con el siguiente comando:
sudo mkdir -p /var/sftp/files
A continuación, debemos establecer los permisos adecuados en los directorios que se configurarán como acceso chroot con acceso de escritura para el usuario. Aquí /var/sftp
debe tener la propiedad raíz y el grupo con los permisos adecuados. Para establecer este permiso, escriba:
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
Ahora, cambie el permiso del directorio "files"
para permitir el acceso de escritura a sftpuser. Para establecer estos permisos, escriba:
sudo chown sftpuser:sftpuser /var/sftp/files
Una vez que sftpuser se conecte al servidor, se convertirá /var/sftp
en root. No puede acceder al sistema de archivos fuera de él. Además, el usuario solo puede leer / escribir archivos en el directorio " archivos ".
Configurar sshd solo para SFTP
A continuación, debe configurar el servidor SSH para permitir que "sftpuser" se conecte al servidor solo con sFTP sin acceso de shell. Para realizar los cambios necesarios, edite el archivo de configuración SSH:
sudo nano /etc/ssh/sshd_config
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
Verifique que todos los ajustes sean correctos. Luego, guarde los cambios y reinicie el servicio SSH para aplicar los cambios.
sudo systemctl restart ssh
Todo hecho, el uso de SFTP solo se ha creado con éxito en su sistema Debian. Ahora intente iniciar sesión en el sistema remoto con las credenciales del nuevo usuario y verifique si todo funciona bien.
Conectarse a SFTP
Puede conectarse a un servidor SFTP remoto mediante una línea de comandos o aplicaciones gráficas como Filezilla o WinSCP. En este tutorial, le mostraré ambas formas de conectar el servidor SFTP.
Los usuarios de Linux pueden utilizar la utilidad de línea de comandos sftp para conectarse a instancias sftp remotas:
sftp [email protected]
[email protected]'s password:
sftp>
La interfaz GUI o los usuarios de Windows pueden utilizar clientes sftp gráficos. Por ejemplo, use el cliente Filezilla para conectar solo la cuenta sftp remota en el sistema remoto.
Como esta cuenta está configurada solo para conexión SFTP. Por lo tanto, si un usuario ha intentado conectarse a través de SSH, se cerrará la sesión inmediatamente después de una 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.noviello.it closed.
Conclusión
En esta guía, aprendió cómo crear un entorno de jail chroot 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 fue creado y probado con el sistema Debian 11 Bullseye, pero funcionará en otras versiones de Debian.