Deja, net ir imantis svarbiausių saugumo priemonių, saugumo spragos vis tiek patenka į saugias sistemas. Vienas iš būdų valdyti ir apsaugoti savo sistemą yra apriboti galimą žalą įvykus atakai.
Šioje pamokoje aptarsime chroot kalėjimo procesą sistemos pažeidimams valdyti atakos atveju. Mes pažvelgsime, kaip atskirti procesus ir antrinius procesus tam tikroje aplinkoje, turint klaidingas root teises. Tai atlikus, procesas bus apribotas konkrečiu katalogu ir bus uždrausta prieiga prie kitų sistemos sričių.
Trumpas įvadas į chroot kalėjimą
„Chroot“ kalėjimas yra būdas atskirti procesus ir jų antrinį procesą nuo pagrindinės sistemos naudojant neteisingas root teises.
Kaip minėta, atskyrus konkretų procesą naudojant netikras pagrindines teises, ribojama žala kenkėjiškos atakos atveju. „Chrooted“ paslaugos yra skirtos tik jų katalogų katalogams ir rinkmenoms ir yra nepertraukiamos paleidus paslaugą iš naujo.
Kodėl verta naudoti chroot kalėjimą
Pagrindinis chroot kalėjimo tikslas yra saugumo priemonė. „Chroot“ taip pat naudinga atkuriant prarastus slaptažodžius, pritvirtinant įrenginius iš tiesioginės terpės.
Yra įvairių pranašumų ir trūkumų nustatant chroot kalėjimą. Jie apima:
Privalumai
- Riboja prieigą: Jei kyla pavojus saugumui, pažeisti yra tik chroot kalėjime esantys katalogai.
- Komandų apribojimai: vartotojai ar procesai apsiriboja komandomis, leidžiamomis kalėjime.
Trūkumai
- Tai gali būti sudėtinga nustatyti.
- Tai reikalauja daug darbo. Jei jums reikia papildomos komandos, nei leidžiama pagal nutylėjimą, turite ją įtraukti rankiniu būdu.
Kaip sukurti pagrindinę Chroot kalėjimą
Šiame procese sukursime pagrindinį chroot kalėjimą su 3 komandomis, apribotomis tame aplanke. Tai padės parodyti, kaip sukurti kalėjimą ir priskirti įvairias komandas.
Pradėkite nuo pagrindinio aplanko sukūrimo. Jūs galite galvoti apie šį aplanką kaip / aplanką pagrindinėje sistemoje. Aplanko pavadinimas gali būti bet koks. Mūsų atveju tai vadiname / chrootjail
sudo mkdir / chrootjailŠį katalogą naudosime kaip netikrą šaknį su komandomis, kurias jam priskirsime. Su komandomis, kurias naudosime, mums reikės šiukšliadėžės katalogo (kuriame yra vykdomieji failai) ir kt., katalogas (kuriame yra komandų konfigūracijos failai).
Aplanke / chrootjail sukurkite šiuos du aplankus:
sudo mkdir / chrootjail / ir tt, bin
Kitas žingsnis - sukurti katalogus dinamiškai susietoms bibliotekoms komandoms, kurias norime įtraukti į kalėjimą. Šiame pavyzdyje naudosime komandas „bash“, „ls“ ir „grep“.
Naudokite komandą ldd, kad išvardytumėte šių komandų priklausomybes, kaip parodyta žemiau:
sudo ldd / bin / bash / bin / ls / bin / grep
Jei esate ne šiukšliadėžės aplanke, turite pereiti visą komandų, kurias norite naudoti, kelią. Pvz., Ldd / bin / bash arba ldd / bin / grep
Iš aukščiau esančios ldd išvesties mums reikia katalogų lib64 ir / lib / x86_64-linux-gnu. Kalėjimo kataloge sukurkite šiuos aplankus.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Sukūrę dinaminius bibliotekos katalogus, galime juos išvardyti naudodami medį, kaip parodyta žemiau:
Kai progresuosime, pradėsite susidaryti aiškų vaizdą apie tai, ką reiškia chroot kalėjimas.
Mes kuriame aplinką, panašią į įprastą „Linux“ sistemos šakninį katalogą. Skirtumas yra tas, kad šioje aplinkoje leidžiamos tik konkrečios komandos, o prieiga yra ribota.
Dabar, kai sukūrėme šiukšliadėžę. ir pan., lib ir lib64, reikiamus failus galime įtraukti į atitinkamus katalogus.
Pradėkime nuo dvejetainių failų.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
Nukopijavę mums reikalingų komandų dvejetainius failus, kiekvienai komandai reikalingos bibliotekos. Norėdami peržiūrėti kopijuojamus failus, galite naudoti komandą „ldd“.
Pradėkime nuo bash. „Bash“ reikalingos šios bibliotekos:
/ lib / x86_64-linux-gnu / libtinfo.taip.6/ lib / x86_64-linux-gnu / libdl.taip.2
/ lib / x86_64-linux-gnu / libc.taip.6
/ lib64 / ld-linux-x86-64.taip.2
Užuot kopijavę visus šiuos failus po vieną, galime naudoti „loop for“, kad nukopijuotume kiekvieną biblioteką visose bibliotekose į / chrootjail / lib / x86_64-linux-gnu
Pakartokime šį procesą tiek komandai ls, tiek grep:
Komandai „ls“:
Grep komandai:
Toliau, lib64 kataloge, turime vieną bendrą biblioteką visuose dvejetainiuose failuose. Mes galime jį tiesiog nukopijuoti naudodami paprastą cp komandą:
Tada redaguokime pagrindinį „bash“ prisijungimo failą (esantį / etc / bash.„bashrc“ Debian'e), kad galėtume patobulinti „bash“ raginimą pagal savo skonį. Naudojant paprastas echo ir tee komandas, kaip parodyta:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcAtlikę visus aukščiau nurodytus veiksmus, galime prisijungti prie kalėjimo aplinkos naudodami komandą chroot, kaip parodyta.
sudo chroot / chrootjail / bin / bashJūs gausite root teises naudodami raginimą, panašų į tą, kuris sukurtas aukščiau esančioje komandoje echo ir tee.
Prisijungę pamatysite, kad turite prieigą tik prie komandų, kurias įtraukėte kurdami kalėjimą. Jei jums reikia daugiau komandų, turite jas pridėti rankiniu būdu.
PASTABA: Kadangi įtraukėte „bash“ apvalkalą, turėsite prieigą prie visų „bash“ integruotų komandų. Tai leidžia išeiti iš kalėjimo naudojant komandą exit.
Išvada
Šioje pamokoje buvo aptarta, kas yra chroot kalėjimas ir kaip mes galime jį naudoti kurdami izoliuotą aplinką iš pagrindinės sistemos. Norėdami sukurti izoliuotą kritinių paslaugų aplinką, galite naudoti vadove aprašytus metodus.
Norėdami praktikuoti tai, ko išmokote, pabandykite sukurti apache2 kalėjimą.
PATARIMAS: Pradėkite kurdami šakninį katalogą, pridėkite konfigūracijos failus (etc / apache2), pridėkite dokumento šaknį (/ var / www / html), pridėkite dvejetainį failą (/ usr / sbin / apache2) ir galiausiai pridėkite reikalingas bibliotekas (ldd / usr / sbin / apache2)