Problemi di sicurezza chroot instabili Debian


2

Questa pagina descrive come usare l' debootstraputilità per installare un sistema instabile / sid Debian di base su una macchina Linux esistente. La nuova installazione è accessibile tramite chroot.

Nel fare ciò, quali problemi di sicurezza dovrebbero essere tenuti a mente? Ad esempio, cosa occorre fare per impedire l'avvio dei processi in background / avvio nel nuovo chroot o interferire in altro modo con il sistema principale?

Risposte:


2

Chroot da solo non offre alcun tipo di sicurezza. In altre parole, tratta un chroot come se i processi chroot potessero accedere a tutto sul sistema, perché spesso lo fanno. Vedi anche chroot "jail" - che cos'è e come si usa? - nota in particolare l'osservazione di Michael Mrozek

"Chroot Jail" è un termine improprio che dovrebbe davvero estinguersi

Chroot è un metodo di contenimento solo per i file ed è più una comodità che una funzionalità di sicurezza. Se si dispone di un processo che consente agli utenti non attendibili di specificare i nomi dei file (un server FTP, ad esempio), chroot è un modo per assicurarsi che gli utenti non possano fare riferimento direttamente ai file all'esterno del chroot. Dovresti assicurarti che il chroot non contenga alcun file che possa sfuggire; in particolare:

  • Inserisci solo il minimo indispensabile dei file del dispositivo ( /dev/*) nella chroot. Non /deveseguire il bind mount , ad esempio non si desidera bloccare i dispositivi lì. Solo mettere dispositivi tty ei dispositivi di dati diverse ( /dev/null, /dev/zero, /dev/urandom, ...).
  • Non montare /proc. Questo è un grande vincolo, ma /procespone molte informazioni in base alla progettazione. Ad esempio, se si dispone di un processo 1234 in esecuzione come un determinato utente all'esterno del chroot, qualsiasi processo (chroot o meno) può accedere alla directory principale come /proc/1234/root.

Un processo chroot può ancora inviare segnali a processi non chroot, aprire socket di rete, accedere alla memoria condivisa (su Linux, al giorno d'oggi, solo se /dev/shmdisponibile), ecc. Se si utilizza chroot per il contenimento, non eseguire alcun processo all'esterno il chroot come utente che sta eseguendo processi all'interno del chroot.

Chroot rimane un buon modo per eseguire una versione diversa dello stesso sistema operativo (con lo stesso kernel) ¹. Quando ci sono problemi di sicurezza, al giorno d'oggi ci sono strumenti migliori, in particolare jail FreeBSD e cgroup Linux e LXC . Rispetto ai vecchi tempi, anche la virtualizzazione completa (VirtualBox, KVM, ...) è diventata un'opzione più praticabile anche sull'hardware delle materie prime.

¹ A proposito, nella mia risposta ho spiegato come non avviare i servizi all'interno di un chroot Debian. Questo non è un problema di sicurezza e si presume che i servizi siano cooperativi e scritti correttamente.


Grazie! Creare policy-rc.d(come spieghi nell'altra tua risposta) tutto ciò che deve essere fatto per evitare che i processi (che non avvii esplicitamente) vengano eseguiti nel chroot?
jrdioko,

@jrdioko policy-rc.dè specifico per Debian e Ubuntu; indica initse eseguire i servizi /etc/init. Non impedisce processi di per sé ; il vantaggio principale in pratica è che puoi installare pacchetti con demoni e non verranno avviati quando installi il pacchetto.
Gilles,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.