Ograničite pristup SSH korisnika određenom direktorijumu korištenjem Chrooted zatvora
Postoji nekoliko razloga za ograničavanje SSH korisničke sesije na određeni direktorij, posebno na web poslužiteljima, ali očigledan je sigurnost sustava. Da bismo zaključali SSH korisnike u određenom direktoriju, možemo koristiti chroot mehanizam.
promjena korijena (chroot) u Unix-sličnim sustavima kao što je Linux, sredstvo je za odvajanje određenih korisničkih operacija od ostatka Linux sustava; mijenja očigledni korijenski direktorij za trenutni izvršeni korisnički postupak i njegov podređeni proces s novim korijenskim direktorijom koji se naziva chrooted zatvor.
U ovom uputstvu pokazat ćemo vam kako ograničiti pristup SSH korisnika određenom direktoriju u Linuxu. Imajte na umu da ćemo sve naredbe pokretati kao root, upotrijebite naredbu sudo ako ste prijavljeni na poslužitelj kao normalan korisnik.
Korak 1: Stvorite SSH Chroot Jail
1. Započnite stvaranjem chroot zatvora pomoću naredbe mkdir u nastavku:
# mkdir -p /home/test
2. Zatim identificirajte potrebne datoteke, prema sshd_config man stranici, opcija ChrootDirectory
navodi put staze do direktorija za chroot nakon provjere autentičnosti. Direktorij mora sadržavati potrebne datoteke i direktorije za podršku korisničkoj sesiji.
Za interaktivnu sesiju ovo zahtijeva barem ljusku, obično sh
i osnovne /dev
čvorove kao što su null, zero, stdin, stdout, stderr i tty uređaji:
# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}
3. Sada stvorite datoteke /dev
kako slijedi pomoću naredbe mknod. U naredbi ispod, zastavica -m
koristi se za određivanje bitova dozvola datoteke, c
znači datoteku znakova, a dva broja su glavni i manji brojevi na koje datoteke upućuju .
# 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. Nakon toga, postavite odgovarajuće dopuštenje za chroot zatvor. Imajte na umu da chroot zatvor i njegovi poddirektoriji i poddatoteke moraju biti u vlasništvu root korisnika i ne smiju biti upisani od bilo kojeg normalnog korisnika ili grupe:
# chown root:root /home/test # chmod 0755 /home/test # ls -ld /home/test
Korak 2: Postavljanje interaktivne ljuske za SSH Chroot zatvor
5. Prvo stvorite direktorij bin
, a zatim kopirajte datoteke /bin/bash
u direktorij bin
na sljedeći način:
# mkdir -p /home/test/bin # cp -v /bin/bash /home/test/bin/
6. Sada identificirajte bash potrebne zajedničke libs
, kao u nastavku, i kopirajte ih u direktorij 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/
Korak 3: Stvorite i konfigurirajte SSH korisnika
7. Sada stvorite SSH korisnika pomoću naredbe useradd i postavite sigurnu lozinku za korisnika:
# useradd tecmint # passwd tecmint
8. Izradite direktorij općih konfiguracija chroot zatvora, /home/test/etc
i kopirajte ažurirane datoteke računa (/ etc/passwd i/etc/group) u ovaj direktorij kako slijedi:
# mkdir /home/test/etc # cp -vf /etc/{passwd,group} /home/test/etc/
Napomena: Svaki put kad dodate više SSH korisnika u sustav, morat ćete kopirati ažurirane datoteke računa u direktorij /home/test/etc
.
Korak 4: Konfigurirajte SSH da koristi Chroot Jail
9. Sada otvorite datoteku sshd_config
.
# vi /etc/ssh/sshd_config
i dodajte/izmijenite donje retke u datoteci.
#define username to apply chroot jail to Match User tecmint #specify chroot jail ChrootDirectory /home/test
Spremite datoteku i izađite i ponovo pokrenite SSHD usluge:
# systemctl restart sshd OR # service sshd restart
Korak 5: Testiranje SSH-a s Chroot Jail-om
10. U ovom trenutku testirajte radi li postavka zatvora za chroot kako se očekuje:
# ssh [email -bash-4.1$ ls -bash-4.1$ date -bash-4.1$ uname
Iz gornje snimke zaslona možemo vidjeti da je SSH korisnik zaključan u chrootiranom zatvoru i ne može pokretati nikakve vanjske naredbe (ls, date, uname itd.).
Korisnik može izvršavati samo bash i njegove ugrađene naredbe kao što su (pwd, povijest, eho itd.) Kao što se vidi dolje:
# ssh [email -bash-4.1$ pwd -bash-4.1$ echo "Tecmint - Fastest Growing Linux Site" -bash-4.1$ history
Korak 6. Izradite kućni direktorij SSH korisnika i dodajte Linux naredbe
11. Iz prethodnog koraka možemo primijetiti da je korisnik zaključan u korijenskom direktoriju, možemo stvoriti kućni direktorij za SSH korisnika na takav način (učinite to za sve buduće korisnike):
# mkdir -p /home/test/home/tecmint # chown -R tecmint:tecmint /home/test/home/tecmint # chmod -R 0700 /home/test/home/tecmint
12. Zatim instalirajte nekoliko korisničkih naredbi poput ls, date, mkdir u direktorij bin
:
# cp -v /bin/ls /home/test/bin/ # cp -v /bin/date /home/test/bin/ # cp -v /bin/mkdir /home/test/bin/
13. Zatim u zajedničkim knjižnicama provjerite nalaze li se naredbe iznad i premjestite ih u direktorij zatvorenih zatvorskih biblioteka:
# 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/
Korak 7. Testiranje SFTP-a s Chroot Jail-om
14. Napravite završni test koristeći sftp; provjerite rade li naredbe koje ste upravo instalirali.
Dodajte redak ispod u datoteku /etc/ssh/sshd_config
:
#Enable sftp to chrooted jail ForceCommand internal-sftp
Spremite datoteku i izađite. Zatim ponovo pokrenite SSHD usluge:
# systemctl restart sshd OR # service sshd restart
15. Sada, testirajte pomoću SSH-a, dobit ćete sljedeću pogrešku:
# ssh [email
Pokušajte koristiti SFTP na sljedeći način:
# sftp [email
To je za sada to !. U ovom smo članku pokazali kako ograničiti SSH korisnika u određenom direktoriju (chrooted zatvor) u Linuxu. Upotrijebite odjeljak za komentare u nastavku da biste nam ponudili svoje mišljenje o ovom vodiču.