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
Svantaggi
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)