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:
- Comentar la línea predeterminada del subsistema SFTP:
# Subsystem sftp /usr/libexec/openssh/sftp-server
- Habilitar el subsistema interno SFTP:
Subsystem sftp internal-sftp
- 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:
- Establecer permisos del directorio raíz:
chown root:root /var/www/sftp/user
chmod 755 /var/www/sftp/user
- 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
.
- Crear el directorio
.ssh
:mkdir -p /var/www/sftp/user/.ssh
chmod 700 /var/www/sftp/user/.ssh
- 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 deroot
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.