Dato che l'amministrazione di sistema è un compito difficile e gravoso, sono stati sviluppati molti strumenti potenti per rendere la vita più semplice per l'amministratore. Questi strumenti forniscono aiuti di vario genere nel modo in cui i sistemi sono installati, configurati e quindi manutenuti. Parte dei compiti che un amministratore dovrebbe fare riguarda la corretta configurazione nell'ambito della sicurezza di un sistema, in modo tale da continuare a servire il suo vero intento, senza permettere violazioni di sistema.
Uno degli strumenti che possono essere usati per migliorare la sicurezza di FreeBSD
sono le jail. Le jail furono
introdotte con FreeBSD 4.X da Poul-Henning Kamp <phk@FreeBSD.org>
, ma furono notevolmente
migliorate in FreeBSD 5.X per renderle un sottosistema potente e flessibile. Il loro
sviluppo continua per migliorare la loro utilità, le prestazioni e la sicurezza.
I sistemi operativi BSD-like hanno avuto il chroot(2) dai tempi di 4.2BSD. L'utility chroot(2) può essere usata per cambiare la directory root di un insieme di processi, creando un ambiente sicuro e separato dal resto del sistema. I processi creati nell'ambiente chroot non possono accedere a file o risorse fuori da questo. Per questa ragione, compromettere un servizio che viene eseguito in un ambiente chroot non dovrebbe permettere all'attaccante di compromettere l'intero sistema. L'utility chroot(2) è utile per compiti semplici, che non richiedono molta flessibilità o caratteristiche complesse e avanzate. Tuttavia, dall'inizio del concetto di chroot, sono stati trovati diversi modi per uscire da un ambiente chroot, e, benchè siano stati fixati nelle versioni moderne del kernel di FreeBSD, è diventato chiaro che chroot(2) non era la soluzione ideale per rendere sicuri i servizi. Un nuovo sottosistema doveva essere implementato.
Queste sono alcune delle ragioni principali per cui le jail sono state sviluppate.
Le jail migliorano il concetto dell'ambiente chroot(2) tradizionale, in molti modi. In un ambiente chroot(2) tradizionale, i processi sono limitati solo nella porzione di file system che possono accedere. Il resto delle risorse di sistema (come l'insieme di utenti di sistema, i processi in esecuzione, o il sotto-sistema di rete) sono condivise dai processi in chroot e dai processi del sistema host (quelli non inseriti in un ambiente chroot). Le jail espandono questo modello virtualizzando non solo l'accesso al file system, ma anche l'insieme di utenti, il sotto-sistema di rete del kernel di FreeBSD e alcune altre cose. Un più completo insieme di controlli disponibili per calibrare l'accesso ad un ambiente jail è descritto nella Sezione 15.5.
Una jail è caratterizzata da quattro elementi:
Un sotto-ramo di una directory — il punto di partenza da cui si entra nella jail. Una volta all'interno della jail, ad un processo non è permesso di uscire da questo sotto-ramo. Le questioni tradizionali di sicurezza che colpiscono il design di chroot(2) originale non affliggono le jail di FreeBSD.
Un hostname — l'hostname che sarà usato all'interno della jail. Le jail sono principalmente usate per ospitare servizi di rete, quindi avere un nome host descrittivo per ogni jail può veramente aiutare l'amministratore di sistema.
Un indirizzo IP — questo sarà assegnato alla jail e non può essere cambiato in alcun modo durante l'arco di vita della jail. L'indirizzo IP di una jail è in genere un indirizzo alias di un'interfaccia di rete esistente, anche se questo non è strettamente necessario.
Un comando — il percorso di un eseguibile da avviare all'interno della jail. Questo è relativo alla directory root dell'ambiente della jail, e può variare molto, a seconda del tipo specifico di ambiente della jail.
Oltre a queste caratteristiche, le jail possono avere il loro insieme di utenti ed il loro utente root. Naturalmente, i poteri dell'utente root sono limitati all'interno dell'ambiente jail e, dal punto di vista del sistema host, l'utente root della jail non è il superuser. Inoltre, l'utente root di una jail non potrà eseguire operazioni critiche sul sistema al di fuori del suo ambiente jail(8). Altre informazioni sui poteri e sulle restrizioni dell'utente root saranno discusse nella Sezione 15.5.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.