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
myusercon 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
myusercon el nombre de usuario:passwd myuser -
Abra el
sshd_configarchivo 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
sshdcomando 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
SFTPROOTEl directorio (el directorio de inicio que configuró cuando agregó el usuario de SSH) tiene el derechouser:root group:rootpermisos 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
myusercon 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 -alEl 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.phpNota :Usa el
cdcomando para ir al directorio HTML (que se encuentra en/var/www/vhosts/mywebsite.com/htmlporque el sitio web 'documentroot' está un nivel por debajo delrootdel usuario SSH SFTP directorio. Debería usar esta configuración porque suwww-datalos usuarios (los usuarios del servidor web) tienen raízuser:grouppermisos 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: /htmlSFTP 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.