Ograničite SSH korisnički pristup kućnom direktoriju koristeći Chrooted Jail


Postoji nekoliko razloga da se SSH korisnička sesija ograniči na određeni direktorij, posebno na web serverima, ali očigledan je sigurnost sistema. Kako bismo zaključali SSH korisnike u određeni direktorij, možemo koristiti chroot mehanizam.

promjena korijena (chroot) u sistemima sličnim Unixu kao što je Linux, sredstvo je odvajanja specifičnih korisničkih operacija od ostatka Linux sistema; mijenja prividni korijenski direktorij za trenutno pokrenuti korisnički proces i njegov podređeni (roditeljski) proces s novim korijenskim direktorijumom koji se zove chrooted jail.

U ovom vodiču ćemo vam pokazati kako ograničiti pristup SSH korisnika određenom direktoriju u Linuxu. Imajte na umu da ćemo sve naredbe pokrenuti kao root, koristite naredbu sudo ako ste prijavljeni na server kao običan korisnik.

Korak 1: Kreirajte SSH Chroot Jail

1. Započnite kreiranjem chroot jaila koristeći naredbu mkdir ispod:

mkdir -p /home/test

2. Zatim identifikujte potrebne fajlove, prema sshd_config man stranici, opcija ChrootDirectory specificira ime putanje direktorijuma u koji se treba chroot nakon provjere autentičnosti . Direktorij mora sadržavati potrebne datoteke i direktorije za podršku sesije korisnika.

Za interaktivnu sesiju, ovo zahtijeva najmanje 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 kreirajte datoteke /dev na sljedeći način koristeći mknod komandu. U naredbi ispod, oznaka -m se koristi za specificiranje bitova dozvola za fajl, 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ću dozvolu za chroot zatvor. Imajte na umu da chroot jail i njegovi poddirektoriji i poddatoteke moraju biti u vlasništvu root korisnika, i da ih ne može pisati bilo koji normalan korisnik ili grupa:

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

Korak 2: Postavite interaktivnu ljusku za SSH Chroot Jail

5. Prvo kreirajte bin direktorij, a zatim kopirajte datoteke /bin/bash u bin direktorij koristeći cp naredba kako slijedi:

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

6. Sada identificirajte bash potreban za dijeljene libs, kao u nastavku, i kopirajte ih u lib direktorij:

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: Kreirajte i konfigurirajte SSH korisnika

7. Sada kreirajte SSH korisnika naredbom useradd i postavite sigurnu lozinku za korisnika:

useradd tecmint
passwd tecmint

8. Kreirajte direktorij općih konfiguracija chroot jaila, /home/test/etc i kopirajte ažurirane datoteke računa (/etc/passwd i /etc/group) u ovaj direktorij na sljedeći način:

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /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 redove ispod u datoteci.

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

Sačuvajte datoteku i izađite, te ponovo pokrenite SSHD usluge:

systemctl restart sshd
OR
service sshd restart

Korak 5: Testiranje SSH-a sa Chroot Jail-om

10. U ovom trenutku, testirajte da li chroot jail postavka radi kako se očekuje:

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

Sa gornje slike ekrana, možemo vidjeti da je SSH korisnik zaključan u chrooted zatvoru i ne može pokrenuti nikakve vanjske komande (ls, date, uname, itd.).

Korisnik može izvršiti samo bash i njegove ugrađene komande kao što su (pwd, history, echo, itd.) kao što se vidi ispod:

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

Korak 6. Kreirajte SSH korisnički direktorij i dodajte Linux komande

11. Iz prethodnog koraka možemo primijetiti da je korisnik zaključan u korijenskom direktoriju, možemo kreirati kućni direktorij za SSH korisnika ovako (učinite ovo 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 kao što su ls, date i 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 provjerite dijeljene biblioteke za gornje naredbe i premjestite ih u chrooted direktorij 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 sa Chroot Jail-om

14. Uradite završni test koristeći sftp; provjerite rade li komande koje ste upravo instalirali.

Dodajte red ispod u datoteku /etc/ssh/sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Sačuvajte fajl i izađite. Zatim ponovo pokrenite SSHD usluge:

systemctl restart sshd
OR
service sshd restart

15. Sada, testirajte korištenjem SSH-a i dobit ćete sljedeću grešku:

ssh [email 

Pokušajte koristiti SFTP na sljedeći način:

sftp [email 

To je to za sada! U ovom članku smo vam pokazali kako ograničiti SSH korisnika u datom direktoriju (chrooted jail) u Linuxu. Upotrijebite odjeljak za komentare ispod kako biste nam iznijeli svoje mišljenje o ovom vodiču.