Ierobežojiet SSH lietotāja piekļuvi noteiktam direktorijam, izmantojot ieslodzījuma vietu


Pastāv vairāki iemesli, kā ierobežot SSH lietotāja sesiju līdz noteiktam direktorijam, it īpaši tīmekļa serveros, taču acīmredzams ir sistēmas drošība. Lai bloķētu SSH lietotājus noteiktā direktorijā, mēs varam izmantot chroot mehānismu.

mainīt sakni (chroot) Unix līdzīgās sistēmās, piemēram, Linux, ir līdzeklis atsevišķu lietotāja darbību atdalīšanai no pārējās Linux sistēmas; maina šķietamo pašreizējā lietotāja procesa saknes direktoriju un tā pakārtoto procesu ar jaunu saknes direktoriju, ko sauc par ieslodzīto cietumu.

Šajā apmācībā mēs parādīsim, kā ierobežot SSH lietotāja piekļuvi noteiktam direktorijam Linux. Ņemiet vērā, ka visas komandas mēs palaidīsim kā saknes, izmantojiet komandu sudo, ja esat pieteicies serverī kā parasts lietotājs.

1. darbība: izveidojiet SSH Chroot Jail

1. Sāciet ar chroot cietuma izveidošanu, izmantojot zemāk esošo komandu mkdir:

# mkdir -p /home/test

2. Pēc tam identificējiet nepieciešamos failus saskaņā ar manas lapu sshd_config, opcija ChrootDirectory norāda direktorijas ceļa nosaukumu, uz kuru pēc autentifikācijas ir jākrustojas. Katalogā jābūt nepieciešamajiem failiem un direktorijiem, kas atbalsta lietotāja sesiju.

Interaktīvai sesijai tam ir nepieciešama vismaz čaula, parasti sh un pamata /dev mezgli, piemēram, null, zero, stdin, stdout, stderr un tty ierīces:

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

3. Tagad izveidojiet failus /dev šādi, izmantojot komandu mknod. Zemāk esošajā komandā -m karodziņš tiek izmantots, lai norādītu faila atļauju bitus, c nozīmē rakstzīmju failu, un abi skaitļi ir galvenie un mazie skaitļi, uz kuriem faili norāda .

# 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. Pēc tam ielieciet atbilstošu atļauju chroot cietumā. Ņemiet vērā, ka chroot cietumam, tā apakšdirektorijiem un apakšfailiem jābūt root lietotāja īpašumā, un tos nevar rakstīt neviens parasts lietotājs vai grupa:

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

2. darbība. Iestatiet SSH Chroot Jail interaktīvo čaulu

5. Vispirms izveidojiet direktoriju bin un pēc tam nokopējiet failus /bin/bash direktorijā bin šādi:

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

6. Tagad atrodiet bash nepieciešamos koplietojamos libs , kā norādīts zemāk, un kopējiet tos 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/

3. darbība: izveidojiet un konfigurējiet SSH lietotāju

7. Tagad izveidojiet SSH lietotāju ar komandu useradd un iestatiet lietotājam drošu paroli:

# useradd tecmint
# passwd tecmint

8. Izveidojiet chroot jail vispārīgo konfigurāciju direktoriju, /home/test/etc un kopējiet atjauninātos konta failus (/ etc/passwd un/etc/group) šajā direktorijā šādi:

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

Piezīme. Katru reizi, kad sistēmai pievienojat vairāk SSH lietotāju, atjauninātie konta faili būs jākopē direktorijā /home/test/etc .

4. darbība. Konfigurējiet SSH, lai izmantotu Chroot Jail

9. Tagad atveriet failu sshd_config .

# vi /etc/ssh/sshd_config

un pievienojiet/modificējiet zemāk esošās rindas failā.

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

Saglabājiet failu, izejiet un restartējiet SSHD pakalpojumus:

# systemctl restart sshd
OR
# service sshd restart

5. solis: SSH pārbaude ar Chroot Jail

10. Šajā brīdī pārbaudiet, vai chroot cietuma iestatīšana darbojas kā paredzēts:

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

No iepriekš redzamā ekrānuzņēmuma mēs varam redzēt, ka SSH lietotājs ir bloķēts ieslodzījuma vietā un nevar izpildīt nekādas ārējas komandas (ls, date, uname utt.).

Lietotājs var izpildīt tikai bash un tā iebūvētās komandas, piemēram, (pwd, history, echo uc), kā redzams zemāk:

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

6. solis. Izveidojiet SSH lietotāja mājas direktoriju un pievienojiet Linux komandas

11. No iepriekšējā soļa mēs varam pamanīt, ka lietotājs ir bloķēts saknes direktorijā, mēs varam izveidot mājas direktoriju SSH lietotājam tāpat (dariet to visiem nākamajiem lietotājiem):

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

12. Pēc tam direktorijā bin instalējiet dažas lietotāja komandas, piemēram, 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. Pēc tam pārbaudiet koplietojamās bibliotēkas iepriekš norādītajām komandām un pārvietojiet tās iesakņoto ieslodzījuma bibliotēku direktorijā:

# 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. solis. SFTP pārbaude ar Chroot Jail

14. Veiciet pēdējo pārbaudi, izmantojot sftp; pārbaudiet, vai tikko instalētās komandas darbojas.

Pievienojiet zemāk esošo rindiņu failā /etc/ssh/sshd_config :

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Saglabājiet failu un izejiet. Pēc tam restartējiet SSHD pakalpojumus:

# systemctl restart sshd
OR
# service sshd restart

15. Tagad, pārbaudot, izmantojot SSH, tiks parādīta šāda kļūda:

# ssh [email 

Mēģiniet izmantot SFTP šādi:

# sftp [email 

Pagaidām tas ir viss !. Šajā rakstā mēs parādījām, kā ierobežot SSH lietotāju noteiktā direktorijā (ieslodzītais cietums) Linux. Izmantojiet zemāk esošo komentāru sadaļu, lai piedāvātu mums savas domas par šo ceļvedi.