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.
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,
Haga clic en Iniciar sesión y luego intente descargar y cargar archivos
Ahora intente cargar archivos en la carpeta de carga,
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.