GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar SFTP chroot en Linux

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 /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

Linux
  1. Cómo actualizar un enlace simbólico de Linux

  2. Cómo cargar o descargar archivos/directorios usando sFTP en Linux

  3. Cómo gzip un directorio en Linux

  4. Cómo configurar Chroot SFTP en Linux (Permitir solo SFTP, no SSH)

  5. Cómo obtener el tamaño del directorio en Linux

Cómo contar archivos en el directorio en Linux

Cómo configurar el último OpenJDK de Oracle en Linux

Cómo ejecutar todos los scripts en un directorio en Linux

Cómo copiar un directorio en Linux

Cómo contar archivos en el directorio en Linux

¿Cómo habilitar sFTP en un VPS Linux?