Con il rilascio di OpenSSH 4.9p1, non è più necessario fare affidamento su hack di terze parti o complicate configurazioni chroot per limitare gli utenti alle loro home directory o consentire loro l'accesso ai servizi SFTP.
modifica / etc / ssh / sshd_config (/ etc / sshd_config su alcune distribuzioni) e imposta le seguenti opzioni:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Assicurarsi che la direttiva "Match" sia alla fine del file. Questo dice a OpenSSH che tutti gli utenti nel gruppo sftp devono essere chrootati nella loro home directory (che% h rappresenta nel comando ChrootDirectory
Per tutti gli utenti che desideri chroot, aggiungili al gruppo sftp usando:
# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe
Il comando usermod sopra aggiungerà l'utente joe al gruppo sftp e imposterà la shell su / bin / false in modo che non possano assolutamente ottenere l'accesso alla shell. I comandi chown e chmod imposteranno le autorizzazioni necessarie per la directory. Con queste autorizzazioni impostate, l'utente potrà caricare e scaricare file, ma non può creare directory o file nella directory principale
Il chrooting degli account di shell è un po 'più complicato in quanto richiede che alcuni file di dispositivo e una shell siano disponibili nella home directory dell'utente. I seguenti comandi configureranno un sistema chroot di base su Mandriva Linux:
# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe
Con quanto sopra, l'utente joe può ssh in e sarà limitato al chroot. Sfortunatamente, questo non fa molto, ma ti dà un'idea di come può essere impostato. A seconda di ciò che si desidera fornire, sarà necessario installare librerie e binari aggiuntivi.
Creare un chroot
Installa i pacchetti dchroot e debootstrap.
Come amministratore (cioè usando sudo), crea una nuova directory per il chroot. In questa procedura, /var/chroot
verrà utilizzata la directory . Per fare ciò, digitare sudo mkdir /var/chroot
in una riga di comando.
Come amministratore, apri
/etc/schroot/schroot.conf
in un editor di testo. Digitare cd /etc/schroot
, seguito da gksu gedit schroot.conf
. Ciò ti consentirà di modificare il file.
Aggiungi le seguenti righe in schroot.conf
e quindi salva e chiudi il file. Sostituisci
your_username
con il tuo nome utente.
[lucid] description = Ubuntu Lucid location = / var / chroot priority = 3 users = your_username gruppi = sbuild root-groups = root
Apri un terminale e digita:
sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \
http://mirror.url.com/ubuntu/
Questo creerà una 'installazione' di base di Ubuntu 10.04 (Lucid Lynx) nel chroot. Il download dei pacchetti potrebbe richiedere del tempo. Nota: è possibile sostituire lucid con la versione di Ubuntu di propria scelta. Nota: è necessario modificare quanto sopra mirror.url.com
con l'URL di un mirror dell'archivio valido locale. Ora dovrebbe essere stato creato un chroot di base. Digitare sudo chroot /var/chroot
per passare a una shell di root all'interno del chroot.
Impostazione del chroot
Esistono alcuni passaggi di base che è possibile eseguire per configurare il chroot, fornendo servizi come la risoluzione DNS e l'accesso /proc
.
Nota: digitare questi comandi in una shell esterna al chroot.
Digitare quanto segue per montare il /proc
filesystem nel chroot (richiesto per la gestione dei processi):
sudo mount -o bind /proc /var/chroot/proc
Digitare quanto segue per consentire la risoluzione DNS dall'interno del chroot (richiesto per l'accesso a Internet):
sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
Pochissimi pacchetti sono installati di default in un chroot (anche sudo non è installato). Utilizzare apt-get install package_name
per installare i pacchetti.