Il software è come il sesso, è meglio quando è libero. (Software is like sex, it's better when it's free).
OpenSSH è lo strumento per la connessione a sistemi remoti più utilizzato negli ambienti Linux: è sicuro, veloce e facile da installare. Un utente che si collega ad un Server attraverso ssh effettua un vero e proprio login nel sistema ed ha pieno accesso alle funzionalità che questo offre.
Su alcuni sistemi può però nascere l’esigenza di dover garantire l’accesso ssh ad utenze non privilegiate, che non abbiano cioè la possibilità di aggirarsi per il sistema. Certo una gestione oculata dei permessi di accesso ed esecuzione ai file critici può bastare per proteggersi, ma esiste una via più radicale per affrontare la questione, si tratta cioè della creazione di una gabbia che consenta all’utente l’utilizzo del sistema limitato ai comandi ed ai file definiti dall’amministratore : il chroot di ssh.
Il termine chroot (CHange ROOT) indica una forma di accesso diversa dallo standard, in un sottosistema generalmente contenente un numero di directory ed un set di comandi limitato.
Gli ambienti chroot vengono impiegati laddove si ha la necessità di far girare dei servizi in sicurezza in modo che se questi vengono in qualche modo violati, non consentono all’attaccante di aggirarsi per il sistema.
Il concetto di chroot applicato ad ssh si basa sulla stessa filosofia: restringere il set di file visionabili e comandi eseguibili i attraverso una gabbia, un filesystem ridotto all’essenziale.
Per utilizzare il chroot con ssh è necessario applicare una patch ai sorgenti originali del pacchetto openssh creata da Ricardo Cerqueira e mantenuta da James Dennis.
Tale patch modifica il comportamento in cui il demone openssh legge le informazioni dell’account dal file di sistema /etc/passwd. Infatti il codice aggiunto prevede che se nella home directory dell’utente che vuole effettuare il login esiste un carattere “.” (punto), allora prima di proseguire con la direzione della console alla homedir viene invocato il comando chroot sulla directory precedente il punto.
Questo significa, ad esempio, che se è stato costruito un ambiente chroot nella directory /chroot ed esiste un utente foo la cui homedir è /chroot/./home/foo, questo effettuerà il login nell’ambiente chroot creato sotto /chroot che corrisponderà per l’utente a / e la directory in cui si troverà sarà /home/foo.
Grazie a questa funzionalità sarà semplice separare utenti privilegiati da utenti “carcerati” all’interno della gabbia /chroot.
La procedura descritta si riferisce alla compilazione del pacchetto openssh in Debian Etch 4.0.
Per predisporre il sistema a compilare sorgenti e generare pacchetti è necessario installare i due pacchetti (e le dipendenze ad essi correlate) build-essential e devscripts:
apt-get install build-essential devscripts
apt-get source openssh
wget http://chrootssh.sourceforge.net/download/osshChroot-4.2p1.diff
cd openssh-4.3p2/
patch -p1 < ../osshChroot-4.2p1.diff
openssh (1:4.3p2-9chroot) unstable; urgency=high
[ RaSca ]
- chroot patch
– root <root@debian.testlan.local> Wed, 6 Feb 2008 16:00:08 +0100
apt-get build-dep openssh
debuild
cd ..
ls -1 *.deb
openssh-client_4.3p2-9_i386.deb
openssh-server_4.3p2-9_i386.deb
ssh_4.3p2-9_all.deb
ssh-askpass-gnome_4.3p2-9_i386.deb
ssh-krb5_4.3p2-9_all.deb
e potranno essere installati nel sistema attraverso il comando dpkg :
dpkg -i ssh_4.3p2-9chroot_all.deb openssh-client_4.3p2-9chroot_i386.deb openssh-server_4.3p2-9chroot_i386.deb
| Attachment | Size |
|---|---|
| create_chroot_scripts.tar | 10 KB |
Recent comments
9 hours 6 min ago
6 weeks 1 day ago
9 weeks 6 days ago
11 weeks 3 hours ago
12 weeks 6 days ago
14 weeks 3 days ago
14 weeks 3 days ago
14 weeks 3 days ago
14 weeks 3 days ago
14 weeks 3 days ago