![21 de cei mai buni editori de text open source (GUI + CLI) în 2019](/f/b8d8c4fa676c7cd518cbe7551c3107cf.png?width=100&height=100)
Există mai multe motive pentru care restricționează o sesiune de utilizator SSH către un anumit director, în special pe serverele web, dar cel evident este securitatea sistemului. Pentru a bloca utilizatorii SSH într-un anumit director, putem folosi chroot mecanism.
schimba rădăcina (chroot) în sistemele de tip Unix, cum ar fi Linux, este un mijloc de separare a operațiilor specifice ale utilizatorilor de restul sistemului Linux; modifică directorul rădăcină aparent pentru procesul utilizatorului în curs de executare și procesul copil al acestuia cu noul director rădăcină numit a închisoare croată.
În acest tutorial, vă vom arăta cum să restricționați accesul unui utilizator SSH la un anumit director din Linux. Rețineți că vom rula toate comenzile ca root, utilizați comanda sudo dacă sunteți conectat la server ca utilizator normal.
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, în conformitate cu
sshd_config pagina de om,ChrootDirectory
opțiunea specifică calea directorului către care se chroot după autentificare. Directorul trebuie să conțină fișierele și directoarele necesare pentru a susține sesiunea unui utilizator.
Pentru o sesiune interactivă, acest lucru necesită cel puțin un shell, de obicei SH
, și de bază /dev
noduri precum dispozitive null, zero, stdin, stdout, stderr și tty:
# ls -l / dev / {null, zero, stdin, stdout, stderr, random, tty}
3. Acum, creați fișierul /dev
după cum urmează folosind fișierul comanda mknod. În comanda de mai jos, -m
flag este folosit pentru a specifica biții de permisiuni de fișiere, 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 nul c 1 3. # mknod -m 666 tty c 5 0. # mknod -m 666 zero c 1 5. # mknod -m 666 aleatoriu c 1 8.
4. Apoi, setați permisiunea corespunzătoare pentru închisoarea chroot. Rețineți că închisoarea chroot și subdirectoarele și subdosarele sale trebuie să fie deținute de rădăcină utilizator și nu poate fi înscris de niciun utilizator sau grup normal:
# rădăcină chown: root / home / test. # chmod 0755 / home / test. # ls -ld / home / test.
5. Mai întâi, creați fișierul cos
director și apoi copiați fișierul /bin/bash
fișiere în cos
director după cum urmează:
# mkdir -p / home / test / bin. # cp -v / bin / bash / home / test / bin /
6. Acum, identificați bash partajat necesar libs
, ca mai jos și copiați-le în lib
director:
# 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. 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 /
Notă: De fiecare dată când adăugați mai mulți utilizatori SSH la sistem, va trebui să copiați fișierele de cont actualizate în /home/test/etc
director.
9. Acum, deschideți fișierul sshd_config
fişier.
# vi / etc / ssh / sshd_config.
și adăugați / modificați liniile de mai jos din fișier.
#defineți numele de utilizator pentru a aplica închisoarea chroot. Potriviți utilizatorul tecmint #specificați închisoarea chroot. ChrootDirectory / home / test
Salvați fișierul și ieșiți și reporniți serviciile SSHD:
# systemctl reporniți sshd. SAU. # service sshd reporniți.
10. În acest moment, testați dacă configurarea chroot jail funcționează conform așteptărilor:
# ssh [e-mail protejat]
-bash-4.1 $ ls. -bash-4.1 $ data. -bash-4.1 $ uname.
Din captura de ecran de mai sus, putem vedea că utilizatorul SSH este blocat în închisoarea chrootată și nu poate executa nicio comandă externă (ls, data, uname etc.).
Utilizatorul poate executa bash și comenzile sale integrate, cum ar fi (pwd, istoric, ecou etc.), după cum se vede mai jos:
# ssh [e-mail protejat]-bash-4.1 $ pwd. -bash-4.1 $ echo "Tecmint - Site-ul Linux cu cea mai rapidă creștere" -bash-4.1 $ istoric.
11. Din pasul anterior, putem observa că utilizatorul este blocat în directorul rădăcină, putem crea un director principal pentru utilizatorul SSH așa (faceți acest lucru pentru toți utilizatorii viitori):
# 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, mkdir în cos
director:
# 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 bibliotecilor 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 /
14. Faceț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 /etc/ssh/sshd_config
fişier:
#Activați sftp la închisoarea chrootată ForceCommand internal-sftp.
Salvați fișierul și ieșiți. Apoi reporniți serviciile SSHD:
# systemctl reporniți sshd. SAU. # service sshd reporniți.
15. Acum, testați folosind SSH, veți primi următoarea eroare:
# ssh [e-mail protejat]
Încercați să utilizați SFTP după cum urmează:
# sftp [e-mail protejat]
Citire sugerată:Restricționați utilizatorii SFTP la directoare de acasă folosind închisoarea chroot
Atât deocamdată!. În acest articol, v-am arătat cum să restricționați un utilizator SSH într-un anumit director (închisoare chrootată) din Linux. Utilizați secțiunea de comentarii de mai jos pentru a ne oferi părerile dvs. despre acest ghid.