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.