Enjaular usuarios con chroot
Enjaular por usuario
Vamos a limitar el acceso por sftp a un usuario para que solo pueda ver las carpetas correspondientes a su alojamiento web.
- Creamos un nuevo usuario
useradd -c "Acceso SFTP web" -d /var/www/misitio -s /usr/sbin/nologin juan
- -c Añadir un comentario a la hora de crear el nuevo usuario en el archivo /etc/passwd
- -d Especificar el directorio del nuevo usuario
- -s Tenemos que impedir que el nuevo usuario pueda hacer login en una shell
Establecemos una contraseña
passwd juanCreamos la estructura de carpetas
La carpeta principal sera misitio, dentro de ella crearemos la carpeta public_html (con todos los archivos de la web) y la carpeta backups (con las copias de seguridad de la web).
- /var/www
- /misitio
- /public_html
- /backups
- /misitio
mkdir /var/www/misitiomkdir /var/www/misitio/public_htmlmkdir /var/www/misitio/backups
- Asignamos permisos y usuarios
- Carpeta raíz /var/www
- Usuario root
- Permisos 755
chown root:root /var/wwwchmod 755 /var/www
- Carpeta raíz /var/www
- Subcarpeta /misito
- Usuario root*
- Permisos 755
- Subcarpeta /misito
chown root:root /var/www/misitiochmod 755 /var/www/misitio
- Subcarpeta /misitio
- Carpeta /public_html y /backups
- Usuario juan
- Grupo www-data (grupo por defecto de nuestro servidor web)
- Permisos 755
- Carpeta /public_html y /backups
cd /var/www/misitiochown -R juan:www-data ./*chmod -R 775 ./*
- Editamos el archivo sshd_config
nano /etc/ssh/sshd_config
Añadimos las siguientes lineas al final del documento.
# Acceso SFTP usuario juan
Match User juan
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/www/misitio/
AllowTcpForwarding no
MaxSessions 1
- Reiniciamos el servicio de ssh
service ssh restart
Ahora podemos Descargar Filezilla y comprobar que el usuario juan solo tiene acceso a sus dos carpetas public_html y backups.
Enjaular por grupo
Vamos a cada usuario de un grupo dentro de su propio directorio.
Creamos un nuevo grupo
addgroup alumnosCreamos un nuevo usuario
useradd -c "Acceso SFTP de los alumnos" -d /home/alumno01 -G alumnos -s /usr/sbin/nologin alumno01Cambiamos el propietario del directorio raiz /home/alumno01
chown root /home/alumno01Editamos el archivo sshd_config
Añadimos las siguientes lineas al final del documento.
Match Group alumnos
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
- Reiniciamos el servicio de ssh
service ssh restart