lunedì, Maggio 29, 2023
HomeSistemi OperativiLinuxChe cos'è chroot in Linux e come funziona?

Che cos’è chroot in Linux e come funziona?

Stai cercando di eseguire applicazioni o servizi in uno spazio isolato su Linux? O forse vuoi testare ed eseguire il debug di un’applicazione senza che interferisca con il resto del tuo sistema? In tal caso, ti consigliamo di conoscere chroot, un potente meccanismo integrato in Linux che ti consente di creare un ambiente separato all’interno del tuo sistema.

Esploriamo chroot in dettaglio, scopriamo i suoi vantaggi, i casi d’uso, come configurarlo su un sistema Linux e, se necessario, come evitarlo.

Che cos’è chroot in Linux?

chroot o change-root è senza dubbio una delle forme più semplici e antiche di software di containerizzazione che consente a un utente di sandboxare in modo sicuro applicazioni e servizi. Il sandboxing, in termini informatici, è il processo di isolamento di un programma in uno spazio ristretto con risorse predefinite.

Se hai familiarità con Docker e come funziona, puoi pensare a chroot come a una versione fortemente ridotta di esso. chroot funziona cambiando la directory principale di un programma, limitando l’accesso e la visibilità e fornendo così un ulteriore livello di isolamento e sicurezza.

In sostanza, si crea una directory separata, si copiano tutte le dipendenze del programma nella nuova directory e quindi si esegue il comando chroot. Ciò consente al programma di funzionare correttamente pur non avendo accesso al file system di base.

Il chroot di un programma è un ottimo modo per testarne l’affidabilità in uno spazio sicuro senza alterare i file del sistema effettivo. Inoltre, puoi anche ridurre il rischio per la sicurezza causato da un pacchetto compromesso poiché in un ambiente chroot, il pacchetto compromesso non sarà in grado di accedere e modificare file di sistema sensibili.

Il programma sarà solo in grado di accedere e visualizzare i file importati nella directory chroot, altrimenti nota come “chroot jail”. Ciò impedisce al programma e ai suoi sottoprocessi di interferire con il sistema di base.

Cos’è una prigione chroot?

Una gabbia chroot è un ambiente isolato in cui risiedono e vengono eseguiti i programmi chroot. Il termine chroot jail deriva dal concetto che il processo e i suoi sottoprocessi all’interno dell’ambiente chroot non hanno accesso o visibilità al file system di base e sono intrappolati all’interno dei limiti di chroot con risorse predeterminate.

Ora che il concetto di chroot ti è chiaro, mettiamoci in pratica e impariamo come puoi creare una prigione chroot e generare processi al suo interno.

Come creare una prigione chroot ed eseguire programmi in essa

eseguire il chroot di una directory e generare bash-1

Una chroot jail è essenzialmente una directory che contiene tutte le risorse, i file, i binari e le altre dipendenze necessarie di cui un programma avrebbe bisogno per funzionare correttamente.

Tuttavia, a differenza di un normale ambiente Linux, l’ambiente della prigione chroot è altamente limitato e il programma non può accedere a file esterni o aggiuntivi e risorse di sistema.

Ad esempio, per eseguire la shell Bash in una gabbia chroot, dovresti copiare il binario Bash e tutte le sue dipendenze nella directory chroot.

Ecco i passaggi per creare una gabbia chroot e generare una shell Bash:

  1. Affinché un programma venga eseguito correttamente, è necessario copiare tutte le sue dipendenze nella directory chroot. Troviamo il binario, in questo caso Bash, e la posizione di tutte le sue dipendenze usando i comandi which e ldd:
    which bash
    ldd /usr/bin/bash
  2. Ora che conosci le posizioni del file binario e le sue dipendenze, copiale nella directory che vuoi trasformare in una gabbia chroot. Utilizzando il comando mkdir creare le directory necessarie e utilizzando il comando cp, copiare tutti i file nelle directory corrispondenti:
    mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
  3. Infine, con il programma e le sue dipendenze copiate, è possibile eseguire il comando chroot con privilegi elevati utilizzando il prefisso sudo per generare l’ambiente chroot nella directory scelta. Per impostazione predefinita, genererà una shell Bash. Ecco il comando da digitare:
    sudo chroot directory_name

Questi sono tutti i passaggi per generare una gabbia chroot ed eseguire un programma al suo interno.

Come evadere da una prigione chroot

Sebbene le jail chroot siano utili per testare software instabile, sono anche utili quando si gestiscono le connessioni SSH poiché il chrooting degli utenti connessi è uno dei tanti modi per proteggere il server SSH.

Il rovescio della medaglia, se sei un penetration tester e hai effettuato l’accesso al server SSH del tuo obiettivo, trovarlo in un ambiente chroot può essere frustrante e sembrare un vicolo cieco.

Tuttavia, ci sono molti modi per uscire da una prigione chroot mal configurata, alcuni richiedono competenze di programmazione C mentre altri possono essere automatizzati con strumenti. Alcuni semplici modi per sfuggire al chroot sono:

  • Chiamate chroot annidate
  • Chiamate chroot annidate con descrittore di file salvato
  • Metodo root di montaggio
  • procfs fuga
  • ptrace fuga

Tieni presente che per eseguire chroot escape utilizzando uno di questi metodi, dovrai disporre di privilegi intensificati nel sistema. Scopri di più su queste metodologie di fuga andando su Repository GitHub di chw00t uno strumento di automazione della fuga chroot.

Ora sai tutto su chroot in Linux

Ora che sai cos’è chroot, come funziona e come implementarlo, dovresti essere in grado di sandboxare le applicazioni senza sforzo dal terminale. Tieni presente che, come sai, ci sono diversi modi per uscire da un ambiente chroot.

Ciò dimostra che chroot non è stato in alcun modo progettato per essere implementato come funzionalità di sicurezza. Quindi dovresti usare chroot con molta cautela in quanto una configurazione impropria potrebbe finire per ritorcersi contro e compromettere la sicurezza del tuo sistema.

È meglio attenersi a soluzioni di sandboxing dedicate come software di containerizzazione o macchine virtuali. Entrambi sono incentrati sul sandboxing e sulla sicurezza, quindi a meno che non ci sia un nuovo giorno zero in città, non dovresti preoccuparti della sicurezza e dell’integrità del tuo sistema.

Se non sei sicuro di quale scegliere tra software di containerizzazione e virtualizzazione, dovresti provare entrambi e vedere di persona quale è il migliore.

RELATED ARTICLES