Innanzitutto due parole sul chroot. Attivare il chroot su una connessione ssh, significa costringere un utente a restare all’intero della sua home directory senza porter andare a “spasso” sul server.
In pratica viene creato un ambiente contenente le librerie ed i programmi necessari all’utente, che sarà limitato ad operazioni solo all’interno di questo ambiente.
Dalla versione 4.8 di openssh è possibile attivare questa funzionalità sfruttando una direttiva interna chiamata ChrootDirectory.
Ipotizziamo di avere un utente chiamato test (gruppo test) per cui vogliamo attivare il chroot. Basta modificare il file /etc/ssh/sshd_config, aggiungendo:
Match User test ChrootDirectory /home/%u
e poi riavviare il server ssh con:
/etc/init.d/ssh reload
Per attivare anche sftp sembre per l’utente test (gruppo test), bisogna inserire in /etc/ssh/sshd_config:
Subsystem sftp /usr/lib/openssh/sftp-server
Match User test
ChrootDirectory /home/%u
AllowTCPForwarding no
X11Forwarding no
ForceCommand /usr/lib/openssh/sftp-serverA questo punto bisogna inserire nella root directory dell’utente i necessari files per far funzionare il chroot. Piuttosto che fare l’operazione a mano, vi segnalo un semplice script chiamato ssh-scp-sftp-chroot-jail (mirror locale forse non aggiornato) che consente di automatizzare questo processo, che altrimenti avremmo dovuto fare manualmente, cercando le librerie necessarie alla bash (con il comando ldd /bin/bash) e creare alcuni devices (es. /dev/null con mknod).
Scarichiamo lo script:
cd /usr/local/sbin wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh chmod 700 /usr/local/sbin/make_chroot_jail.sh
ed utilizziamolo:
make_chroot_jail.sh test /bin/bash /home/test
dove test sarà chiaramente l’utente per cui attivare il chroot
Attenzione: è buona norma modificare i permessi a 700 della home directory dell’utente per cui si è attivato il chroot .
Nota: nel caso sia necessario gestire opzioni particolari (es transfer rate in upload/download, limitare il numero di connessioni massime e per IP) vi consiglio di visionare http://mysecureshell.sourceforge.net/