Esta guía explica cómo configurar Chrooted SFTP en Linux para restringir el acceso del usuario SSH al directorio de inicio o cualquier directorio en particular. Para decirlo en otras palabras, obligaremos a los usuarios a ir a un directorio específico y estableceremos su shell en /bin/nologin
o algún otro shell que niegue el acceso a un inicio de sesión ssh. Una vez que se configura el SFTP chroot, los usuarios solo pueden acceder a su directorio de inicio asignado, pero no a todo el sistema de archivos
Habilitar el acceso SFTP chroot ofrece los siguientes beneficios:
- Permita que los usuarios se conecten solo a través de SFTP, pero no permita que se conecten a través de SSH.
- Restringir una sesión de usuario SSH a su directorio de inicio o a un directorio específico de su elección.
- Restringe el acceso SSH a ciertos usuarios y todavía les permite transferir archivos entre sistemas locales y remotos.
- Denegar el acceso del usuario a todo el sistema de archivos.
Ahora, sigamos adelante y configuremos Chrooted SFTP para limitar los usuarios de SSH al directorio de inicio y/o cualquier otro directorio con Chrooted jail en Linux.
Esta guía se prueba oficialmente en las distribuciones Debian 11 bullseye, Ubuntu 20.04 LTS y Ubuntu 18.04 LTS. Sin embargo, los pasos que se indican a continuación deberían funcionar en cualquier distribución de Linux que admita openSSH. .
Configurar SFTP encriptado en Linux
A partir de la versión 4.9, openSSH tiene una función conocida como subsistema internal-sftp que permite solo el acceso SFTP, pero no el acceso SSH. Por lo tanto, los usuarios solo pueden acceder a los datos del servidor, pero no pueden acceder mediante SSH.
Crear directorio Chroot
Primero, crea un directorio chroot usando el comando:
$ sudo mkdir /sftp
Haga que este directorio sea propiedad total de root
usuario usando el comando:
$ sudo chown root:root /sftp/
En este directorio, cree directorios separados para cada usuario, como /sftp/user1
, /sftp/user2
y /sftp/user3
y así sucesivamente.
A los efectos de esta guía, voy a crear un directorio llamado ostechnix
en /sftp
directorio.
$ sudo mkdir /sftp/ostechnix
Este es el directorio donde los usuarios pueden guardar los datos. Además, los usuarios no pueden ir más allá de este directorio. Es como su $HOME directorio.
Crear grupo sftp y asignar usuarios a ese grupo
Ahora, necesitamos crear los usuarios para poder acceder al directorio chroot de SFTP.
Crea un grupo llamado sftponly
como se muestra en el siguiente comando:
$ sudo groupadd sftponly
Luego, cree nuevos usuarios de SFTP o asigne usuarios existentes a "sftponly"
grupo como se muestra a continuación.
Déjame crear un nuevo usuario, por ejemplo senthil , y asígnelo al "sftponly"
grupo. Y luego, configure su directorio de inicio como /sftp/ostechnix
y el shell predeterminado como /sbin/nologin
.
Podemos hacer esto usando el siguiente comando en línea:
$ sudo useradd -g sftponly -d /ostechnix -s /sbin/nologin senthil
Establezca la contraseña para el usuario recién creado usando el comando:
$ sudo passwd senthil
Para modificar el usuario existente, use "usermod"
en lugar de "useradd"
comando como a continuación:
$ sudo usermod -g sftponly -d /ostechnix -s /sbin/nologin senthil
Asigne los permisos adecuados al directorio chroot
Debe asignar los permisos adecuados a los usuarios de SFTP para acceder a su directorio HOME como se muestra a continuación.
$ sudo chown senthil:sftponly /sftp/ostechnix
$ sudo chmod 700 /sftp/ostechnix/
Los otros usuarios de SFTP no pueden acceder a este directorio.
Del mismo modo, asigne los permisos apropiados a todos los demás usuarios de SFTP también.
Descarga recomendada - Libro electrónico gratuito:"Aprender Linux en 5 días"
Configurar SFTP encriptado
Editar /etc/ssh/sshd_config
archivo:
$ sudo vi /etc/ssh/sshd_config
Busque y comente las siguientes líneas (es decir, agregue un asterisco # delante para comentar).
#Subsystem sftp /usr/libexec/openssh/sftp-server
En algunas distribuciones, por ejemplo Ubuntu 18.04 LTS , busque y comente la siguiente línea:
#Subsystem sftp /usr/lib/openssh/sftp-server
A continuación, agregue las siguientes líneas al final del archivo:
Subsystem sftp internal-sftp Match group sftponly ChrootDirectory /sftp/ X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Configurar SFTP chroot
Si desea restringir los usuarios a $HOME
directorio, simplemente reemplace /sftp
con /home
en el código anterior. Asegúrese de haber especificado la ruta correcta del directorio sftp. Presione ESC y escriba :wq
para guardar el archivo y salir.
Reiniciar ssh
servicio para actualizar los cambios.
$ sudo systemctl restart sshd
Ahora, intente conectar SSH a este sistema desde cualquier otro sistema en la red utilizando el usuario sftp (es decir, senthil en nuestro caso).
$ ssh [email protected]1
Recibirá el siguiente mensaje de error.
[email protected]'s password: This service allows sftp connections only. Connection to 192.168.122.181 closed.
Aquí, 192.168.122.181 es la dirección IP de mi sistema Debian remoto donde configuré SFTP.
Solo puede acceder al sistema remoto usando sftp como se muestra a continuación.
$ sftp [email protected] [email protected]'s password: Connected to 192.168.43.2. sftp>
¿Ver? El usuario "senthil" puede conectarse a través de sftp, pero no a través de ssh.
Para conocer el directorio de trabajo actual, use 'pwd'
comando:
sftp> pwd Remote working directory: /ostechnix sftp>
Configurar SFTP en chroot en Linux
Comandos básicos de SFTP
Podemos conectarnos usando un puerto alternativo usando -p
bandera.
$ sftp -P <port_number> [email protected]_host
Para transferir un archivo remoto al sistema local, haga lo siguiente:
sftp> get /path/remote_file
Podemos transferir el archivo local al sistema remoto usando el comando:
sftp> put /path/local_file
Para transferir una carpeta remota al sistema local de forma recursiva:
sftp> get -R /path/remote_folder
Para mostrar la lista de archivos en la máquina local:
sftp> lls
Para mostrar la lista de archivos en la máquina remota:
sftp> ls
Para obtener más detalles sobre el uso de sftp, consulte las páginas man.
$ man sftp
Conclusión
En esta guía, hemos discutido cómo configurar y configurar SFTP chroot en sistemas operativos Linux como Debian y Ubuntu.
Lectura sugerida:
- Cómo cambiar el puerto FTP predeterminado a un puerto personalizado
- Instalar servidor VSFTPD en Ubuntu
- Servidor VSFTPD seguro con cifrado TLS/SSL en Ubuntu
- Configurar servidor FTP paso a paso en CentOS
- FTP_Manager:un script simple para instalar y administrar el servidor FTP en CentOS