Sftp con Rssh e Chroot su Mandriva 2007
ByL’obiettivo è di avere account utente su mandriva 2007 che accedono via sftp solo ad alcune cartelle del file system su protocollo SFTP.
Questo si ottiene facilmente su protocollo FTP, per esempio con proFTTD, che ha la funzione nativa di chrootare gli utenti ftp. Tuttavia ho scartato il protocollo ftp per ovvi motivi di bassa sicurezza.
OpenSSH che fornisce anche un sftp-server invece non ha la funzione nativa di chroot per gli utenti sftp e così è necessario fare un bel casino per ottenere di non far gironzolare gli utenti per il file system.
Una volta installato OpenSSH e aver abilitato l’sftp (di solito lo è di default), si installa rssh, disponibile come RPM su mandriva 2007.
Si crea quindi un nuovo utente linux (o si modifica un utente esistente che si desidera chrootare), e si edita il file /etc/passwd dandogli come shell proprio rssh al posto di bash:
nomeutente:x:502:503::/home/nomeutente:/usr/bin/bash
diventa
nomeutente:x:502:503::/home/nomeutente:/usr/bin/rssh
Quindi si edita il file /etc/rssh.conf scommentando questa riga:
allowsftp
e impostando la chroot, esempio:
chrootpath = /percorso-che-si-desidera-come-root-del filesystem
Fatto questo viene impedito l’accesso shell via ssh all’utente e ne viene consentito solo l’accesso via sftp. Accedendo però via sftp l’utente si trova un filesystem vuoto senza cartelle. Gli va ricreato un piccolo ambiente con librerie e altri file proprio nella chroot.
Questo compito viene assolto da uno script, mkchroot.sh, che però misteriosamente non è incluso nell’RPM di mandriva 2007.
Lo si può recuperare dall’RPM di un’altra distribuzione, per esempio questo.
Lo si scarica, ma anziché installarlo lo si apre come archvio e si estrae il file mkchroot.sh nella cartella:
/usr/share/doc/rssh-2.3.2/
e magari lo si rende eseguinbile con un
chmod 755 (eseguito come root)
All’interno del file, vanno modificati i percorsi di alcuni file, ovvero i riferimenti a rssh e openssh devono diventare così:
sftp_server_path=”/usr/lib/ssh/sftp-server”
rssh_path=”/usr/bin/rssh”
chroot_helper_path=”/usr/lib/rssh_chroot_helper”
Quindi si lancia lo script:
./mkchroot.sh /percorso-che-si-desidera-come-root-del filesystem
che crea tutta una serie di cartelle e di file proprio nella chroot.
Fatto questo, va copiata nella chroot l’intera cartella /lib/ di sistema. Metodo grezzo, ma non facendo così poi l’accesso non funziona.
Da ultimo, se provando ad accedere in sftp con l’utente chrootato si ottiene un connection close, lanciare questo comando:
mknod -m 666 /percorso-che-si-desidera-come-root-del filesystem/dev/null c 1 3
A questo punto l’utente chrootato può accedere via sftp senza andare a rompere i coglioni in giro per il file system.
Ringrazio caldamente me stesso per aver trovato questa soluzione e tutti quelli (tanti) di cui ho raccolto i suggerimenti a pezzi, ma nessuno aveva a che fare con Mandriva 2007.

11 Commenti
novembre 30th, 2006 at 14:44
modesto, come sempre…eh?
deb
novembre 30th, 2006 at 14:53
A questo punto l’utente chrootato può accedere via sftp senza andare a rompere i coglioni in giro per il file system.
bella storia. Non ho idea di cosa voglia dire ma bella storia. Bravo Massj.
novembre 30th, 2006 at 20:39
Detta così sembra che hai compiuto chissà quale impresa…
novembre 30th, 2006 at 21:29
Per me questo post è arabo
novembre 30th, 2006 at 22:06
Alex: Beh, dal mio punto di vista ho compiuto un’impresa, sono riuscito a far funzionare una cosa per nulla facile.
Forum e newsgroup sono pieni di gente che ha lo stesso problema, cioè chrootare ssh/sftp.
Sono i classici post lunghi tre chilometri con la spiegazione della configurazione e degli errori a cui nessuno o quasi risponde.
M.: il concetto è molto semplice. Una persona viene a casa tua e vuoi farla entrare solo in soggiorno ed evitare che giri per le altre stanze ma tu non hai le porte. Questo sistema fa questo, siccome le stanze non hanno porte, le rende invisibili, così nessuno ci va.
dicembre 1st, 2006 at 22:11
amore, complimenti..hanno pubblicato la tua scoperta nella guida di Mandriva!
Lo sapevo: sei un genio dell’informatica, altro che Bill Gates!
ti amo
deb
dicembre 1st, 2006 at 22:13
Peccato, fossi stato Bill Gates ora saremmo su una spiaggia tropicale.
dicembre 4th, 2006 at 13:20
mi sento un idiota. non capisco nulla del tuo testo informatico. ad esempio: cosa vuol dire 2007? e file? e percorsi?
mah.
dicembre 4th, 2006 at 14:58
eh, sapessi di quante cose sono ignorante io…
settembre 6th, 2007 at 09:02
ciao, io uso debian è ho risolto con debootstrap e libpam
l’unico problema che mi è rimasto è l’sftp che non funziona ora provo copiando nell’ambiente chrooted anche le librerie associate…. grazie per lo spunto
settembre 6th, 2007 at 09:35
Prego salvatore, molto probabilmente si tratta delle librerie non accessibili, di fatto l’utente può accedere solo a quello che c’è nella chroot, in bocca al lupo!