Búsqueda de sitios web

Cómo restringir a los usuarios SFTP a directorios personales usando chroot Jail


En este tutorial, discutiremos cómo restringir a los usuarios de SFTP a sus directorios de inicio o directorios específicos. Significa que el usuario sólo puede acceder a su respectivo directorio de inicio, no a todo el sistema de archivos.

Restringir los directorios de inicio de los usuarios es vital, especialmente en un entorno de servidor compartido, para que un usuario no autorizado no eche un vistazo a los archivos y carpetas del otro usuario.

Importante: Tenga en cuenta también que el propósito de este artículo es proporcionar acceso SFTP únicamente, no inicios de sesión SSH. Si sigue este artículo, tendrá permisos para realizar transferencias de archivos. pero no se le permite realizar una sesión SSH remota.

Lectura sugerida: Restringir el acceso de usuarios SSH a determinados directorios mediante Chrooted Jail

La forma más sencilla de hacer esto es crear un entorno de cárcel chroot para acceso SFTP. Este método es el mismo para todos los sistemas operativos Unix/Linux. Al utilizar un entorno chroot, podemos restringir a los usuarios a su directorio de inicio o a un directorio específico.

Restringir usuarios a directorios personales

En esta sección, crearemos un nuevo grupo llamado sftpgroup y asignaremos la propiedad y los permisos correctos a las cuentas de usuario. Hay dos opciones para restringir a los usuarios a directorios de inicio o específicos; veremos ambas formas en este artículo.

Crear o modificar usuarios y grupos

Restringamos al usuario existente, por ejemplo tecmint, a su directorio de inicio llamado /home/tecmint. Para esto, necesita crear un nuevo grupo sftpgroup usando el comando groupadd como se muestra:

groupadd sftpgroup

A continuación, asigne el usuario 'tecmint' al grupo sftpgroup.

usermod -G sftpgroup tecmint

También puede crear un nuevo usuario usando el comando useradd, por ejemplo senthil y asignar el usuario al grupo sftpusers.

adduser senthil -g sftpgroup -s /sbin/nologin
passwd tecmint

Modificar el archivo de configuración SSH

Abra y agregue las siguientes líneas al archivo de configuración /etc/ssh/sshd_config.

Subsystem sftp internal-sftp
 
   Match Group sftpgroup
   ChrootDirectory /home
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Guarde y salga del archivo, reinicie el servicio sshd para que los nuevos cambios entren en vigor.

systemctl restart sshd
OR
service sshd restart

Si realiza chroot a varios usuarios en el mismo directorio, debe cambiar los permisos del directorio de inicio de cada usuario para evitar que todos los usuarios exploren los directorios de inicio de los demás usuarios.

chmod 700 /home/tecmint

Verificar el inicio de sesión de los usuarios SSH y SFTP

Ahora es el momento de verificar el inicio de sesión desde un sistema local. Intente realizar ssh su sistema remoto desde su sistema local.

ssh [email 

Aquí,

  1. tecmint: nombre de usuario del sistema remoto.
  2. 192.168.1.150 – Dirección IP del sistema remoto.
Salida de muestra:
[email 's password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

Luego, acceda al sistema remoto mediante SFTP.

sftp [email 
Salida de muestra:
[email 's password: 
Connected to 192.168.1.150.
sftp>

Comprobemos el directorio de trabajo actual:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

Aquí, tecmint es el directorio de inicio. Cd al directorio tecmint y cree los archivos o carpetas que desee.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

Restringir usuarios a un directorio específico

En nuestro ejemplo anterior, restringimos los usuarios existentes al directorio de inicio. Ahora veremos cómo restringir un nuevo usuario a un directorio personalizado.

Crear grupo y nuevos usuarios

Cree un nuevo grupo sftpgroup.

groupadd sftpgroup

A continuación, cree un directorio para el grupo SFTP y asigne permisos para el usuario root.

mkdir -p /sftpusers/chroot
chown root:root /sftpusers/chroot/

A continuación, cree nuevos directorios para cada usuario, a los que tendrá acceso completo. Por ejemplo, crearemos el usuario tecmint y su nuevo directorio de inicio con el permiso de grupo correcto usando la siguiente serie de comandos.

adduser tecmint -g sftpgroup -s /sbin/nologin
passwd tecmint
mkdir /sftpusers/chroot/tecmint
chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
chmod 700 /sftpusers/chroot/tecmint/

Configurar SSH para acceso SFTP

Modifique o agregue las siguientes líneas al final del archivo:

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Guardar y salir del archivo. Reinicie el servicio sshd para que los cambios guardados surtan efecto.

systemctl restart sshd
OR
service sshd restart

Eso es todo, puede comprobarlo iniciando sesión en su servidor SSH y SFTP remoto siguiendo el paso proporcionado anteriormente en Verificar inicio de sesión SSH y SFTP.

Tenga en cuenta que este método deshabilitará el acceso al shell, es decir, no podrá acceder a la sesión del shell del sistema remoto mediante SSH. Solo puede acceder a los sistemas remotos a través de SFTP y realizar transferencias de archivos hacia y desde los sistemas locales y remotos.

Conclusión

Ahora ya sabe cómo restringir los directorios de inicio de los usuarios utilizando un entorno Chroot en Linux. Si encuentra esto útil, comparta este artículo en sus redes sociales y háganos saber en la sección de comentarios a continuación si existe algún otro método para restringir los directorios de inicio de los usuarios.