SSH ulanyjysynyň belli bir kataloga girmegini çäklendiriň


SSH ulanyjy sessiýasyny belli bir katalogda, esasanam web serwerlerinde çäklendirmegiň birnäçe sebäbi bar, ýöne aç-açan ulgam howpsuzlygy. SSH ulanyjylaryny belli bir katalogda gulplamak üçin, hroot mehanizmini ulanyp bileris.

Linux ýaly Unix ýaly ulgamlarda kök (chroot) üýtgetmek, belli ulanyjy amallaryny Linux ulgamynyň galan böleklerinden aýyrmagyň serişdesidir; Häzirki işleýän ulanyjy prosesi we çaga prosesi üçin görnüp duran kök katalogyny üýtgedilen türme diýilýän täze kök katalogy bilen üýtgedýär.

Bu gollanmada, SSH ulanyjysynyň Linux-da berlen kataloga girmegini nädip çäklendirmelidigini görkezeris. Commandshli buýruklary kök hökmünde ýerine ýetirjekdigimize üns beriň, adaty ulanyjy hökmünde serwere giren bolsaňyz, sudo buýrugyny ulanyň.

1-nji ädim: SSH Chroot türmesini dörediň

1. Aşakdaky mkdir buýrugyny ulanyp, gysga türmäni döretmekden başlaň:

# mkdir -p /home/test

2. Ondan soň, sshd_config adam sahypasyna laýyklykda zerur faýllary kesgitläň, ChrootDirectory opsiýasy tassyklanylandan soň gözlemek üçin katalogyň adyny kesgitleýär. Katalogda ulanyjynyň sessiýasyny goldamak üçin zerur faýllar we kataloglar bolmaly.

Interaktiw sessiýa üçin munuň üçin iň bolmanda bir gabyk, köplenç sh we null, nol, stdin, stdout, stderr we tty enjamlary ýaly esasy /dev düwünleri gerek:

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

3. Indi, mknod buýrugyny ulanyp, aşakdaky ýaly /dev faýllaryny dörediň. Aşakdaky buýrukda, faýl rugsatlarynyň bitlerini kesgitlemek üçin -m baýdagy ulanylýar, c nyşan faýlyny aňladýar we iki san faýllaryň görkezýän esasy we kiçi sanlarydyr. .

# 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. Ondan soň, türmede degişli rugsady goýuň. Esasy türme we onuň gollanmalary we kiçi faýllary kök ulanyja degişli bolmalydygyny, adaty ulanyjy ýa-da topar tarapyndan ýazylmajakdygyny unutmaň:

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

2-nji ädim: SSH Chroot türmesi üçin interaktiw gabyny guruň

5. Ilki bilen bin katalogyny dörediň we soňra /bin/bash faýllaryny aşakdaky ýaly bin katalogyna göçüriň:

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

6. Indi, aşakdaky ýaly zerur paýlaşylan libs kesgitläň we olary lib katalogyna göçüriň:

# 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-nji ädim: SSH ulanyjysyny dörediň we sazlaň

7. Indi, useradd buýrugy bilen SSH ulanyjysyny dörediň we ulanyjy üçin ygtybarly parol belläň:

# useradd tecmint
# passwd tecmint

8. Türme türmesiniň umumy konfigurasiýa katalogyny dörediň, /home/test/etc we täzelenen hasap faýllaryny (/ etc/passwd we/etc/group) şu kataloga aşakdaky ýaly göçüriň:

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

Bellik: Her gezek ulgama has köp SSH ulanyjy goşsaňyz, täzelenen hasap faýllaryny /home/test/etc katalogyna göçürmeli bolarsyňyz.

4-nji ädim: Chroot türmesini ulanmak üçin SSH-i sazlaň

9. Indi sshd_config faýly açyň.

# vi /etc/ssh/sshd_config

we faýlda aşakdaky setirleri goşuň/üýtgediň.

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

Faýly ýazdyryň we çykyň we SSHD hyzmatlaryny täzeden açyň:

# systemctl restart sshd
OR
# service sshd restart

5-nji ädim: Chroot türmesi bilen SSH-ni barlamak

10. Bu pursatda, türmede oturmagyň garaşylşy ýaly işleýändigini barlaň:

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

Aboveokardaky skrinshotdan, SSH ulanyjysynyň tussag edilen türmede gulplanandygyny we daşarky buýruklary (ls, senesi, ady we ş.m.) işledip bilmeýändigini görüp bileris.

Ulanyjy diňe aşakda görkezilişi ýaly (pwd, taryh, echo we ş.m.) ýaly baş we gurlan buýruklary ýerine ýetirip biler:

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

Stepdim 6. SSH Ulanyjynyň öý katalogyny dörediň we Linux buýruklaryny goşuň

11. Öňki ädimden, ulanyjynyň kök katalogynda gulplandygyny görüp bileris, SSH ulanyjysy ýaly öý katalogyny döredip bileris (geljekki ulanyjylar üçin muny ediň):

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

12. Ondan soň, bin katalogyna ls, sene, mkdir ýaly birnäçe ulanyjy buýruklaryny guruň:

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

13. Ondan soň ýokardaky buýruklar üçin umumy kitaphanalary barlaň we olary türme kitaphanalarynyň katalogyna geçiriň:

# 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/

7-nji ädim. SFTP-ni Chroot türmesi bilen barlamak

14. sftp ulanyp gutarnykly synag geçiriň; ýaňy gurnan buýruklaryňyzyň işleýändigini ýa-da ýokdugyny barlaň.

Aşakdaky setiri /etc/ssh/sshd_config faýlyna goşuň:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Faýly ýazdyryň we çykyň. Soňra SSHD hyzmatlaryny täzeden açyň:

# systemctl restart sshd
OR
# service sshd restart

15. Indi SSH ulanyp synap görüň, aşakdaky ýalňyşlygy alarsyňyz:

# ssh [email 

SFTP-i aşakdaky ýaly ulanyp görüň:

# sftp [email 

Häzirlikçe! Bu makalada, Linux-da berlen katalogda (tertipli türme) SSH ulanyjysyny nädip çäklendirmelidigini görkezdik. Bu gollanma baradaky pikirleriňizi bize hödürlemek üçin aşakdaky düşündiriş bölümini ulanyň.