Configurazione di OPENBSD (5.6) in ambiente Chroot

chrootLa “funzionalità” di chroot letteralmente Change-Root è tipica dei sistemi Linux e può essere implementata per l’esecuzione di svariati servizi, dove questi sono eseguiti in un contesto differente rispetto al reale.

Viene ad essere modificate la root relativa al servizio in esecuzione simulando quella reale.

In questo modo se un servizio dovesse presentare alcune vulnerabilità, anche sfruttandole e quindi ottenendo l’accesso al sistema, ci si ritroverebbe in un ambiente diverso a quello che realmente permette l’esecuzione del servizio stesso.

Più semplicemente potremmo eseguire diversi servizi su un’unica installazione di base, isolandoli l’uno dall’altro.

Tuttavia l’adozione della funzione di chroot non è da considerarsi da sola come risolutiva di bug di sicurezza,(https://securityblog.redhat.com/2013/03/27/is-chroot-a-security-feature/)   sono sempre necessari tutti vari accorgimenti al fine di rendere un sistema “sicuro”. L’installazione di patch di sicurezza, l’adozione di software compilati con le opzioni realmente necessarie, l’impostazione puntuale dei premessi sulle varie directory, sono solo alcuni accorgimenti utili.

In questo caso sono illustrati i passi necessari al fine di realizzare una struttura chroot a partire da una cartella /chroot su un sistema OPENBSD, questo ambiente è poi utilizzato per la compilazione e la configurazione di  servizi quali SQUID, BIND, etc.

Si presume che il sistema operativo “base”, ossia una installazione di Openbsd sia già operativa e configurata,

A questo punto, utilizzando  una nuova partizione, è necessario tramite le opzioni proprie del sistema operativo, crearla, formattarla ed effettuare il mount sul percorso /chroot da ora in poi questo diventa il nuovo percorso di “/” per la successiva installazione su cui andrà compilato SQUID.

Nel dichiarare il mount in /etc/fstab è necessario specificare che questo dovrà avvenire senza le opzioni  nodev e nosuid

  • 814fb7ccfd84e045.l /chroot ffs rw 1 2

Nella definizione del sistema operativo all’interno di /chroot dovranno essere ri-creati i vari device (in questo caso fittizi) utilizzati per il corretto funzionamento.

L’opzione di default relativa al mount non consente l’utilizzo di questi device nodes così come non consente l’impostazione del SUID SUID (Set owner User ID up on execution) bit dei vari files.

Effettuato il Mount con i parametri richiesti, bisogna scompattare l’intero contenuto dei vari files .tgz presenti nel CD di installazione

  • cd /chroot

estrazione di tutti i pakages dal cd del Sistema Operativo

  • tar -xzf /media/5.6/i386/base56.tgz  
  • tar -xzf /media/5.6/i386/etc56.tgz
  • tar -xzf /media/5.6/i386/comp56.tgz
  • tar -xzf /media/5.6/i386/xbase56.tgz
  • tar -xzf /media/5.6/i386/xshare56.tgz
  • tar -xzf /media/5.6/i386/xetc56.tgz
  • tar -xzf /media/5.6/i386/xfont56.tgz
  • tar -xzf /media/5.6/i386/xserv56.tgz

A questo punto sono state ricreate in /chroot tutte le cartelle presenti in “/”,bin,etc,var…… etc.

Come accennato prima, relativamente ai device, è necessario che vengano ricreati, eseguendo il comando MAKEDEV all.

  • cd dev
  • ./MAKEDEV all
  • cd

Per rendere l’ambiente chroot autonomo nella risoluzione DNS bisogna copiare in /etc ( /chroot/etc ) il file resolv.conf presente nella “/” del Sistema operativo principale

  •  cp /etc/resolv.conf etc/

L’ultimo passo per terminare la configurazione dell’ambiente è la creazione tramite ldconfig del file  /var/run/ld.so.hints  che a partire dai percorsi passati come parametro al comando crea i riferimenti per la librerie utilizzate dai vari servizi.

  • chroot /chroot ldconfig /usr/lib /usr/local/lib /usr/X11R6/lib

La configurazione è terminata per accedere al nuovo ambiente “chroot-ato” è sufficiente eseguire

  • chroot /chroot su -l

La  shell, e quindi l’ambiente a cui si accede è di fatto un ambiente “al di sotto” dell’ambiente che ha eseguito il boot, quindi se dovessimo, come potrebbe essere necessario fare, creare un utente, il comando useradd creerebbe uno user in questo contesto e l’ambiente “padre” non ne vedrebbe l’esistenza. Anche nell’elencare le permission sui files, queste se viste dalla root presenterebbero come owner il solo ID.

Al fine di evitare confusioni è utile modificare il prompt del sistema in modo che informi con esattezza dell’ambiente su cui si sta operando

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...