Ricerca nel sito web

Limita l'accesso degli utenti SSH alla home directory utilizzando il jailbreak chroot


Esistono diversi motivi per limitare una sessione utente SSH a una directory particolare, soprattutto sui server Web, ma quello ovvio è la sicurezza del sistema. Per bloccare gli utenti SSH in una determinata directory, possiamo utilizzare il meccanismo chroot.

cambiare root (chroot) nei sistemi simili a Unix come Linux, è un mezzo per separare specifiche operazioni dell'utente dal resto del sistema Linux; cambia la directory root apparente per il processo utente attualmente in esecuzione e il suo processo figlio (genitore) con una nuova directory root chiamata chrooted jail.

In questo tutorial, ti mostreremo come limitare l'accesso degli utenti SSH a una determinata directory in Linux. Tieni presente che eseguiremo tutti i comandi come root, utilizza il comando sudo se hai effettuato l'accesso al server come utente normale.

Passaggio 1: crea la prigione Chroot SSH

1. Inizia creando la prigione chroot utilizzando il comando mkdir riportato di seguito:

mkdir -p /home/test

2. Successivamente, identifica i file richiesti, secondo la pagina man sshd_config, l'opzione ChrootDirectory specifica il percorso della directory in cui eseguire il chroot dopo l'autenticazione . La directory deve contenere i file e le directory necessari per supportare la sessione di un utente.

Per una sessione interattiva, ciò richiede almeno una shell, comunemente sh, e nodi /dev di base come dispositivi null, zero, stdin, stdout, stderr e tty:

ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Ora crea i file /dev come segue utilizzando il comando mknod. Nel comando seguente, il flag -m viene utilizzato per specificare i bit dei permessi del file, c significa file di caratteri e i due numeri sono i numeri maggiore e minore a cui puntano i file .

mkdir -p /home/test/dev/		
cd /home/test/dev/
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8

4. Successivamente, imposta l'autorizzazione appropriata sulla prigione chroot. Tieni presente che la chroot jail, le sue sottodirectory e i suoi sottofile devono essere di proprietà dell'utente root e non possono essere scrivibili da nessun utente o gruppo normale:

chown root:root /home/test
chmod 0755 /home/test
ls -ld /home/test

Passaggio 2: configurare la shell interattiva per SSH Chroot Jail

5. Innanzitutto, crea la directory bin e quindi copia i file /bin/bash nella directory bin utilizzando il comando cp come segue:

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

6. Ora, identifica le bash richieste per le libs condivise, come di seguito, e copiale nella directory lib:

ldd /bin/bash
mkdir -p /home/test/lib64
cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

Passaggio 3: crea e configura l'utente SSH

7. Ora crea l'utente SSH con il comando useradd e imposta una password sicura per l'utente:

useradd tecmint
passwd tecmint

8. Crea la directory delle configurazioni generali della chroot jail, /home/test/etc e copia i file dell'account aggiornati (/etc/passwd e /etc/group) in questa directory come segue:

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

Passaggio 4: configura SSH per utilizzare Chroot Jail

9. Ora apri il file sshd_config.

vi /etc/ssh/sshd_config

e aggiungi/modifica le righe sottostanti nel file.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

Salvare il file, uscire e riavviare i servizi SSHD:

systemctl restart sshd
OR
service sshd restart

Passaggio 5: testare SSH con Chroot Jail

10. A questo punto, verifica se la configurazione della chroot jail funziona come previsto:

ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

Dallo screenshot qui sopra, possiamo vedere che l'utente SSH è bloccato nella jail chroot e non può eseguire alcun comando esterno (ls, date, uname, ecc.).

L'utente può eseguire solo bash e i suoi comandi integrati come (pwd, History, echo, ecc.) come mostrato di seguito:

ssh [email 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

Passaggio 6. Crea la home directory dell'utente SSH e aggiungi i comandi Linux

11. Dal passaggio precedente, possiamo notare che l'utente è bloccato nella directory root, possiamo creare una directory home per l'utente SSH in questo modo (fallo per tutti i futuri utenti):

mkdir -p /home/test/home/tecmint
chown -R tecmint:tecmint /home/test/home/tecmint
chmod -R 0700 /home/test/home/tecmint

12. Successivamente, installa alcuni comandi utente come ls, date e mkdir nella directory bin:

cp -v /bin/ls /home/test/bin/
cp -v /bin/date /home/test/bin/
cp -v /bin/mkdir /home/test/bin/

13. Successivamente, controlla le librerie condivise per i comandi sopra e spostali nella directory delle librerie jail chroot:

ldd /bin/ls
cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

Passaggio 7. Testare SFTP con Chroot Jail

14. Esegui un test finale utilizzando sftp; controlla se i comandi che hai appena installato funzionano.

Aggiungi la riga seguente nel file /etc/ssh/sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Salvare il file ed uscire. Quindi riavviare i servizi SSHD:

systemctl restart sshd
OR
service sshd restart

15. Ora prova utilizzando SSH e otterrai il seguente errore:

ssh [email 

Prova a utilizzare SFTP come segue:

sftp [email 

Per ora è tutto! In questo articolo, ti abbiamo mostrato come limitare un utente SSH in una determinata directory (chrooted jail) in Linux. Utilizza la sezione commenti qui sotto per offrirci le tue opinioni su questa guida.