Cómo configurar el servidor SFTP con Chroot en Debian 10

SFTP significa Protocolo seguro de transferencia de archivos / Protocolo de transferencia de archivos SSH, es uno de los métodos más comunes que se utiliza para transferir archivos de forma segura a través de ssh desde nuestro sistema local al servidor remoto y viceversa. La principal ventaja de sftp es que no necesitamos instalar ningún paquete adicional excepto ‘abre el servidor sh‘, en la mayoría de las distribuciones de Linux, el paquete ‘openssh-server’ es la parte de la instalación predeterminada. Otro beneficio de sftp es que podemos permitir que el usuario use sftp solo, no ssh.

Configurar-sftp-debian10

Recientemente se ha lanzado Debian 10, con el nombre de código ‘Buster’, en este artículo demostraremos cómo configurar sftp con un entorno similar a Chroot ‘Jail’ en el sistema Debian 10. Aquí, un entorno similar a Chroot Jail significa que los usuarios no pueden ir más allá de sus respectivos directorios de inicio o los usuarios no pueden cambiar directorios desde sus directorios de inicio. Los siguientes son los detalles del laboratorio:

  • Sistema operativo = Debian 10
  • Dirección IP = 192.168.56.151

Pasemos a los pasos de configuración de SFTP,

Paso: 1) Cree un grupo para sftp usando el comando groupadd

Abra la terminal, cree un grupo con un nombre «usuarios_sftp” usando el siguiente comando groupadd,

[email protected]:~# groupadd sftp_users

Paso: 2) Agregar usuarios al grupo ‘sftp_users’ y establecer permisos

En caso de que desee crear un nuevo usuario y desee agregar ese usuario al grupo ‘sftp_users’, ejecute el siguiente comando,

Sintaxis: # useradd -m -G sftp_users

Supongamos que el nombre de usuario es ‘Jonathan’

[email protected]:~# useradd -m -G sftp_users jonathan

establezca la contraseña usando el siguiente comando chpasswd,

[email protected]:~# echo "jonathan:<enter_password>" | chpasswd

En caso de que desee agregar usuarios existentes al grupo ‘sftp_users’, ejecute debajo del comando usermod, supongamos que el nombre de usuario ya existente es ‘chris’

[email protected]:~# usermod -G sftp_users chris

Ahora configure los permisos requeridos en Usuarios,

[email protected]:~# chown root /home/jonathan /home/chris/

Cree una carpeta de carga en el directorio de inicio del usuario y establezca la propiedad correcta,

[email protected]:~# mkdir /home/jonathan/upload
[email protected]:~# mkdir /home/chris/upload
[email protected]:~# chown jonathan /home/jonathan/upload
[email protected]:~# chown chris /home/chris/upload

Nota: Usuarios como Jonathan y Chris pueden cargar archivos y directorios para cargar carpetas desde sus sistemas locales.

Paso: 3) Edite el archivo de configuración de sftp (/etc/ssh/sshd_config)

Como ya dijimos, las operaciones de sftp se realizan sobre ssh, por lo que su archivo de configuración es «/etc/ssh/sshd_config“, Antes de realizar cualquier cambio, sugeriría primero hacer una copia de seguridad y luego editar este archivo y agregar el siguiente contenido,

[email protected]:~# cp /etc/ssh/sshd_config /etc/ssh/sshd_config-org
[email protected]:~# vim /etc/ssh/sshd_config
………
#Subsystem      sftp    /usr/lib/openssh/sftp-server
Subsystem       sftp    internal-sftp

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory %h
  ForceCommand internal-sftp
…………

Guardar y salir del archivo.

Para realizar los cambios anteriores en el efecto, reinicie el servicio ssh usando el siguiente comando systemctl

[email protected]:~# systemctl restart sshd

En el archivo ‘sshd_config’ anterior, hemos comentado la línea que comienza con «Subsistema» y hemos agregado una nueva entrada «Subsistema sftp internal-sftp» y nuevas líneas como,

Coincidir con el grupo sftp_users” –> Significa que si un usuario es parte del grupo ‘sftp_users’, aplique las reglas que se mencionan a continuación a esta entrada.

Directorio de Chroot %h” -> Significa que los usuarios solo pueden cambiar directorios dentro de sus respectivos directorios de inicio, no pueden ir más allá de sus directorios de inicio, o en otras palabras, podemos decir que los usuarios no pueden cambiar directorios, obtendrán un entorno similar a jai dentro de sus directorios y pueden No acceder a los directorios de ningún otro usuario o sistema.

ForceCommand interno-sftp” -> Significa que los usuarios están limitados solo al comando sftp.

Paso: 4) Probar y verificar sftp

Inicie sesión en cualquier otro sistema Linux que esté en la misma red de su servidor sftp y luego intente acceder al servidor sftp a través de los usuarios que hemos asignado en el grupo ‘sftp_users’.

[[email protected] ~]# ssh [email protected]
[email protected]'s password:
Write failed: Broken pipe
[[email protected] ~]# ssh [email protected]
[email protected]'s password:
Write failed: Broken pipe
[[email protected] ~]#

Arriba confirma que los usuarios no pueden usar SSH, ahora intente sftp usando los siguientes comandos,

[[email protected] ~]# sftp [email protected]
[email protected]'s password:
Connected to 192.168.56.151.
sftp> ls -l
drwxr-xr-x    2 root     1001         4096 Sep 14 07:52 debian10-pkgs
-rw-r--r--    1 root     1001          155 Sep 14 07:52 devops-actions.txt
drwxr-xr-x    2 1001     1002         4096 Sep 14 08:29 upload

Intentemos descargar un archivo usando sftp ‘obtenercomando

sftp> get devops-actions.txt
Fetching /devops-actions.txt to devops-actions.txt
/devops-actions.txt                                                                               100%  155     0.2KB/s   00:00
sftp>
sftp> cd /etc
Couldn't stat remote file: No such file or directory
sftp> cd /root
Couldn't stat remote file: No such file or directory
sftp>

El resultado anterior confirma que podemos descargar el archivo desde nuestro servidor sftp a la máquina local y, aparte de esto, también hemos probado que los usuarios no pueden cambiar de directorio.

Intentemos cargar un archivo en «subir” carpeta,

sftp> cd upload/
sftp> put metricbeat-7.3.1-amd64.deb
Uploading metricbeat-7.3.1-amd64.deb to /upload/metricbeat-7.3.1-amd64.deb
metricbeat-7.3.1-amd64.deb                                                                        100%   38MB  38.4MB/s   00:01
sftp> ls -l
-rw-r--r--    1 1001     1002     40275654 Sep 14 09:18 metricbeat-7.3.1-amd64.deb
sftp>

Esto confirma que hemos subido con éxito un archivo desde nuestro sistema local al servidor sftp.

Ahora pruebe el servidor SFTP con la herramienta winscp, ingrese la dirección IP del servidor sftp junto con las credenciales del usuario,

Winscp-sftp-debian10

Haga clic en Iniciar sesión y luego intente descargar y cargar archivos

Descargar-archivo-winscp-debian10-sftp

Ahora intente cargar archivos en la carpeta de carga,

Cargar-archivo-usando-winscp-Debian10-sftp

La ventana anterior confirma que la carga también funciona bien, eso es todo de este artículo. Si estos pasos lo ayudan a configurar el servidor SFTP con el entorno chroot en Debian 10, comparta sus comentarios y opiniones.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *