Gentoo Logo

[ << ] [ < ] [ Home ] [ > ] [ >> ]


11. Il chroot e i server virtuali

Indice:

11.a. Il chroot

Il chroot per un servizio è un modo di limitare l'ambiente del servizio stesso (o dell'utente) per potere accedere solo dove si ha il permesso, e di non ottenere l'accesso (o le informazioni) che potrebbero portare all'accesso come root. Eseguendo il servizio come utente non root (nobody, apache, named) un attaccante può accedere solo ai file con i permessi di quell'utente. Questo significa che un attaccante non può ottenere l'accesso come root anche se i servizi dovessero avere un problema di sicurezza.

Alcuni servizi come pure-ftpd e bind hanno delle proprie caratteristiche per il chroot, e altri servizi non le hanno. Se il servizio le supporta, si devono usare, altrimenti si devono creare. Segue come creare un chroot con un esempio base, e lo si farà con bash (per una facile comprensione).

Creare la directory /chroot con mkdir /chroot. Trovare le librerie dinamiche con le quali è compilato bash (se è compilato con -static questo passo non è necessario):

Il seguente comando crea un elenco di librerie usate da bash.

Codice 1.1: Elenco delle librerie usate

# ldd /bin/bash
  libncurses.so.5 => /lib/libncurses.so.5 (0x4001b000)
  libdl.so.2 => /lib/libdl.so.2 (0x40060000)
  libc.so.6 => /lib/libc.so.6 (0x40063000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Ora si crei l'ambiente per bash.

Codice 1.2: Creare l'ambiente per il chroot per bash

# mkdir /chroot/bash
# mkdir /chroot/bash/bin
# mkdir /chroot/bash/lib

Copiare i file usati da bash (/lib) nella lib del chroot e copiare il comando bash nella directory bin del chroot. Questo crea lo stesso ambiente, con meno funzionalità. Dopo provare: chroot /chroot/bash /bin/bash. Se si ottiene un prompt con /, funziona. Altrimenti si otterrà il nome del file che manca. Alcune librerie condivise dipendono le une dalle altre.

Si noti che dentro al chroot non funziona niente tranne echo. Non ci sono altri comandi nell'ambiente del chroot oltre a bash, e echo è una funzionalità build-in.

Questo è praticamente lo stesso modo con cui si può creare un chroot per un servizio. La sola differenza è che i servizi a volte dipendono dai dispositivi e dai file di configurazione in /etc. Si deve copiarli (i dispositivi possono essere copiati con cp -a) nell'ambiente del chroot, modificare l'init script per poter usare il chroot prima di eseguirlo. Può essere difficile trovare quali dispositivi e file di configurazione sono necessari a un servizio. Viene in aiuto il comando strace. Avviare il servizio con /usr/bin/strace e cercare open, read, stat e forse connect. Si troverà un aiuto su quali file devono essere copiati. Ma nella maggior parte dei casi basta copiare il file passwd (modificare la copia e rimuovere gli utenti che non hanno niente a che fare con il servizio), /dev/zero, /dev/log e /dev/random.

11.b. User Mode Linux

Un altro modo per creare un ambiente più sicuro è quello di eseguire una macchina virtuale. Questa, come dice il nome, è un processo che si esegue all'inizio del sistema operativo reale, e fornisce un ambiente hardware e del sistema operativo che sembra essere quello dell'unica macchina. Il beneficio per la sicurezza è che se il server che si esegue sulla macchina virtuale viene compromesso, sarà interessato solo il server virtuale e non l'installazione reale.

Per ulteriori informazioni su come impostare il User Mode Linux consultare la guida User Mode Linux.


[ << ] [ < ] [ Home ] [ > ] [ >> ]


Stampa

Visualizza tutto

Aggiornato il 2 aprile 2010

Oggetto: Isolare i server.

Kim Nielsen
Autore

John P. Davis
Redazione

Eric R. Stockbridge
Redazione

Carl Anderson
Redazione

Jorge Paulo
Redazione

Sven Vermeulen
Redazione

Benny Chuang
Redazione

Sune Jeppesen
Redazione

Tiemo Kieft
Redazione

Zack Gilburd
Redazione

Dan Margolis
Redazione

Joshua Saddler
Redazione

Stefano Pacella
Traduzione

Cristiano Chiucchiolo
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.