~sergio

ARTIGOS

SFTP 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!