Creare un sistema con debootstrap e impostare chroot per un utente ssh

29 giugno 2017

Questa guida nasce dall’esigenza che ho avuto recentemente di permettere a un utente di collegarsi al mio computer tramite ssh. Debootstrap mi è venuto in aiuto.

La cosa che non mi andava a genio è che l’utente, nonostante avesse un suo account, potesse gironzolare liberamente nel mio sistema. Quindi ho cercato di risolvere questa situazione creando un ambiente “ingabbiato” o ancor meglio, “jailed” in cui l’utente finisce dopo il login.

Innanzitutto spieghiamo qualche concetto:

Debootstrap è uno strumento che permette di effettuare un’installazione base di Debian in una sottocartella di un sistema esistente. Non servono CD, basta poter accedere a un repository Debian. Può essere anche eseguito da un altro sistema operativo; così facendo è possibile installare Debian su una partizione non usata da un sistema come ad esempio Gentoo.

Chroot (change root) ci permette di cambiare la radice (/) che solitamente usa il kernel. In questo modo, installando il sistema in una cartella separata con debootstrap, si potrà dire che la root per l’utente pippo è in realtà /jailedenv.

Per prima cosa aggiorniamo il sistema utilizzando aptitude in maniera manuale o attraverso le sue opzioni:

Dopo di che installiamo i programmi che ci servono:

Installato tutto, è giunto il momento di installare Debian dentro Debian! Creiamo quindi la cartella nella quale installeremo il nostro sottosistema:

In questo modo verrà creata la cartella jailed nella radice (al posto di jailed potete usare il nome che volete). Dopo di che possiamo finalmente installare il sistema. Dovete scegliere qualche versione volete usare, io in questo esempio userò Wheezy (attuale testing):

Ora dobbiamo configurare /etc/fstab (ovviamente da root) perché faccia l’automount del filesystem proc e il device devpts. Aggiungiamo quindi al file (mi riferisco a /etc/fstab e non a /jailed/etc/fstab) le seguenti righe:

Fatto ciò montiamo il filesystem e il device (o in alternative fate un reboot):

Per configurare la rete dovrete copiare il file /etc/hosts in /jailed/etc/hosts:

Giunti a questo punto potete verificare che tutto funziona nel modo giusto chrottandovi (questi italianismi…) nel nuovo ambiente:

Noterete che non c’è modo di tornare all’ambiente padre, e per uscire, basterà usare il comando exit!

Ora vi consiglio di creare un utente per l’accesso tramite ssh:

Questo creerà nel file /etc/passwd la riga:

che voi dovrete modificare per farla diventare (togliendo quindi /jailed):

Dopo aver modificato la riga, copiatela in /jailed/etc/passwd

Ora vediamo come “imprigionare” l’utente “utente” nel nuovo ambiente. Aprite (sempre da root) il file /etc/pam.d/common-session e aggiungete la seguente riga:

In questo modo PAM supporta chroot. Come ultima cosa aprite il file /etc/security/chroot.conf:

E ora abbiamo finito. Quando l’utente “utente” si collegherà via ssh alla vostra macchina, si troverà in un ambiente protetto senza poter vedere i vostri file.

Faccio inoltre presente che se dovete installare dei programmi nell’ambiente jailed dovete:

  1. usare il vostro utente root
  2. charoottarvi nell’ambiente jailed (# charoot /jailed /bin/bash)
  3. installare
Fonte parziale

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *