GNU/Linux >> Linux Esercitazione >  >> Cent OS

Capire la prigione di chroot

Come suggerisce il nome, un'operazione chroot cambia la directory radice apparente per un processo in esecuzione e i suoi figli. Ti permette di eseguire un programma (processo) con una directory principale diversa da /. Il programma non può vedere o accedere ai file al di fuori dell'albero di directory designato.

Ad esempio, puoi eseguire un programma e specificare la sua directory principale come /home/user/jail. In questo caso, la directory principale del programma è in realtà /home/user/jail. Il programma non sarebbe a conoscenza o in grado di accedere a nessun file al di sopra di questa directory nella gerarchia.

Questa directory radice artificiale è chiamata prigione chroot . Il suo scopo è limitare l'accesso alla directory di un potenziale aggressore. La jail chroot blocca un determinato processo e qualsiasi ID utente che sta utilizzando in modo che l'utente veda solo la directory in cui è in esecuzione il processo. Al processo,
sembra che sia in esecuzione nella directory principale.

Una jail chroot non ha lo scopo di:
– difendersi dalla manomissione intenzionale da parte di utenti privilegiati (root).
– essere utilizzata per bloccare l'accesso di basso livello ai dispositivi di sistema da parte di utenti privilegiati. Un utente root chroot può comunque creare nodi dispositivo e montare i file system su di essi.

Affinché un processo chroot venga avviato correttamente, la directory chroot deve essere popolata con tutti i file di programma, i file di configurazione, i nodi del dispositivo e le librerie condivise richiesti nelle posizioni previste.

Utilizzo dell'utilità chroot

1. Per usare una jail chroot, usa il seguente comando (new_root deve essere una directory esistente):

# chroot new_root [command]

2. La directory new_root diventa la directory radice artificiale. chroot cambia in new_root ed esegue il comando facoltativo. Senza specificare un comando come argomento, chroot cambia in new_root ed esegue il valore della variabile di ambiente SHELL o /bin/sh se SHELL non è impostato.

3. Ad esempio, supponendo che SHELL sia impostato su /bin/bash e che la directory /home/user/jail esista, l'esecuzione del comando chroot comporta quanto segue:

# chroot /home/user/jail
chroot: failed to run command ‘/bin/bash’: No such file or directory

4. La directory /home/user/jail prende il nome di /. chroot non riesce a trovare /bin/bash all'interno di questa jail chroot e restituisce il messaggio di errore. Per implementare una jail chroot, crea la nuova struttura della directory radice e copia tutti i file necessari in questa nuova directory radice prima di eseguire il comando chroot.

Configurazione di chroot Jail

1. Per implementare una jail chroot ed eseguire /bin/bash, crea la directory bin nella directory root artificiale (/home/oracle/jail in questo esempio) e copia /bin/bash in questa directory:

$ mkdir /home/oracle/jail/bin
$ cp /bin/bash /home/oracle/jail/bin

2. Il comando /bin/bash è collegato dinamicamente alle librerie condivise. Queste librerie devono anche essere copiate nella chroot jail. Usa il comando ldd per determinare quali librerie sono richieste dal comando /bin/bash:

# ldd /bin/bash
	linux-vdso.so.1 =>  (0x00007fff11bff000)
	libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003728800000)
	libdl.so.2 => /lib64/libdl.so.2 (0x0000003d56400000)
	libc.so.6 => /lib64/libc.so.6 (0x0000003d56800000)
	/lib64/ld-linux-x86-64.so.2 (0x0000003d56000000)

3. Copiate ciascuno di questi file in una directory lib64 nella directory root artificiale. Crea la directory lib64 e copia le librerie condivise in questa directory:

$ mkdir /home/oracle/jail/lib64
$ cp /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/oracle/jail/lib64

4. Ora che tutti i file richiesti si trovano nelle posizioni previste, l'esecuzione del comando chroot (come root) comporta quanto segue:

# chroot /home/oracle/jail

5. Questa volta il comando è riuscito e il programma /bin/bash è stato eseguito. Immettendo pwd per stampare la directory corrente viene visualizzato /, anche se la directory effettiva è /home/oracle/jail:

# pwd
/

Il comando pwd viene eseguito perché è un comando integrato nella shell. L'esecuzione di qualsiasi altro comando non riesce perché bash non riesce a trovare il comando. Il processo presuppone che si trovi nella directory principale e non abbia visibilità o conoscenza di alcun file al di sopra di questa directory nella gerarchia. Ad esempio, l'esecuzione del comando ls non riesce:

# ls
bash: ls: command not found

6. Usa il comando exit per uscire dal chroot jail.

# exit
exit
#
CentOS / RHEL :Come impostare chroot jail SFTP
CentOS / RHEL :Come impostare chroot jail per vsftp per tutti gli utenti
CentOS / RHEL :Come impostare chroot jail per vsftp solo per utenti specifici
CentOS / RHEL:come impostare SFTP su Chroot Jail solo per gruppi specifici


Cent OS
  1. Chroot "prigione" - Che cos'è e come usarlo?

  2. Elenco degli scheletri

  3. Comprensione della directory /etc/xinetd.d sotto Linux

  4. Comprendere i booleani di SELinux

  5. Comprensione della prenotazione SCSI Linux

Che cos'è chroot jail e come usarlo?

Come installare Go su CentOS 7

Du comando in Linux

Comando mv in Linux

CentOS / RHEL:come impostare la jail chroot per vsftp per tutti gli utenti

CentOS / RHEL:come configurare SFTP chroot jail