Apriboti SSH vartotojo prieigą prie tam tikro katalogo naudojant „Chrooted Jail“


Yra kelios priežastys apriboti SSH vartotojo sesiją tam tikru katalogu, ypač žiniatinklio serveriuose, tačiau akivaizdu, kad tai yra sistemos sauga. Norėdami užrakinti SSH vartotojus tam tikrame kataloge, galime naudoti chroot mechanizmą.

„root“ („chroot“) pakeitimas panašiose į „Unix“ sistemose, tokiose kaip „Linux“, yra priemonė atskirti konkrečias vartotojo operacijas nuo likusios „Linux“ sistemos; pakeičia akivaizdų dabartinio vykdomo vartotojo proceso šakninį katalogą ir jo antrinį procesą su nauju šakniniu katalogu, vadinamu chrooted kalėjimu.

Šioje pamokoje parodysime, kaip apriboti SSH vartotojo prieigą prie nurodyto „Linux“ katalogo. Atminkite, kad visas komandas vykdysime kaip šakninę, naudokite komandą sudo, jei esate prisijungę prie serverio kaip įprastas vartotojas.

1 veiksmas: sukurkite „SSH Chroot Jail“

1. Pradėkite sukurdami chroot kalėjimą naudodami žemiau esančią komandą mkdir:

# mkdir -p /home/test

2. Tada nustatykite reikiamus failus pagal „sshd_config“ žmogaus puslapį, parinktis ChrootDirectory nurodo katalogo, į kurį norite įeiti, pavadinimą po autentifikavimo. Kataloge turi būti reikalingi failai ir katalogai, palaikantys vartotojo sesiją.

Interaktyviai sesijai tam reikalingas bent apvalkalas, paprastai sh ir pagrindiniai /dev mazgai, tokie kaip null, zero, stdin, stdout, stderr ir tty įrenginiai:

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

3. Dabar naudodami komandą mknod sukurkite failus /dev taip. Žemiau esančioje komandoje žymė -m naudojama failo leidimo bitams nurodyti, c reiškia simbolių failą, o du skaičiai yra didieji ir mažieji skaičiai, į kuriuos rodo failai .

# 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. Po to nustatykite tinkamą leidimą chroot kalėjime. Atminkite, kad „chroot“ kalėjimas, jo pakatalogiai ir antriniai failai turi priklausyti root vartotojui ir negali būti parašyti jokiam normaliam vartotojui ar grupei:

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

2 žingsnis: Nustatykite SSH „Chroot“ kalėjimo interaktyvųjį apvalkalą

5. Pirmiausia sukurkite katalogą bin ir nukopijuokite /bin/bash failus į katalogą bin taip:

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

6. Dabar nustatykite būtinus bendrinamus libs , kaip nurodyta toliau, ir nukopijuokite juos į katalogą 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 žingsnis: sukurkite ir sukonfigūruokite SSH vartotoją

7. Dabar sukurkite SSH vartotoją naudodami komandą useradd ir nustatykite saugų vartotojo slaptažodį:

# useradd tecmint
# passwd tecmint

8. Sukurkite „chroot jail“ bendrųjų konfigūracijų katalogą, /home/test/etc ir nukopijuokite atnaujintus paskyros failus (/ etc/passwd ir/etc/group) į šį katalogą taip:

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

Pastaba: kiekvieną kartą, kai prie sistemos pridedate daugiau SSH vartotojų, atnaujintus paskyros failus turėsite nukopijuoti į katalogą /home/test/etc .

4 žingsnis: konfigūruokite SSH naudoti „Chroot Jail“

9. Dabar atidarykite failą sshd_config .

# vi /etc/ssh/sshd_config

ir pridėkite/modifikuokite žemiau esančias eilutes faile.

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

Išsaugokite failą, išeikite ir iš naujo paleiskite SSHD paslaugas:

# systemctl restart sshd
OR
# service sshd restart

5 žingsnis: SSH testavimas naudojant „Chroot Jail“

10. Šiuo metu patikrinkite, ar chroot kalėjimo sąranka veikia taip, kaip tikėtasi:

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

Iš aukščiau pateikto ekrano matome, kad SSH vartotojas yra užrakintas chrootiniame kalėjime ir negali paleisti jokių išorinių komandų (ls, data, uname ir kt.).

Vartotojas gali vykdyti tik „bash“ ir jo įmontuotas komandas, tokias kaip (pwd, istorija, aidas ir kt.), Kaip parodyta žemiau:

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

6 žingsnis. Sukurkite SSH vartotojo namų katalogą ir pridėkite „Linux“ komandas

11. Iš ankstesnio žingsnio galime pastebėti, kad vartotojas yra užrakintas šakniniame kataloge, mes galime sukurti tokį SSH vartotojo namų katalogą (darykite tai visiems būsimiems vartotojams):

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

12. Tada kataloge bin įdiekite kelias vartotojo komandas, tokias kaip 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. Tada patikrinkite, ar bendrose bibliotekose nėra aukščiau esančių komandų, ir perkelkite jas į įsibrėžtų kalėjimo bibliotekų katalogą:

# 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 veiksmas. SFTP testavimas naudojant „Chroot Jail“

14. Atlikite paskutinį bandymą naudodami sftp; patikrinkite, ar veikia ką tik įdiegtos komandos.

Į failą /etc/ssh/sshd_config pridėkite žemiau esančią eilutę:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Išsaugokite failą ir išeikite. Tada iš naujo paleiskite SSHD paslaugas:

# systemctl restart sshd
OR
# service sshd restart

15. Dabar išbandykite naudodami SSH, gausite šią klaidą:

# ssh [email 

Pabandykite naudoti SFTP taip:

# sftp [email 

Tai kol kas viskas !. Šiame straipsnyje mes parodėme, kaip apriboti SSH vartotoją tam tikrame „Linux“ kataloge (chrooted jail). Norėdami pasiūlyti savo mintis apie šį vadovą, naudokitės žemiau esančia komentarų skiltimi.