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.