# Guía para Enjaular Usuarios FTP con SFTP

- Link: https://binariocero.com/linux/guia-para-enjaular-usuarios-ftp-con-sftp
- Published: 2024-12-04T15:54:35+01:00
- Author: Binario 0

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

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:

    ```wp-block-preformatted
    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:

    ```wp-block-preformatted
    useradd -g sftpusers -d /user -s /sbin/nologin userpasswd 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:

    ```wp-block-preformatted
    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:

    ```wp-block-preformatted
    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.
