Come configurare le carceri di Linux Chroot

Come configurare le carceri di Linux Chroot
Soprattutto quelli dedicati ai servizi critici, i sistemi Linux richiedono conoscenze a livello di esperti con cui lavorare e misure di sicurezza di base.

Sfortunatamente, anche dopo aver adottato misure di sicurezza cruciali, le vulnerabilità della sicurezza si fanno ancora strada nei sistemi sicuri. Un modo per gestire e proteggere il tuo sistema è limitare il danno possibile una volta che si verifica un attacco.

In questo tutorial, discuteremo il processo di utilizzo della prigione di Chroot per gestire i danni del sistema in caso di attacco. Esamineremo come isolare i processi e i sottoprocessi in un ambiente particolare con falsi privilegi di radice. In questo modo limiterà il processo a una directory specifica e negerà l'accesso ad altre aree di sistema.

Una breve introduzione alla prigione di Chroot

Una prigione di Chroot è un metodo per isolare i processi e il loro sottoprocesso dal sistema principale utilizzando i privilegi di radice falsi.

Come accennato, l'isolamento di un particolare processo usando i privilegi di radice falsi limita i danni nel caso di un attacco dannoso. I servizi Chrooted sono limitati alle directory e ai file all'interno delle loro directory e non persistenti al riavvio del servizio.

Perché usare la prigione di Chroot

Lo scopo principale della prigione di Chroot è come misura di sicurezza. Chroot è anche utile quando si riprende le password perse mediante dispositivi di montaggio da live media.

Esistono vari vantaggi e svantaggi di impostare la prigione di Chroot. Questi includono:

Vantaggi

  • Limita l'accesso: in caso di compromesso per la sicurezza, le uniche solo directory sono quelle all'interno della prigione di Chroot.
  • Limiti di comando: utenti o processi si limitano ai comandi consentiti in prigione.

Svantaggi

  • Può essere difficile da configurare.
  • Richiede molto lavoro: se hai bisogno di un comando extra rispetto a quelli consentiti per impostazione predefinita, devi includerlo manualmente.

Come creare una prigione di base Chroot

In questo processo, creeremo una prigione di base Chroot con 3 comandi limitati a quella cartella. Ciò contribuirà a illustrare come creare una prigione e assegnare vari comandi.

Inizia creando una cartella principale. Puoi pensare a questa cartella come alla cartella / nel sistema principale. Il nome della cartella può essere qualsiasi cosa. Nel nostro caso, lo chiamiamo /chrootjail

sudo mkdir /chrootjail

Useremo questa directory come root falso contenente i comandi che ci assegneremo. Con i comandi che utilizzeremo, richiederemo la directory bin (contiene i comandi eseguibili) e il, ecc., Directory (contenente file di configurazione per i comandi).

All'interno della cartella /Chrootjail, crea queste due cartelle:

sudo mkdir /chrootjail /etc, bin

Il prossimo passo è creare directory per librerie dinamicamente collegate per i comandi che vogliamo includere nella prigione. Per questo esempio, useremo comandi Bash, LS e GREP.

Utilizzare il comando LDD per elencare le dipendenze di questi comandi, come mostrato di seguito:

Sudo LDD /Bin /Bash /Bin /LS /Bin /Grep

Se non sei all'interno della cartella del cestino, devi passare il percorso completo per i comandi che si desidera utilizzare. Ad esempio, LDD /Bin /Bash o LDD /Bin /Grep

Dall'output LDD sopra, abbiamo bisogno delle directory Lib64 e /Lib /x86_64-Linux-Gnu. All'interno della directory della prigione, crea queste cartelle.

sudo mkdir -p /chrootjail lib /x86_64-linux-gnu, lib64

Una volta create le directory della libreria dinamica, possiamo elencarle usando un albero, come mostrato di seguito:

Mentre progrediamo, inizierai a ottenere un'immagine chiara di cosa significhi una prigione di Chroot.

Stiamo creando un ambiente simile a una normale directory di radice di un sistema Linux. La differenza è, all'interno di questo ambiente, sono consentiti solo comandi specifici e l'accesso è limitato.

Ora che abbiamo creato il cestino. eccetera., Lib e Lib64, possiamo aggiungere i file richiesti all'interno delle rispettive directory.

Cominciamo con i binari.

sudo cp /bin /bash /chrootjail /bin && sudo cp /bin /ls /chrootjail /bin && sudo cp /bin /grep /chrootjail /bin

Avendo copiato i binari per i comandi di cui abbiamo bisogno, richiediamo le librerie per ogni comando. È possibile utilizzare il comando LDD per visualizzare i file da copiare.

Cominciamo con Bash. Per Bash, abbiamo bisogno delle seguenti librerie:

/lib/x86_64-linux-no/libinfo.COSÌ.6
/lib/x86_64-linux-no/libdl.COSÌ.2
/lib/x86_64-linux-no/libc.COSÌ.6
/lib64/ld-linux-x86-64.COSÌ.2

Invece di copiare tutti questi file uno per uno, possiamo usare un ciclo semplice per copiare ciascuna libreria in tutte le librerie su/chrootjail/lib/x86_64-linux-genu

Ripetiamo questo processo sia per il comando LS e GREP:

Per il comando LS:

Per il comando grep:

Successivamente, all'interno della directory Lib64, abbiamo una libreria condivisa in tutti i binari. Possiamo semplicemente copiarlo usando un semplice comando CP:

Quindi, modifichiamo il file di accesso principale bash (situato in /etc /bash.Bashrc in Debian) in modo da poter modificare la prompt di Bash a nostro piacimento. Usando un semplice comando eco e tee come mostrato:

sudo echo 'ps1 = "chrootjail #"' | sudo tee/chrootjail/etc/bash.Bashrc

Una volta completati tutti i passaggi sopra, possiamo accedere all'ambiente della prigione usando il comando Chroot come mostrato.

sudo chroot /chrootjail /bin /bash

Otterrai i privilegi di root con il prompt simile a quelli creati nel comando Echo e TEE sopra.

Una volta effettuato l'accesso, vedrai che hai accesso solo ai comandi che hai incluso quando hai creato la prigione. Se hai bisogno di più comandi, devi aggiungerli manualmente.

NOTA: Dato che hai incluso la shell bash, avrai accesso a tutti i comandi incorporati bash. Che ti consente di uscire dalla prigione usando il comando di uscita.

Conclusione

Questo tutorial ha coperto ciò che è la prigione di Chroot e come possiamo usarlo per creare un ambiente isolato dal sistema principale. È possibile utilizzare le tecniche discusse nella Guida Can per creare ambienti isolati per servizi critici.

Per praticare ciò che hai imparato, prova a creare una prigione Apache2.

SUGGERIMENTO: Inizia creando una directory di root, aggiungi i file di configurazione (etc/apache2), aggiungi il root del documento (/var/www/html), aggiungi la binaria (/usr/sbin/apache2) e infine aggiungi le librerie richieste (LDD/LDD/LDD/LDD/LDD/LDD/LDD/LDD/LDD/LDD/LDD/LDD/LDD/LDD/ usr/sbin/apache2)