~sergio
ARTIGOSSFTP Chroot
06-06-2024
Ou como crear unha «xaula» para que un usuario solo poida acceder mediante SFTP a un determinado directorio. Moi útil para facer backups, por exemplo.
Configuración:
- O primeiro é crear un grupo para os usuarios que van usar este servicio:
groupadd sftponly
- Crear o directorio pai para o enxaulado. Ten que ser root o propietario e non ter ninguén mais permisos de escritura (man sshd_config dixit):
mkdir /jails chown root: /jails chmod 755 /jails
- Crear o usuario que se vai usar para acceder.
useradd -g sftponly -s /bin/false -m -d /home/copias copias
Tamén fai falta crear o directorio «home» relativo ó chroot:
mkdir -p /jails/home/copias chmod 755 /jails/home/copias chown copias: /jails/home/copias
Non te esquezas de poñerlle unha contrasinal ó usuario «copias»:
passwd copias
Ou subir unha clave pública, que ten que estar no «home» de fora do chroot:
echo "ssh-ed25519 AAAAC3NzaC1lZ...vDb2R/" >> /home/copias/.ssh/authorized_keys
- Ahora solo falta configurar o SSH. Editando o arquivo /etc/ssh/sshd_config comproba que a liña seguinte exista ou non esteña comentada:
Subsystem sftp internal-sftp
E logo, ó final do arquivo engade o seguinte:
Match Group sftponly ChrootDirectory /jails ForceCommand internal-sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Restart do ssh e listo:
/etc/rc.d/sshd restart
Comprobación
Solo falta probalo:
sftp -i .ssh/id_ed25519 copias@example.net: Enter passphrase for key '.ssh/id_ed25519': Connected to example.net. Changing to: /home/copias/. sftp> ls -l sftp> put test.txt Uploading test.txt to /home/copias/test.txt test.txt 100% 8 0.3KB/s 00:00 sftp> ls -l -rw-r--r-- ? 1014 1015 8 Jun 6 11:27 test.txt sftp> exit
Conclusiós
Así queda configurado o sistema para que certos usuarios poidan utilizalo como almacenamento sin dar acceso a todo o sistema. Desta maneira poderemos abandonar protocolos inseguros como o FTP.
Ala! Ata a sega!