Configure SFTP y evite SSH en Ubuntu 20.04. SFTP (Protocolo seguro de transferencia de archivos), una forma segura de transferir archivos a servidores mediante conexiones SSH cifradas. Todos los servidores con SSH tendrán habilitado SFTP de forma predeterminada.
En esta guía, aprenderá cómo limitar el acceso SFTP a un directorio para un usuario en particular y evitar el acceso SSH.
Esta configuración se prueba en una máquina virtual que ejecuta el sistema operativo Ubuntu 20.04. Así que este tutorial debería funcionar en cualquier servidor con Ubuntu.
Requisitos
Acceso SSH al servidor con privilegios sudo.
Paso 1:Crear nuevo usuario
Cree un nuevo usuario que tenga acceso SFTP para realizar ciertas acciones en un directorio en particular.
sudo adduser username
Se le pedirá que configure una contraseña y otros detalles opcionales que puede configurar o ignorar.
Si desea utilizar el inicio de sesión basado en claves SSH, compruebe cómo configurar el acceso SSH en su Ubuntu.
Paso 2:configurar el acceso SFTP
Para configurar el acceso SFTP, debe configurar los permisos de directorio correctos. El directorio principal del nuevo directorio que está a punto de crear debe ser propiedad de root y no de ningún otro usuario.
Por ejemplo, si va a crear un directorio llamado /sftp/folder
, el sftp
el directorio debe ser propiedad de raíz y el folder
el directorio debe ser propiedad del usuario particular quién está accediendo.
Crear directorios.
sudo mkdir -p /sftp/folder
Configure los permisos correctos.
sudo chmod 755 /sftp sudo chown root:root /sftp sudo chmod -R 755 /sftp/folder sudo chown username:username /sftp/folder
Paso 3:Evite el acceso SSH y restrinja el acceso SFTP
Ahora podemos modificar la configuración de SSH para evitar el acceso de SSH para el usuario y restringir el acceso del usuario solo al directorio en particular.
Edite su archivo de configuración de SSH.
sudo nano /etc/ssh/sshd_config
Agregue lo siguiente al final del archivo.
Match User username ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Match User
le dice al servidor SSH que aplique los siguientes comandos solo al usuario especificado.ForceCommand internal-sftp
obliga al servidor SSH a ejecutar el servidor SFTP al iniciar sesión y evita el acceso SSH.PasswordAuthentication yes
permite la autenticación de contraseña para este usuario. Si utiliza el inicio de sesión basado en claves SSH, puede evitar la autenticación basada en contraseña configurando el valor enno
.ChrootDirectory /sftp
asegura que el usuario no tendrá acceso a nada más allá del/sftp
directorio.AllowAgentForwarding no
,AllowTcpForwarding no
yX11Forwarding no
desactiva el reenvío de puertos, la tunelización y el reenvío X11, respectivamente.
Presiona CTRL + X
seguido de Y
y luego ENTER
para guardar y salir del archivo.
Ahora las configuraciones están en su lugar, lo que permite solo el acceso SFTP y evita el inicio de sesión SSH para el usuario.
Reinicie el servicio SSH para que los cambios surtan efecto.
sudo systemctl restart sshd
Para obtener más detalles sobre cómo configurar el acceso para múltiples nombres de usuario, puede seguir esta guía de configuración de Chroot.
Paso 4:Verificar la configuración de SFTP
Intente iniciar sesión en el servidor utilizando sus datos de SFTP con el comando SSH. Se le negará el acceso a SSH.
ssh [email protected]_ip
Recibirá un resultado similar al siguiente.
Output This service allows sftp connections only. Connection to server_ip closed.
Ahora verifique usando el comando sftp.
sftp [email protected]_ip
Ahora debería iniciar sesión en el servidor y tener acceso al directorio que configuró anteriormente.
Output Connected to server_ip sftp>
Usa el ls
comando para enumerar los directorios, verá el directorio llamado folder
ha creado y configurado permisos.
sftp> ls
Output folder
Conclusión
Ahora ha aprendido cómo configurar SFTP y evitar el acceso SSH al usuario a través de un directorio específico.
Gracias por tu tiempo. Si tiene algún problema o comentario, deje un comentario a continuación.