Ci sono diverse ragioni per limitare una sessione utente SSH a una directory specifica, specialmente su server web, ma quella più ovvia è la sicurezza di sistema. Per bloccare gli utenti SSH in una determinata directory, possiamo utilizzare il meccanismo chroot.
La modifica del root (chroot) nei sistemi simili a Unix come Linux è un modo per separare operazioni utente specifiche 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 prigione chroot.
In questo tutorial, ti mostreremo come limitare l’accesso utente SSH a una determinata directory in Linux. Nota che eseguiremo tutti i comandi come root, utilizza il comando sudo se sei loggato nel server come utente normale.
Tabella dei Contenuti
1. Iniziare creando la prigione di chroot utilizzando il comando mkdir di seguito:
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 di sshd_config, l’opzione ChrootDirectory
specifica il percorso del directory in cui chrootare dopo l’autenticazione. La directory deve contenere i file e le directory necessarie per supportare una sessione utente.
Per una sessione interattiva, ciò richiede almeno un shell, comunemente sh
, e i nodi /dev
di base come null, zero, stdin, stdout, stderr e dispositivi 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, la bandiera -m
viene utilizzata per specificare i bit di permesso del file, c
significa file di caratteri e i due numeri sono i numeri principali e secondari 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 i permessi appropriati sulla prigione chroot. Si noti che la prigione chroot e i suoi sottodirectory e sottofile devono essere di proprietà dell’utente root, e non scrittibili da nessun utente normale o gruppo:
# chown root:root /home/test # chmod 0755 /home/test # ls -ld /home/test

Passo 2: Configura Shell Interattiva per la Prigione Chroot SSH
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 il bash richiesto 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/

Passo 3: Creare e configurare 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 prigione chroot, /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/

/home/test/etc
directory.Passo 4: Configura SSH per utilizzare la prigione chroot
9. Ora, apri il file sshd_config
.
# vi /etc/ssh/sshd_config
e aggiungi/modifica le righe sotto nel file.
#define username to apply chroot jail to Match User tecmint #specify chroot jail ChrootDirectory /home/test

Salva il file e esci, e riavvia i servizi SSHD:
# systemctl restart sshd OR # service sshd restart
Passo 5: Testare SSH con la prigione chroot
10. A questo punto, verifica se la configurazione della prigione chroot funziona come previsto:
# ssh [email protected] -bash-4.1$ ls -bash-4.1$ date -bash-4.1$ uname

Dallo screenshot sopra, possiamo vedere che l’utente SSH è bloccato nella prigione chroot e non può eseguire alcun comando esterno (ls, date, uname, ecc).
L’utente può solo eseguire bash e i suoi comandi interni come (pwd, history, echo, ecc) come mostrato di seguito:
# ssh [email protected] -bash-4.1$ pwd -bash-4.1$ echo "Tecmint - Fastest Growing Linux Site" -bash-4.1$ history

Passo 6. Creare la directory home dell’utente SSH e aggiungere comandi Linux
11. Dallo step precedente, possiamo notare che l’utente è bloccato nella directory root, possiamo creare una directory home per l’utente SSH in questo modo (fai questo per tutti gli utenti futuri):
# 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, verifica le librerie condivise per i comandi sopra e spostale nella directory delle librerie della prigione 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/

Passo 7. Test SFTP con Chroot Jail
14. Fai 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
Salva il file ed esci. Quindi riavvia i servizi SSHD:
# systemctl restart sshd OR # service sshd restart
15. Ora, testa utilizzando SSH e otterrai il seguente errore:
# ssh [email protected]

Prova a utilizzare SFTP come segue:
# sftp [email protected]

Questo è tutto per ora! In questo articolo, ti abbiamo mostrato come limitare un utente SSH in una directory specifica (prigione chroot) in Linux. Usa la sezione dei commenti qui sotto per offrirci i tuoi pensieri su questa guida.
Source:
https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/