Restricționați accesul utilizatorului SSH la directorul principal folosind închisoarea Chrooted


Există mai multe motive pentru a restricționa o sesiune de utilizator SSH la un anume director, în special pe serverele web, dar cel mai evident este securitatea sistemului. Pentru a bloca utilizatorii SSH într-un anumit director, putem folosi mecanismul chroot.

schimbarea rădăcină (chroot) în sisteme asemănătoare Unix, cum ar fi Linux, este un mijloc de a separa operațiunile specifice ale utilizatorului de restul sistemului Linux; modifică directorul rădăcină aparent pentru procesul utilizator care rulează în prezent și procesul secundar (părinte) cu un nou director rădăcină numit închisoare chrooted.

În acest tutorial, vă vom arăta cum să restricționați accesul utilizatorului SSH la un anumit director în Linux. Rețineți că vom rula toate comenzile ca root, folosiți comanda sudo dacă sunteți conectat la server ca utilizator normal.

Pasul 1: Creați închisoare SSH Chroot

1. Începeți prin a crea închisoarea chroot folosind comanda mkdir de mai jos:

mkdir -p /home/test

2. Apoi, identificați fișierele necesare, conform paginii de manual sshd_config, opțiunea ChrootDirectory specifică calea directorului în care să faceți chroot după autentificare . Directorul trebuie să conțină fișierele și directoarele necesare pentru a susține sesiunea unui utilizator.

Pentru o sesiune interactivă, aceasta necesită cel puțin un shell, de obicei sh și noduri de bază /dev, cum ar fi dispozitive null, zero, stdin, stdout, stderr și tty:

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

3. Acum, creați fișierele /dev după cum urmează, folosind comanda mknod. În comanda de mai jos, indicatorul -m este folosit pentru a specifica biții de permisiuni ale fișierului, c înseamnă fișier de caractere și cele două numere sunt numere majore și minore către care indică fișierele. .

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. După aceea, setați permisiunea corespunzătoare pentru închisoarea chroot. Rețineți că închisoarea chroot și subdirectoarele și subfișierele sale trebuie să fie deținute de utilizatorul root și nu pot fi scrise de către niciun utilizator sau grup normal:

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

Pasul 2: Configurați Shell interactiv pentru SSH Chroot Jail

5. Mai întâi, creați directorul bin și apoi copiați fișierele /bin/bash în directorul bin folosind comanda cp după cum urmează:

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

6. Acum, identificați bash-ul necesar pentru libs partajate, ca mai jos și copiați-le în directorul 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/

Pasul 3: Creați și configurați utilizatorul SSH

7. Acum, creați utilizatorul SSH cu comanda useradd și setați o parolă sigură pentru utilizator:

useradd tecmint
passwd tecmint

8. Creați directorul de configurații generale chroot jail, /home/test/etc și copiați fișierele de cont actualizate (/etc/passwd și /etc/group) în acest director, după cum urmează:

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

Pasul 4: Configurați SSH pentru a utiliza Chroot Jail

9. Acum, deschideți fișierul sshd_config.

vi /etc/ssh/sshd_config

și adăugați/modificați liniile de mai jos în fișier.

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

Salvați fișierul și ieșiți și reporniți serviciile SSHD:

systemctl restart sshd
OR
service sshd restart

Pasul 5: Testarea SSH cu Chroot Jail

10. În acest moment, testați dacă configurația chroot jail funcționează conform așteptărilor:

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

Din captura de ecran de mai sus, putem vedea că utilizatorul SSH este blocat în închisoarea chrootate și nu poate rula nicio comandă externă (ls, date, uname etc.).

Utilizatorul poate executa numai bash și comenzile sale încorporate, cum ar fi (pwd, history, echo, etc) așa cum se vede mai jos:

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

Pasul 6. Creați directorul principal al utilizatorului SSH și adăugați comenzi Linux

11. De la pasul anterior, putem observa că utilizatorul este blocat în directorul rădăcină, putem crea un director principal pentru utilizatorul SSH astfel (faceți acest lucru pentru toți viitorii utilizatori):

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

12. Apoi, instalați câteva comenzi de utilizator, cum ar fi ls, date și mkdir în directorul bin:

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

13. Apoi, verificați bibliotecile partajate pentru comenzile de mai sus și mutați-le în directorul de biblioteci de închisoare chrootate:

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/

Pasul 7. Testarea SFTP cu Chroot Jail

14. Efectuați un test final folosind sftp; verificați dacă comenzile pe care tocmai le-ați instalat funcționează.

Adăugați linia de mai jos în fișierul /etc/ssh/sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Salvați fișierul și ieșiți. Apoi reporniți serviciile SSHD:

systemctl restart sshd
OR
service sshd restart

15. Acum, testați folosind SSH și veți primi următoarea eroare:

ssh [email 

Încercați să utilizați SFTP după cum urmează:

sftp [email 

Atât deocamdată! În acest articol, v-am arătat cum să restricționați un utilizator SSH într-un anumit director (închisoare chrootat) în Linux. Folosește secțiunea de comentarii de mai jos pentru a ne oferi părerile tale despre acest ghid.