L'informatica non riguarda i computer più di quanto l'astronomia riguardi i telescopi.

— Edsger Wybe Dijkstra

SSH in CHROOT: Una gabbia per la shell sicura

http://www.stenoweb.it/files/blog/openssh.png 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.

Significato di chroot e sua applicazione alla shell sicura

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.

osshChroot : la patch per openssh

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.

Patching, compilazione e creazione del pacchetto openssh

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

Il sistema è pronto a compilare e produrre pacchetti, una volta reperiti i sorgenti di openssh attraverso il comando apt-get:
apt-get source openssh

E’ sufficiente scaricare la patch osshChroot tramite wget :
wget http://chrootssh.sourceforge.net/download/osshChroot-4.2p1.diff

Ed applicarla ai sorgenti:
cd openssh-4.3p2/
patch -p1 < ../osshChroot-4.2p1.diff

quindi attraverso la modifica del file debian/changelog o attraverso il comando debchange inseriamo le note per questo pacchetto, che riguardano essenzialmente la patch per il chroot e che hanno questa forma:
openssh (1:4.3p2-9chroot) unstable; urgency=high
[ RaSca ]

  • chroot patch

– root <root@debian.testlan.local> Wed, 6 Feb 2008 16:00:08 +0100


prima di lanciare la compilazione dei sorgenti andranno soddisfatte tutte le dipendenze delle librerie del pacchetto openssh. Attraverso l’opzione build-dep del comando apt-get si può automatizzare questo processo:
apt-get build-dep openssh

E’ possibile quindi avviare la compilazione e generazione dei pacchetti attraverso il comando debuild:
debuild

I pacchetti verranno generati nella directory sottostante quella dei sorgenti:
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

AllegatoDimensione
create_chroot_scripts.tar10 KB

Eventuali aggiornamenti di openssh come andrebbero installati?

Grazie

Credo che ci sia un problema con sourceforge... wget da errore 404 e anche da web dice group problem.

we ciao se vi serve la pack celo tutte
lasciate un messagio
ciao

Good day! This post
could not be written any better! Reading this post reminds
me of my good old room mate! He always kept talking about
this. I will forward this post to him. Pretty sure he
will have a good read. Many thanks for sharing!