Clark's Home page

Tecnicismi vari di un Sysadmin Linux ma anche qualcosa della sua vita

Chroot —

Chroot
chroot, contrazione di change root, è un metodo di sicurezza usato per isolare i limiti operativi di una applicazione.
Il nome deriva dal termine informatico root che indica la directory principale del sistema operativo in cui sono contenute tutte le altre directory.
Normalmente un software può accedere a tutti i dischi e le risorse del sistema operativo, compatibilmente con i permessi; l’operazione di chroot consiste nell’eseguire il programma bloccato dentro una sottodirectory, permettendogli di accedere solo alle risorse di cui ha strettamente bisogno. La sottodirectory in questione viene anchessa denominata chroot e deve contenere una copia (di solito un hard link) di tutti i file di sistema richiesti dal software. Nel caso di sistemi Unix è necessaria anche un copia dei device file a cui il programma deve accedere.
Normalmente se un hacker riesce a prendere il controllo di una applicazione, avrà tutti i privilegi associati all’applicazione e potrebbe essere in grado di compromettere la sicurezza dell’intero sistema, ad esempio installando un rootkit.
Al contrario se il programma compromesso si trova in un chroot non potrà uscire dal perimetro; potrà cambiare il contenuto di file del programma stesso, ma senza poter accedere ad altre risorse.
Normalmente le funzioni necessarie a mettere in pratica il chroot sono implementate direttamente nel kernel del sistema operativo.

Con Debian un buon sistema di realizzare un ambiente chrooted è usare debootstrap, debootstrap permette di installare debian in un sistema senza disco di installazione ma anche di creare in modo molto semplice degli ambienti chroot.
L’utilizzo di questi due programmi permette in modo relativamente semplice di mettere in produzione dei servizi sicuri limitando i danni in caso di intrusione.
Questa realizzazione è stata fatta usando una Squeeze (attualmente stable) in cui e’ stata installata una squeeze, scelta che a prima vista puo’ sembrare bizzarra ma e’ dettata dalla necessita’ di usare stable per la successiva configurazione dei servizi.
La macchina su cui è stata installata Squeeze e’ un vecchio server Dell Poweredge T100 che in seguito è stata usata per mettere in produzione un server FTP.

Durante il setup della macchina che al solito ha il nome di una nave della flotta della Marina Italiana (Grecale) oltre alle consuete è stato creata una partizione con  mount point /jail, e questo sarà più chiaro nella parte relativa al server FTP in /etc/fstab /jail appare in questo modo:
UUID=ec765a5c-42c0-41d9-91cb-27405f7eed14 /jail           ext3    defaults,acl    0       2
in altre parole su questo filesystem imponiamo la condizione che le ACL Posix abbiano effetto.
Una volta finito il setup base che comprende anche un server ssh per poter raggiungere la macchina da remoto,una volta installato col solito apt-get install debootstrap per debootstrap, definiamo per comodita’ una variabile che indichi la nostra directory
export MY_CHROOT=/jail
quindi con:
grecale:/#debootstrap  –arch i386 squeeze $MY_CHROOT \ http://ftp.it.debian.org/debian
andiamo a installare un sistema minimale nella partizione  assegnata.
Dopo aver atteso che l’installazione abbia terminato,si modifica il file /etc/fstab con:
echo “proc $MY_CHROOT/proc proc defaults 0 0” >> /etc/fstab
echo “sysfs $MY_CHROOT/sys sysfs defaults 0 0” >> /etc/fstab
e montiamo con:
mount proc $MY_CHROOT/proc -t proc
mount sysfs $MY_CHROOT/sys -t sysfs
Configuriamo un minimo di networking nel sistema chroot con un
grecale:/# cp /etc/hosts $MY_CHROOT/etc/hosts
a questo punto si puo’ attivare l’ambiente chroot con:
chroot $MY_CHROOT /bin/bash
Il comando ci trasferisce’ nell’ambiente chrootato e possiamo ad esempio installare vim che serve sempre, N.B. al apt-get-install vim che si tirera’ dietro tutte le necessarie dipendenze  dira’  che i pacchetti non possono essere autenticati dare y per continuare.
Seguendo questa procedura abbiamo un chroot di squeeze aggiornato e funzionante.
Nota a margine
ovviamente con questo sistema al primo reboot della macchina il/i servizi/o che girano chrootati non saranno più disponibili quindi bisogna mettere in avvio di macchina un “qualcosa” che li faccia partire nello specifico ho risolto con questo script chroot_start messo nella /etc/init.d superiore cioè non chrootata che provvede a entrare nella chroot e a chiamare un altro script (jail) nell’ambiente chroot che a sua volta alza i/il  servizi/o che serve


Categorised as: Linux | Sistemi operativi | Work

Comments are disabled on this post


Comments are closed.