Product SiteDocumentation Site

5.10. Paranoie generiche riguardo chroot e suid

chroot is one of the most powerful possibilities to restrict a daemon or a user or another service. Just imagine a jail around your target, which the target cannot escape from (normally, but there are still a lot of conditions that allow one to escape out of such a jail). You can eventually create a modified root environment for the user or service you do not trust. This can use quite a bit of disk space as you need to copy all needed executables, as well as libraries, into the jail. But then, even if the user does something malicious, the scope of the damage is limited to the jail.
Many services running as daemons could benefit from this sort of arrangement. The daemons that you install with your Debian distribution will not come, however, chrooted[42] per default.
Questi includono: server name (come bind), server web (come apache), server di posta (come sendmail) e server ftp (come wu-ftpd). Probabilmente è giusto dire che la complessità di BIND è il motivo per cui è stato esposto a molti attacchi in questi anni (vedete in Sezione 5.7, «Rendere sicuro BIND»).
Comunque, Debian fornisce del software che può aiutarvi a configurare ambienti chroot automaticamente. Vedete Sezione 5.10.1, «Creare ambienti chroot automaticamente».
Ad ogni modo se eseguite un qualsiasi servizio su un sistema, dovreste farlo nel modo più sicuro possibile. Questo comporta: revocare i privilegi di root, eseguirli in un ambiente sottoposto a restrizioni (come una gabbia creata con chroot) o sostituirli con servizi equivalenti più sicuri.
Tuttavia tenete conto fin d'ora che un ambiente creato con chroot può non essere sicuro se l'utente al suo interno è il superutente, per questo è necessario eseguire il servizio come utente non privilegiato. Limitando il suo ambiente limitate i file leggibili/eseguibili globalmente a cui il servizio può accedere e con questo le possibilità di una scalata ai privilegi sfruttando vulnerabilità relative alla sicurezza del sistema locale. Anche in questa situazione non si può essere completamente sicuri che non ci siano modi per una persona capace di uscire da questa gabbia in qualche modo. Usare solo programmi server che hanno la reputazione di essere sicuri è una buona misura precauzionale aggiuntiva. Anche buchi minuscoli come file di gestione aperti, possono esser usati da una persona capace per intromettersi nel sistema. Dopotutto chroot non è stato progettato come strumento per la sicurezza, ma come strumento di test.

5.10.1. Creare ambienti chroot automaticamente

Ci sono diversi programmi per ingabbiare automaticamente server e servizi in ambienti chroot. Al momento (accettato nel maggio 2002) Debian fornisce chrootuid di Wietse Venema nel pacchetto chrootuid, così come compartment e makejail. Potete usare questi programmi per configurare un ambiente con restrizioni ed eseguire qualunque programma (chrootuid permette addirittura di eseguirlo come un utente con restrizioni).
Alcuni di questi strumenti possono essere usati per configurare ambienti chroot in modo semplice. Il programma makejail, per esempio, può creare ed aggiornare una gabbia chroot con brevi file di configurazione (ne fornisce alcuni di esempio adatti per bind, apache, postgresql e mysql). Cerca di indovinare ed installare dentro la gabbia, tutti i file richiesti dal servizio, usando strace, stat e le dipendenze dei pacchetti Debian. Ulteriori informazioni sono reperibili presso http://www.floc.net/makejail/. Jailer è un programma simile che può essere scaricato da http://www.balabit.hu/downloads/jailer/ ed è anche disponibile direttamente come pacchetto Debian.


[42] It does try to run them under minimum priviledge which includes running daemons with their own users instead of having them run as root.