preambolo
Continuo a sentire le persone ribadire idee sbagliate da tutta Internet. Quindi, cercherò di fornire alcuni chiarimenti
prima di tutto; quante scoperte accidentali ci sono state, che semplicemente ... a causa di causa ed effetto , sono finite per essere utilizzate per qualcosa di diverso dal suo scopo?
che cosa era e che cosa era una prigione di Chroot
Chroot è stato inizialmente progettato per modificare la directory principale per il processo o l'utente (ottimo per la compilazione di software da fonti sconosciute). ciò ha fornito sicurezza al sistema di base, nonché un dispositivo di test rapido, compresa una facile pulizia. sono passati anni da allora, e anche il suo concetto e gli usi impliciti sono certamente cambiati.
chroot è stato usato in modo efficace ed è direttamente nella base di codice per diversi programmi e librerie (ad esempio openSSHd, apache2 + mod_security2 / mod_chroot, dovecot, sendmail, openVPN, pam_chroot e molto altro ). supponendo che tutte queste applicazioni tradizionali abbiano implementato soluzioni di sicurezza difettose non è proprio vero
chroot è una soluzione alla virtualizzazione del file system: niente di meno, niente di più. anche il presupposto che si possa facilmente uscire da un chroot non è vero ... purché si rispettino le linee guida per l'esecuzione dei processi all'interno del carcere chroot.
alcuni passaggi per proteggere la tua prigione chroot
cioè NON eseguire processi come ROOT. questo potrebbe aprire un vettore di escalation di radice (che è anche vero all'interno o all'esterno del chroot). non eseguire un processo all'interno del chroot, utilizzando lo stesso utente di un altro processo esterno al chroot. separare ogni processo e utente nel proprio Chroot al fine di limitare le superfici di attacco e fornire privacy. monta solo i file, le librerie e i dispositivi necessari. infine, chroot NON sostituisce la sicurezza del sistema di base. proteggere il sistema nella sua interezza.
un'altra nota importante: molte persone pensano che OpenVZ sia rotto o che non sia uguale rispetto alla virtualizzazione completa del sistema. fanno questo presupposto perché è essenzialmente un Chroot, con una tabella di processo che è stata sterilizzata. con misure di sicurezza in atto su hardware e dispositivi. la maggior parte delle quali è possibile implementare in un chroot.
non tutti gli amministratori hanno il livello di conoscenza necessario per proteggere tutti i parametri del kernel necessari su un server dedicato o con la virtualizzazione completa del sistema. questo significa che la distribuzione di OpenVZ significa che i tuoi clienti avranno molto meno superficie d'attacco per cercare di coprire e proteggere prima di distribuire le loro applicazioni. un buon host farà un buon lavoro assicurando questi parametri e, a sua volta, questo è meglio non solo per tutti sul nodo o nel data center, ma per Internet nel suo insieme ...
come detto, il chroot fornisce la virtualizzazione del file system. devi assicurarti che non ci siano eseguibili setuid, applicazioni non sicure, librerie, collegamenti simbolici senza proprietario penzolanti, ecc. Se l'attaccante POTREBBE compromettere il legame, avrebbe bisogno di cercare nel file system virtuale qualcosa da bufferare, giocare con i descrittori di file o in qualche modo compromettere qualcosa che risiede all'interno del chroot, sfuggendo alla prigione di solito attraverso l'escalation dei privilegi o iniettando il suo payload nel sistema di base.
se ciò accade, di solito è il risultato di un aggiornamento errato , exploit zero day o errore umano idiomatico .
perché Chroot è ancora usato, al contrario della virtualizzazione completa del sistema
considera questo scenario: stai eseguendo un Virtual Private Server, con il nodo host che esegue OpenVZ. semplicemente non puoi eseguire nulla che funzioni a livello di kernel. questo significa anche che non è possibile utilizzare la virtualizzazione del sistema operativo per separare i processi e fornire ulteriore sicurezza. quindi, DEVI usare chroot per questo scopo.
inoltre, chroot è sostenibile su qualsiasi sistema, indipendentemente dalle risorse disponibili. in poche parole, ha il minimo sovraccarico di qualsiasi tipo di virtualizzazione. questo significa che è ancora importante su molte scatole di fascia bassa.
considera un altro scenario: apache è in esecuzione all'interno di un ambiente virtualizzato. vuoi separare ogni utente. fornire un file system virtualizzato tramite un chroot aggiunto ad apache (mod_chroot, mod_security, ecc.) sarebbe l'opzione migliore per garantire la massima privacy tra gli utenti finali. questo aiuta anche a prevenire la raccolta di informazioni e offre un ulteriore livello di sicurezza.
in poche parole, è importante implementare la sicurezza a strati . Chroot potenzialmente è uno di questi. non tutti e tutti i sistemi hanno il lusso di avere accesso al kernel, quindi chroot STILL ha uno scopo. ci sono una varietà di applicazioni in cui la virtuizzazione del sistema completo è essenzialmente eccessiva.
In risposta alla tua domanda
non uso particolarmente CentOS, ma so che Bind ora abbassa i suoi privilegi prima delle operazioni. suppongo, tuttavia, che il legame sia chrootato a causa della sua storia di vettori di attacco e potenziali vulnerabilità.
inoltre ... ha più senso chroot automaticamente questa applicazione, che no, perché NON TUTTI hanno accesso alla virtualizzazione completa a livello di sistema / sistema operativo. questo a sua volta, e in teoria, aiuta a fornire sicurezza alla base di utenti CentOS:
i fornitori di sistemi operativi semplicemente non vanno in giro supponendo che tutti stiano eseguendo lo stesso sistema. in questo modo, possono aiutare a fornire un ulteriore livello di sicurezza in generale ...
c'è un motivo per cui così tante applicazioni usano questo , e perché ovviamente il tuo sistema operativo lo fa di default: perché è usato come una funzione di sicurezza e funziona. con un'attenta preparazione, come precedentemente affermato, è l'ennesimo ostacolo che il potenziale attaccante deve superare per la maggior parte del tempo, limitando i danni arrecati alla sola prigione chroot.