Este artículo le muestra cómo crear usuarios protegidos del Protocolo de transferencia de archivos SSH (SFTP) que están restringidos o encarcelados en sus directorios de inicio.
ADVERTENCIA :No intente encarcelar al usuario root. Solo encarcele a los usuarios adicionales para que no impida que el usuario raíz realice operaciones correctamente.
Antes de comenzar, revise las siguientes prácticas recomendadas:
-
El directorio de inicio del usuario SFTP debe ser propiedad de
root:root
. Otros directorios pueden (y deberían) ser propiedad (y escritura) del usuario. -
Es importante asegurarse de que el usuario chroot tenga acceso de escritura al DocumentRoot especificado.
-
Es importante iniciar sesión y comprobar que el usuario SFTP funciona correctamente.
-
Es importante asegurarse de que el usuario SFTP agregado se agregue al grupo SFTP.
-
Estas instrucciones son para agregar un solo dominio (usuario de SFTP), pero podría usarlas potencialmente para administrar varios dominios.
Importante Nota:Los pasos de este artículo no funcionan con RHEL® 7 o CentOS® 7. Al igual que con cualquier operación chroot adecuada, esta configuración no proporciona acceso de escritura al directorio chroot. Solo se pueden escribir los subdirectorios de la cárcel chroot. Esto se debe a la forma en que se interpretan los permisos raíz en los directorios de nivel superior en los que se encuentra el usuario SFTP.
Utilice los siguientes pasos para crear usuarios SFTP seguros que estén encarcelados en sus directorios de inicio:
-
Agregue el grupo SFTP que desea usar para el acceso SFTP ejecutando el siguiente comando:
groupadd sftponly
-
Agregue el usuario SFTP ejecutando el siguiente comando, reemplazando
myuser
con el nombre de usuario:useradd -d /var/www/vhosts/domain.com -s /bin/false -G sftponly myuser
-
Cree una contraseña para el usuario ejecutando el siguiente comando, reemplazando
myuser
con el nombre de usuario:passwd myuser
-
Abra el
sshd_config
archivo que contiene la configuración de SSH y SFTP ejecutando el siguiente comando:nano /etc/ssh/sshd_config
-
Comente la siguiente línea agregando un símbolo de almohadilla (#) al principio, como se muestra en el siguiente ejemplo:
#Subsystem sftp /usr/lib/openssh/sftp-server
-
Agregue la siguiente línea directamente debajo de la línea que acaba de comentar:
Subsystem sftp internal-sftp
-
Agregue el siguiente código al final del archivo:
Match Group sftponly ChrootDirectory %h X11Forwarding no AllowTCPForwarding no ForceCommand internal-sftp
-
Ejecute el
sshd
comando para probar los cambios, luego reinicie el servicio.Importante :Si este paso se realiza incorrectamente, podría romper su configuración SSHD.
sshd -t service sshd restart
Asegúrese de que los permisos de archivo en el sistema de archivos sean correctos
A continuación, debe verificar que los permisos de archivo en el sistema de archivos sean correctos para que la cárcel SFTP funcione correctamente.
-
Verifique que
SFTPROOT
El directorio (el directorio de inicio que configuró cuando agregó el usuario de SSH) tiene el derechouser:root group:root
permisos ejecutando el siguiente comando:chown root:root /var/www/vhosts/mywebsite.com/
-
Para verificar que el inicio de sesión de SFTP funciona, conéctese a SFTP ejecutando el siguiente comando, reemplazando
myuser
con el usuario que hayas elegido, como se muestra en el siguiente ejemplo:sftp myuser@localhost myuser@localhost's password: Connected to localhost.
-
Pruebe la lista de directorios ejecutando el siguiente comando:
sftp> ls -al
El resultado debe ser similar al siguiente ejemplo:
drwxr-xr-x 3 0 0 4096 Sep 28 08:09 . drwxr-xr-x 3 0 0 4096 Sep 28 08:09 .. drwxr-xr-x 2 5001 33 4096 Sep 28 08:52 html -rw-r--r-- 1 0 0 0 Sep 28 08:09 test.php
Nota :Usa el
cd
comando para ir al directorio HTML (que se encuentra en/var/www/vhosts/mywebsite.com/html
porque el sitio web 'documentroot' está un nivel por debajo delroot
del usuario SSH SFTP directorio. Debería usar esta configuración porque suwww-data
los usuarios (los usuarios del servidor web) tienen raízuser:group
permisos en sus archivos. -
Pruebe la capacidad de cargar archivos ejecutando los siguientes comandos:
sftp> cd html sftp> put test.php Uploading test.php to /html/test.php test.php 100% 12K 20.0KB/s 00:00
-
Pruebe la capacidad de descargar archivos ejecutando el siguiente comando:
sftp> get test.php Fetching /test.php to test.php
-
Muestre el directorio de trabajo actual ejecutando el siguiente comando:
sftp> pwd Remote working directory: /html
SFTP solo ve los archivos en
/var/www/vhosts/mywebsite.com/
y considera este directorio como el directorio raíz ('/') de más alto nivel. -
Utilice los siguientes pasos para conectarse a SFTP y configurar su cliente SFTP:
- Instala Cyberduck®.
- Abra la aplicación Cyberduck.
- En la parte superior de la ventana, haga clic en el icono de Abrir conexión .
- En el menú desplegable, seleccione SFTP (Protocolo de transferencia de archivos SSH) .
- En el Servidor campo, ingrese la dirección del Protocolo de Internet (IP) para el servidor.
- Ingrese el nombre de usuario y la contraseña que usa para conectarse a SFTP.
- Haga clic en Conectar .
Importante :siempre pruebe su sitio web después de cambiar los permisos de archivo.