Guía para Enjaular Usuarios FTP con SFTP

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Esta guía describe cómo configurar un entorno SFTP seguro en el que los usuarios estén "enjaulados" en directorios específicos, utilizando OpenSSH. Los pasos a continuación usarán el usuario ficticio "user" como ejemplo.

1. Crear un grupo para los usuarios SFTP

Se crea un grupo para agrupar a los usuarios SFTP:

groupadd sftpusers

2. Crear un usuario SFTP

El siguiente comando crea el usuario "user", lo asigna al grupo sftpusers, establece su directorio principal y deshabilita el acceso al shell:

useradd -g sftpusers -d /user -s /sbin/nologin user
passwd user

3. Configurar el servicio SFTP en OpenSSH

Edite el archivo de configuración de OpenSSH, normalmente ubicado en /etc/ssh/sshd_config. Cambie o añada las siguientes líneas:

  1. Comentar la línea predeterminada del subsistema SFTP:

    # Subsystem sftp /usr/libexec/openssh/sftp-server
  2. Habilitar el subsistema interno SFTP:

    Subsystem sftp internal-sftp
  3. Configurar la jaula para el grupo sftpusers:

    Match Group sftpusers
    ChrootDirectory /var/www/sftp/%u
    ForceCommand internal-sftp

4. Crear el directorio para el usuario

Cree la jaula donde estará contenido el usuario y su carpeta de trabajo:

mkdir -p /var/www/sftp/user/uploads

5. Ajustar permisos

Configure los permisos de los directorios para garantizar la seguridad:

  1. Establecer permisos del directorio raíz:

    chown root:root /var/www/sftp/user
    chmod 755 /var/www/sftp/user
  2. Asignar permisos al subdirectorio de carga:

    chown user:sftpusers /var/www/sftp/user/uploads
    chmod 755 /var/www/sftp/user/uploads

6. Reiniciar el servicio SSH

Reinicie el servicio SSH para aplicar los cambios:

service sshd restart

7. Opcional: Configurar claves SSH para el usuario

Si desea que el usuario se conecte mediante claves SSH, cree el directorio .ssh dentro del home del usuario y copie las claves públicas en un archivo llamado authorized_keys.

  1. Crear el directorio .ssh:

    mkdir -p /var/www/sftp/user/.ssh
    chmod 700 /var/www/sftp/user/.ssh
  2. Copiar la clave pública en authorized_keys:

    echo "CONTENIDO_DE_LA_CLAVE_PUBLICA" > /var/www/sftp/user/.ssh/authorized_keys
    chmod 600 /var/www/sftp/user/.ssh/authorized_keys
    chown -R user:sftpusers /var/www/sftp/user/.ssh

Notas importantes

  • Asegúrese de que el directorio definido como ChrootDirectory sea propiedad de root y no permita escrituras para otros usuarios.
  • Cada usuario tendrá un directorio de jaula único bajo /var/www/sftp.

Este procedimiento garantizará que los usuarios solo tengan acceso a sus propios directorios, sin posibilidad de navegar fuera de su jaula.