Cómo instalar y utilizar SFTP en servidores Linux

A√Īadir usuario y grupo sftpserver

SFTP o Protocolo de Transferencia de Archivos SSH es un método para transferir datos de forma segura entre dos ordenadores y más. Es FTP que se ejecuta en la parte superior del protocolo SSH y se aprovecha de su seguridad y apoya plenamente su autenticación.

Hoy en d√≠a, se recomienda utilizar SFTP en lugar del antiguo protocolo FTP o FTP/S. SFTP es seguro por defecto porque as√≠ es como funciona SSH. Desde el punto de vista de la seguridad, SFTP tambi√©n le protege contra el escaqueo de contrase√Īas y el ataque del hombre en el medio (MiTM).

Al igual que SSH, SFTP tambi√©n protege la integridad de sus datos mediante el cifrado y la funci√≥n hash criptogr√°fica. Adem√°s, soporta m√ļltiples m√©todos de autenticaci√≥n segura, incluyendo la autenticaci√≥n basada en contrase√Īa y en clave. Adem√°s, reduce el puerto abierto del servidor a la red exterior, ya que se ejecuta en el mismo puerto que el protocolo SSH.

Requisitos previos

En esta guía, aprenderá a configurar el servidor SFTP en un sistema Linux. Además, aprenderá los comandos básicos del cliente sftp.

A continuación se muestra el entorno actual para la implementación:

  • Un servidor Linux – puedes usar Debian, Ubuntu, CentOS, Fedora, Rocky, o cualquier otra distribuci√≥n de Linux.
  • Aseg√ļrese de que los paquetes de OpenSSH est√°n disponibles en su sistema Linux.
  • Cliente SFTP – l√≠nea de comandos sftp o cualquier cliente GUI como usted prefiera.

Verificar los paquetes de OpenSSH

Para configurar un servidor SFTP, debe tener los paquetes OpenSSH instalados en su sistema Linux. Casi todos los servidores de la distribución Linux tienen los paquetes OpenSSH instalados por defecto. Pero, en caso de que no tenga el paquete OpenSSH en su sistema, puede instalarlo desde el repositorio oficial.

1. Para asegurarse de que los paquetes de OpenSSH est√°n instalados en su sistema Linux, utilice el siguiente comando.

Para servidores Debian o Ubuntu, puede utilizar el comando dpkg que aparece a continuación.

dpkg -l | grep ssh

A continuación se muestra la salida de nuestro sistema Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        SSH2 client-side library
ii  openssh-client                1:8.4p1-5                      amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                1:8.4p1-5                      amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server           1:8.4p1-5                      amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

La primera columna ‘iisignifica que el paquete est√° instalado. El paquete ‘openssh-sftp-server’ est√° instalado en el sistema Debian/Ubuntu.

Para los usuarios de RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux, puede utilizar el comando rpm como se indica a continuación.

rpm -qa | grep ssh

Crear Grupo y Usuario

En este paso, usted creará un nuevo grupo y usuario para el servidor SFTP. Los usuarios de este grupo podrán acceder al servidor SFTP. Y por razones de seguridad, los usuarios de SFTP no pueden acceder al servicio SSH. Los usuarios de SFTP sólo acceden al servidor SFTP.

1. Ejecute el siguiente comando para crear un nuevo grupo ‘sftpgroup’.

sudo groupadd sftpgroup

2. Crea un nuevo usuario ‘sftpuser’ utilizando el siguiente comando.

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Opciones detalladas:

  • -G : a√Īade autom√°ticamente el usuario al ‘sftpgroup’.
  • -d : especifica el directorio de inicio para el nuevo usuario.
  • -s : establece el valor por defecto para el nuevo usuario como ‘/sbin/nologin’, lo que significa que el usuario no puede acceder al servidor SSH.

3. A continuaci√≥n, cree la contrase√Īa para el usuario ‘sftpuser’ utilizando el siguiente comando.

passwd sftpuser

Escribe tu contrase√Īa fuerte y repite, luego presiona ‘Enter’ para confirmar.

A√Īadir usuario y grupo sftpserver

Para a√Īadir m√°s usuarios, repita las etapas n√ļmero 2 y 3, y lo m√°s importante, todos los usuarios de SFTP deben estar en el grupo ‘sftpgroup’ sin acceso al shell a trav√©s de SSH.

Configurar el directorio Chroot Jail

Después de crear un nuevo grupo y usuario, debe crear y configurar el directorio chroot para los usuarios de SFTP.Anuncio

1. Para el usuario ‘sftpuser’, el nuevo directorio principal estar√° en ‘/srv/sftpuser’. Ejecuta el siguiente comando para crearlo.

mkdir -p /srv/sftpuser

2. Para configurar el chroot para el usuario ‘sftpuser’, debe cambiar la propiedad del directorio al usuario root, pero permanecer el grupo para leer y ejecutar sin acceso de escritura.

Cambia la propiedad del directorio al usuario ‘root’ usando el siguiente comando.

sudo chown root /srv/sftpuser

Dale al grupo permiso de lectura y ejecución, pero no de escritura.

sudo chmod g+rx /srv/sftpuser

3. A continuaci√≥n, crea un nuevo directorio ‘data’ dentro del directorio ‘/srv/sftpuser’ y cambia la propiedad de ese directorio ‘data’ al usuario ‘sftpuser’.

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

configurar la jaula de directorios chroot para stpuser

Hasta ahora, a continuación se detalla la configuración del directorio del usuario SFTP.

  • El directorio ‘/srv/sftuser’ es el directorio principal por defecto.
  • El usuario ‘sftpuser’ no puede escribir en el directorio ‘/srv/sftpuser’, pero puede leer dentro de ese directorio.
  • El usuario ‘sftpuser’ puede subir ficheros al servidor SFTP en el directorio ‘/srv/sftpuser/data’.

Habilitar SFTP en el servidor SSH

Para habilitar el servidor SFTP en el OpenSSH, debe editar la configuraci√≥n SSH ‘/etc/ssh/sshd_config’.

1. Edita la configuraci√≥n de ssh ‘/etc/ssh/sshd_config’ usando nano o vim.

sudo nano /etc/ssh/sshd_config

2. Comente la siguiente configuraci√≥n para desactivar la funci√≥n ‘sftp-server’ independiente.

#Subsystem      sftp    /usr/lib/openssh/sftp-server

3. Pegue la siguiente configuración en la parte inferior de la línea.

Subsystem sftp internal-sftp

Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp


Guarde la configuración y salga.

Configuración detallada:

  • En lugar de usar el subproceso ‘sftp-server’, estamos usando el ‘internal-sftp’.
  • El servidor SFTP est√° habilitado para el grupo ‘sftpgroup’.

4. Para aplicar la nueva configuración, reinicie el servicio ssh con el siguiente comando.

sudo systemctl restart sshd

El servidor SFTP est√° listo y accesible, y se ejecuta en el mismo puerto que el servicio SSH.Advertisement

Acceder al servidor SFTP

En el lado del cliente, usaremos la línea de comandos sftp, que está instalada por defecto en la mayoría de las distribuciones de Linux. Pero, también se puede utilizar otro cliente de línea de comandos o cliente FTP GUI como FileZilla, Cyberduck, etc.

1. Para conectarse al servidor SFTP, ejecute el comando sftp como se indica a continuación.

sftp [email protected]

Si su servidor SFTP y/o SSH se ejecuta en el puerto personalizado, puede utilizar el comando sftp como se indica a continuación.

sftp -P PORT [email protected]

Escriba la contrase√Īa para el ‘sftpuser’.

2. Una vez conectado al servidor SFTP, ejecute el siguiente comando.

Muestra el directorio de trabajo de la ruta actual y lista todos los archivos y directorios disponibles.

pwd
ls

Conectar al servidor sftps con el comando sftp

3. Suba un archivo local al servidor SFTP en el directorio ‘/‘, que resultar√° como ‘permiso denegado‘, porque es el directorio chroot.

put /path/to/file/on/local /

4. Suba un archivo local al directorio ‘/data/’ en el servidor SFTP. Si su configuraci√≥n es correcta, su archivo se subir√° al directorio ‘/data/’.

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

Verificar la lectura y escritura en sftpserver

5. Ahora verifique los archivos disponibles en el directorio ‘/data’ usando el siguiente comando.

ls /data/

Y ver√°s tu archivo cargado en el servidor SFTP.

Listado de todos los archivos en el servidor sftp

Conclusión

¡Enhorabuena! Ha configurado con éxito el servidor SFTP en el sistema Linux. Este tipo de configuración se puede aplicar en la mayoría de los sistemas Linux con OpenSSH instalado encima. Además, has aprendido a configurar el directorio chroot para los usuarios de SFTP y has aprendido el comando cliente sftp básico.

Deja una respuesta

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