Omejite dostop uporabnika SSH do nekaterih imenikov z uporabo Chrooted Jail


Obstaja več razlogov za omejitev seje uporabnika SSH na določen imenik, zlasti na spletnih strežnikih, vendar je očitna varnost sistema. Za zaklepanje uporabnikov SSH v določenem imeniku lahko uporabimo mehanizem chroot.

sprememba root (chroot) v Unixu podobnih sistemih, kot je Linux, je sredstvo za ločevanje določenih uporabniških operacij od ostalega sistema Linux; spremeni navidezni korenski imenik za trenutni uporabniški proces in njegov podrejeni postopek z novim korenskim imenikom, imenovanim chrooted zapor.

V tej vadnici vam bomo pokazali, kako omejiti dostop uporabnika SSH do določenega imenika v Linuxu. Upoštevajte, da bomo vse ukaze izvajali kot root, če ste prijavljeni v strežnik kot običajen uporabnik, uporabite ukaz sudo.

1. korak: Ustvari SSH Chroot Jail

1. Začnite z ustvarjanjem zapora chroot z uporabo spodnjega ukaza mkdir:

# mkdir -p /home/test

2. Nato identificirajte zahtevane datoteke, v skladu s priročno stranjo sshd_config možnost ChrootDirectory določa ime imenika, v katerega želite chroot po overjanju. Imenik mora vsebovati potrebne datoteke in imenike za podporo uporabnikove seje.

Za interaktivno sejo to zahteva vsaj lupino, običajno sh in osnovna vozlišča /dev , kot so null, zero, stdin, stdout, stderr in tty naprave:

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

3. Zdaj z ukazom mknod ustvarite datoteke /dev , kot sledi. V spodnjem ukazu se zastava -m uporablja za določanje bitov dovoljenj za datoteko, c pomeni datoteko znakov in dve številki sta glavni in manjši številki, na katero kažeta datoteki .

# 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. Nato nastavite ustrezno dovoljenje za zapor chroot. Upoštevajte, da mora biti zapor chroot ter njegovi podimeniki in podfili v lasti korenskega uporabnika in ne sme biti zapisan nobenemu običajnemu uporabniku ali skupini:

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

2. korak: Nastavite interaktivno lupino za SSH Chroot Jail

5. Najprej ustvarite imenik bin in nato kopirajte datoteke /bin/bash v imenik bin na naslednji način:

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

6. Zdaj identificirajte zahtevane bash skupne libs , kot spodaj, in jih kopirajte v imenik 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/

3. korak: Ustvarite in konfigurirajte uporabnika SSH

7. Zdaj ustvarite uporabnika SSH z ukazom useradd in nastavite varno geslo za uporabnika:

# useradd tecmint
# passwd tecmint

8. Ustvarite imenik splošnih konfiguracij zapora chroot, /home/test/etc in kopirajte posodobljene datoteke računov (/ etc/passwd in/etc/group) v ta imenik, kot sledi:

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

Opomba: Vsakič, ko v sistem dodate več uporabnikov SSH, boste morali kopirati posodobljene datoteke računov v imenik /home/test/etc .

4. korak: Konfigurirajte SSH za uporabo zapora Chroot

9. Zdaj odprite datoteko sshd_config .

# vi /etc/ssh/sshd_config

in dodajte/spremenite spodnje vrstice v datoteki.

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

Shranite datoteko in zapustite ter znova zaženite storitve SSHD:

# systemctl restart sshd
OR
# service sshd restart

5. korak: Testiranje SSH s Chroot Jail

10. Na tej točki preizkusite, ali namestitev zapora chroot deluje po pričakovanjih:

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

Na zgornjem posnetku zaslona vidimo, da je uporabnik SSH zaklenjen v chrootiranem zaporu in ne more izvajati nobenih zunanjih ukazov (ls, date, uname itd.)

Uporabnik lahko izvaja samo bash in vgrajene ukaze, kot so (pwd, history, echo itd.), Kot je prikazano spodaj:

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

Korak 6. Ustvarite domači imenik uporabnika SSH in dodajte ukaze za Linux

11. Iz prejšnjega koraka lahko opazimo, da je uporabnik zaklenjen v korenskem imeniku, lahko ustvarimo domači imenik za uporabnika SSH tako (naredite to za vse prihodnje uporabnike):

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

12. Nato v imenik bin namestite nekaj uporabniških ukazov, kot so ls, date, mkdir:

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

13. Nato v knjižnicah v skupni rabi preverite zgornje ukaze in jih premaknite v imenik chrooted jail knjižnic:

# 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 s Chroot Jail

14. Naredite zadnji test z uporabo sftp; preverite, ali ukazi, ki ste jih pravkar namestili, delujejo.

V datoteko /etc/ssh/sshd_config dodajte spodnjo vrstico:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Shranite datoteko in zapustite. Nato znova zaženite storitve SSHD:

# systemctl restart sshd
OR
# service sshd restart

15. Zdaj, preizkusite s pomočjo SSH, dobili boste naslednjo napako:

# ssh [email 

Poskusite uporabiti SFTP, kot sledi:

# sftp [email 

Za zdaj je to! V tem članku smo vam pokazali, kako omejiti uporabnika SSH v določenem imeniku (chrooted zapor) v Linuxu. Uporabite spodnji odsek za komentarje in nam predstavite svoje mnenje o tem vodniku.