Utenti carcerati [ Chroot + SSH + PAM ]
Analizziamo come ingabbiare gli utenti dentro un ambiente Chroot, limitandone l’uso di comandi messi a disposizione dal sistema.
Prerequisiti:
Debootstrap ~> Bootstrap a basic Debian system
OpenSSH ~> OpenSSH SSH client (remote login program)
Libpam-chroot ~> Chroot Pluggable Authentication Module for PAM
1) Installazione DEBOOTSTRAP & OPENSSH
Da linea di comando ( Terminale ) lanciate il seguente comando :
# apt-get install deboostrap openssh-server
2) Installazione Sistema Debian con DEBOOTSTRAP
Per prima cosa bisogna creare una directory nella root principale ( / ) :
# cd /
# mkdir carcere
La cartella che abbiamo creato conterrà il sottosistema Debian o Ubuntu. Ora possiamo installare il sottosistema tramite il comando debootstrap :
# debootstrap –variant=minbase jaunty /carcere
Con questo comando gli stiamo dicendo di installare la versione minimale di Ubuntu Jaunty (9.04) dentro la cartella che voi avete creato nella root. Se volete informazioni sulle opzioni, lanciate man debootstrap.
3) Aggiungiamo PROC e SYSFS dentro il file FSTAB:
Aprite con un editor di testo il file fstab che si trova all’interno di /etc :
# vi /etc/fstab
Alla fine di questo file dovete aggiungere le seguenti righe :
proc-chroot /carcere/proc proc defaults 0 0
sysfs-chroot /carcere/sys sysfs defaults 0 0
4) Aggiungiamo DEVPTS dentro il file FSTAB del sottosistema:
Con un editor di testo editiamo il file FSTAB dentro /carcere/etc:
# vi /carcere/etc/fstab
Aggiungiamo la seguente riga
devpts /dev/pts devpts defaults 0 0
5) Compilazione & Installazione di LIBPAM-CHROOT :
Abilitate i repository sorgenti nel file /etc/apt/sources.list. Aggiornate la lista dei pacchetti :
# apt-get update
Aggiornata la lista scaricate il sorgente del file libpam-chroot:
# apt-get source libpam-chroot
# apt-get build-dep libpam-chroot
Entrate dentro la cartella libpam-chroot e sostituite nel file Makefile la seguente stringa :
CFLAGS=-fPIC -O2 -Wall -Werror -pedantic
con questa :
CFLAGS=-fPIC -O2 -Wall -Werror -pedantic -fno-stack-protector
Perfetto! Lanciate questi comandi :
# dpkg-buildpackage -uc -us
# dpkg -i libpam-chroot-[nuova-versione-del-pacchetto].deb
5) Montaggio PROC e SYSFS più copia dei file Hosts, Locale, Passwd & Group:
# mount proc-chroot
# mount sysfs-chroot
# cp /etc/hosts /carcere/etc/
# cp /etc/passwd /carcere/etc/
# cp /etc/group /carcerce/etc/
# cp /etc/default/locale /carcere/etc/
6) Aggangio della home di ogni utente dentro il carcere:
Ora dovete decidere quali utenti devono essere secondo voi i “carcerati” o le “guardie”. Ovviamente l’utente amministratore sarà una “guardia”. Se avete deciso quali ruoli assegnare, potete procedere con lo spostamento delle home di ogni utente carcerato. NON SPOSTATE LA HOME DELLA GUARDIA ( utente amministratore ).
# mv /home/nome_utente_carcerato /carcere/home/
Ora andate a modificare il file /etc/security/chroot.conf aggiungendo una riga per ogni utente carcerato, Esempio :
NOME_UTENTE_CARCERATO /carcere
Una volta aggiunti gli utenti carcerati, non dobbiamo dimenticarci di aggiungere una riga per la guardia ( utente amministratore ), ma al posto della sua home va messo lo Slash ( / ). Sempre all’interno del file /etc/security/chroot.conf aggiungete :
NOME_UTENTE_GUARDIA /
7) Attiviamo CHROOT dentro PAM.D :
Modificate il file /etc/pam.d/common-session aggiungendo la seguente riga :
session required pam_chroot.so
8) Ultimo passo :
Siamo alla fine del documento e prima di verificare se l’accesso tramite SSH, dovremo entrare, con il comando chroot, dentro la cartella carcere e montare il dispositivo devpts. Chroottiamoci dentro carcere :
# chroot /carcere /bin/bash
Una volta dentro lanciate il comando per montare il devpts e dopo uscite:
# mount devpts
# exit
Perfetto! Se tutto è andato per il verso giusto, allora potrete fare la prova a loggarvi in SSH con l’utente carcerato. Per verificare se l’utente è stato ingabbiato, una volta loggati verificate se esiste la cartella /carcere. Se non esiste allora siete stati INCARCERATI!
Maggio 17, 2009 a 3:23 PM
porca puttana! hai superato te stesso nella lunghezza e completezza di questo articolo ! quasi quasi copio e incollo sul mio ahahha si si dai! non sarai più unicoooooooooooo ahahahahahaha
Maggio 17, 2009 a 4:28 PM
Tnk ;)! Comunque presto ne arriverà un altro più potente di questo 😀 :D.
Maggio 18, 2009 a 11:28 PM
Te l’avevo detto che mi battevi sul tempo… vabbè però, tu parti avvantaggiato! 🙂
Complimenti, guida bellissima.
Come al solito!
Maggio 19, 2009 a 12:47 PM
Grazie Pmate ;)! Ne sto preparando una che scommetto resterai a bocca aperta 😀 😀 :D!