Chroot Jail per OpenSSH

Avete bisogno di consentire l'accesso via ssh sul vostro server ad un utente ma siete intimoriti dal fatto che in qualche modo sia in grado di effettuare una scalata di privilegi fino all'utente root? Creando un accesso ssh in jail sara' possibile evitare che cio' accada!

Per la creazione del chroot jail utilizzeremo questo script
E' necessario eseguirlo come utente root e che siano installati sul sistema questi comandi:

which,chroot,sudo,dirname,awk

Vediamo adesso come creare un utente di nome 'luca' e configurarlo in jail:

1) Creiamo l'utente

adduser luca

2) Creiamo e configuriamo il jail

chmod 755 ./make_chroot_jail.sh

./make_chroot_jail.sh luca

N.B. Verra' modificata la home dell'utente che puntera' in /home/jail/home/luca quindi fate attenzione se state lavorando con un utente che ha dati nella propria home

A questo punto non vi resta che collegarvi via ssh.
La struttura del jail e' contenuta in /home/jail, dove troverete le librerie, i binari che l'utente puo' eseguire, ecc.
Di default e' concesso un set minimale di comandi, c'e' installato solamente:

bash  cp  ls  mkdir  mv  rm  rmdir  sh  su unix_chkpwd dircolors  groups  id  scp  ssh

Vediamo quindi come poter aggiungerne di nuovi. Per far cio' dobbiamo copiare nel jail sia i binari che le librerie utilizzate dall'applicazione. Per visualizzare le librerie da cui dipende un binario si utilizza 'ldd'. Nell'esempio di seguito viene aggiunto "gzip" al nostro jail:

Si vede quali librerie utilizza gzip

root@www.lucaercoli.it# ldd /bin/gzip
linux-vdso.so.1 =>  (0x00007fff689fe000)
libc.so.6 => /lib/libc.so.6 (0x00007f2760300000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2760653000)
/lib64/newlibrary.so.2 (0x00007f2760653fff)

Se non sono gia' presenti nel jail si copiano:

N.B.  linux-vdso.so.1 su amd64 e' una libreria virtuale parte del kernel quindi non dobbiamo preoccuparci di copiarla

libc.so.6 e' gia' presente in /home/jail/lib/libc.so.6

/lib64/ld-linux-x86-64.so.2 e' gia' presente in /home/jail/lib64/ld-linux-x86-64.so.2

/lib64/newlibrary.so.2 dovremo copiarla semplicemente con

cp /lib64/newlibrary.so.2 /home/jail/lib64/

Adesso non rimane che copiare il binario 'gzip' nel jail:

cp /bin/gzip /home/jail/bin/