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.