![Generatore di playlist Banshee 'Mirage'](/f/e4ac99f0fb00d2dcb3a1694fb7739e3f.png?width=100&height=100)
Ci sono diversi motivi per limitare una sessione utente SSH in una directory particolare, specialmente sui server web, ma quella più ovvia è una sicurezza del sistema. Per bloccare gli utenti SSH in una determinata directory, possiamo usare chroot meccanismo.
cambia radice (chroot) in sistemi Unix-like come Linux, è un mezzo per separare operazioni utente specifiche dal resto del sistema Linux; cambia la directory radice apparente per il processo utente corrente in esecuzione e il suo processo figlio con una nuova directory radice chiamata a prigione in chroot.
In questo tutorial, ti mostreremo come limitare l'accesso di un utente SSH a una determinata directory in Linux. Nota che eseguiremo tutti i comandi come root, usa il comando sudo se hai effettuato l'accesso al server come utente normale.
1. Inizia creando la chroot jail usando il comando mkdir di seguito:
# mkdir -p /home/test.
2. Quindi, identificare i file richiesti, in base al sshd_config
pagina man, ilChroot Directory
L'opzione 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, questo richiede almeno una shell, comunemente SH
, e di base /dev
nodi come dispositivi null, zero, stdin, stdout, stderr e tty:
# ls -l /dev/{null, zero, stdin, stdout, stderr, random, tty}
3. Ora, crea il /dev
file come segue utilizzando il comando mknod. Nel comando sottostante, il -m
flag viene utilizzato per specificare i bit di autorizzazione del file, C
significa file di caratteri e i due numeri sono numeri maggiori e minori 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 casuale c 1 8.
4. Successivamente, imposta l'autorizzazione appropriata sulla chroot jail. Nota che la jail di chroot e le sue sottodirectory e sottofile devono essere di proprietà di radice utente e non scrivibile da nessun utente o gruppo normale:
# chown root: root /home/test. # chmod 0755 /home/test. # ls -ld /home/test.
5. Per prima cosa, crea il bidone
directory e quindi copiare il file /bin/bash
file nel bidone
directory come segue:
# mkdir -p /home/test/bin. # cp -v /bin/bash /home/test/bin/
6. Ora, identifica bash richiesto condiviso libs
, come di seguito e copiarli nel libi
elenco:
# 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/
7. Ora, crea l'utente SSH con comando useradd e imposta una password sicura per l'utente:
# useradd tecmint. # passwd tecmint.
8. Crea la directory delle configurazioni generali di 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/
Nota: Ogni volta che aggiungi più utenti SSH al sistema, dovrai copiare i file dell'account aggiornati nel /home/test/etc
directory.
9. Ora apri il sshd_config
file.
# vi /etc/ssh/sshd_config.
e aggiungi/modifica le righe sottostanti nel file.
#define nome utente a cui applicare chroot jail. Abbina utente tecmint #specificare la prigione chroot. ChrootDirectory /home/test
Salva il file ed esci e riavvia i servizi SSHD:
# systemctl riavvia sshd. O. # service sshd riavvio.
10. A questo punto, verifica se la configurazione della jail di chroot funziona come previsto:
# ssh [e-mail protetta]
-bash-4.1$ l. -bash-4.1$ data. -bash-4.1$ uname.
Dallo screenshot 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 incorporati come (pwd, history, echo ecc.) Come mostrato di seguito:
# ssh [e-mail protetta]-bash-4.1$ pwd. -bash-4.1$ echo "Tecmint - Sito Linux in più rapida crescita" -bash-4.1$ cronologia.
11. Dal passaggio precedente, possiamo notare che l'utente è bloccato nella directory principale, possiamo creare una home directory per l'utente SSH in questo modo (fai questo 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. Quindi, installa alcuni comandi utente come ls, date, mkdir nel bidone
elenco:
# cp -v /bin/ls /home/test/bin/ # cp -v /bin/data /home/test/bin/ # cp -v /bin/mkdir /home/test/bin/
13. Quindi, controlla le librerie condivise per i comandi sopra e spostale 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/
14. Fai un test finale usando sftp; controlla se i comandi che hai appena installato funzionano.
Aggiungi la riga sotto nel /etc/ssh/sshd_config
file:
#Abilita sftp alla jail in chroot ForceCommand internal-sftp.
Salva il file ed esci. Quindi riavvia i servizi SSHD:
# systemctl riavvia sshd. O. # service sshd riavvio.
15. Ora, prova usando SSH, riceverai il seguente errore:
# ssh [e-mail protetta]
Prova a utilizzare SFTP come segue:
# sftp [e-mail protetta]
Lettura consigliata:Limita gli utenti SFTP alle directory home utilizzando chroot Jail
Questo è tutto per ora!. In questo articolo, ti abbiamo mostrato come limitare un utente SSH in una determinata directory (chrooted jail) in Linux. Usa la sezione commenti qui sotto per offrirci i tuoi pensieri su questa guida.