Diemžēl pat pēc būtisku drošības pasākumu veikšanas drošības ievainojamības joprojām nonāk drošās sistēmās. Viens no veidiem, kā pārvaldīt un aizsargāt sistēmu, ir ierobežot iespējamos zaudējumus pēc uzbrukuma.
Šajā apmācībā mēs apspriedīsim chroot cietuma izmantošanu, lai pārvaldītu sistēmas bojājumus uzbrukuma gadījumā. Mēs izskatīsim, kā izolēt procesus un apakšprocesus noteiktā vidē ar nepatiesām root tiesībām. Šādi rīkojoties, process tiks ierobežots līdz noteiktam direktorijam un tiks liegta piekļuve citām sistēmas zonām.
Īss ievads ieslodzījuma vietā
Chroot cietums ir metode procesu un to apakšprocesa izolēšanai no galvenās sistēmas, izmantojot viltus root tiesības.
Kā jau minēts, konkrēta procesa izolēšana, izmantojot viltotas root tiesības, ierobežo zaudējumus ļaunprātīga uzbrukuma gadījumā. Pakārtotie pakalpojumi attiecas tikai uz direktorijiem un failiem to direktorijos, un pēc pakalpojuma restartēšanas tie nav pastāvīgi.
Kāpēc izmantot chroot cietumu
Chroot cietuma galvenais mērķis ir drošības līdzeklis. Chroot ir noderīgi arī tad, kad atgūstat zaudētās paroles, uzstādot ierīces no tiešraides multivides.
Chroot cietuma noteikšanai ir dažādas priekšrocības un trūkumi. Tie ietver:
Priekšrocības
- Ierobežo piekļuvi: Drošības kompromisa gadījumā vienīgie bojātie katalogi ir tikai ieslodzījuma vietā.
- Komandu ierobežojumi: lietotāji vai procesi tiek ierobežoti līdz cietumā atļautajām komandām.
Trūkumi
- Iestatīšana var būt sarežģīta.
- Tas prasa daudz darba. Ja jums nepieciešama papildu komanda, nevis tās, kas atļautas pēc noklusējuma, tā jāiekļauj manuāli.
Kā izveidot pamata Chroot cietumu
Šajā procesā mēs izveidosim pamata chroot cietumu ar 3 komandām, kas ierobežotas šai mapei. Tas palīdzēs ilustrēt, kā izveidot cietumu un piešķirt dažādas komandas.
Vispirms izveidojiet galveno mapi. Jūs varat domāt par šo mapi kā / mapi galvenajā sistēmā. Mapes nosaukums var būt jebkas. Mūsu gadījumā mēs to saucam par chrootjail
sudo mkdir / chrootjailMēs izmantosim šo direktoriju kā viltus sakni, kas satur komandas, kuras tam piešķirsim. Ar komandām, kuras mēs izmantosim, mums būs nepieciešams bin katalogs (satur komandu izpildāmos failus) un utt., direktorijs (satur komandu konfigurācijas failus).
Mapē / chrootjail iekšpusē izveidojiet šīs divas mapes:
sudo mkdir / chrootjail / utt., bin
Nākamais solis ir direktoriju izveidošana dinamiski saistītām bibliotēkām komandām, kuras vēlamies iekļaut cietumā. Šajā piemērā mēs izmantosim komandas bash, ls un grep.
Izmantojiet komandu ldd, lai uzskaitītu šo komandu atkarības, kā parādīts zemāk:
sudo ldd / bin / bash / bin / ls / bin / grep
Ja neatrodaties atkritumu mapes iekšpusē, jums jāiziet pilns to komandu ceļš, kuras vēlaties izmantot. Piemēram, ldd / bin / bash vai ldd / bin / grep
No iepriekš minētās ldd izejas mums ir nepieciešami direktoriji lib64 un / lib / x86_64-linux-gnu. Ieslodzījuma direktorijā izveidojiet šīs mapes.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Kad būsim izveidojuši dinamiskos bibliotēkas direktorijus, tos varēsim uzskaitīt, izmantojot koku, kā parādīts zemāk:
Kad mēs progresēsim, jūs sāksit gūt skaidru priekšstatu par to, ko nozīmē ieslodzījuma vieta.
Mēs veidojam vidi, kas līdzīga parastai Linux sistēmas saknes direktorijai. Atšķirība ir tāda, ka šajā vidē ir atļautas tikai īpašas komandas un piekļuve ir ierobežota.
Tagad, kad esam izveidojuši atkritumu tvertni. utt., lib un lib64, mēs varam pievienot nepieciešamos failus viņu attiecīgajos direktorijos.
Sāksim ar binārajiem failiem.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
Pēc vajadzīgo komandu bināro failu nokopēšanas mums katrai komandai ir nepieciešamas bibliotēkas. Lai skatītu kopējamos failus, varat izmantot komandu ldd.
Sāksim ar bash. Attiecībā uz bash mums ir nepieciešamas šādas bibliotēkas:
/ lib / x86_64-linux-gnu / libtinfo.tātad.6/ lib / x86_64-linux-gnu / libdl.tātad.2
/ lib / x86_64-linux-gnu / libc.tātad.6
/ lib64 / ld-linux-x86-64.tātad.2
Tā vietā, lai kopētu visus šos failus pa vienam, mēs varam izmantot vienkāršo cilpu, lai kopētu katru bibliotēku visās bibliotēkās uz / chrootjail / lib / x86_64-linux-gnu
Atkārtosim šo procesu gan komandai ls, gan grep:
Komandai ls:
Grep komandai:
Tālāk, lib64 direktorijā, mums ir viena koplietojama bibliotēka visos bināros failos. Mēs to varam vienkārši nokopēt, izmantojot vienkāršu cp komandu:
Pēc tam rediģēsim galveno bash pieteikšanās failu (atrodas / etc / bash.bashrc Debian), lai mēs varētu pielāgot bash uzvedni pēc savas gaumes. Izmantojot vienkāršas atbalss un tee komandas, kā parādīts:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcPēc visu iepriekš minēto darbību veikšanas mēs varam pieteikties cietuma vidē, izmantojot chroot komandu, kā parādīts.
sudo chroot / chrootjail / bin / bashJūs saņemsiet root privilēģijas ar uzvedni, kas ir līdzīga tām, kas izveidotas iepriekš atbalss un tee komandā.
Pēc pieteikšanās jūs redzēsiet, ka jums ir piekļuve tikai komandām, kuras iekļāvāt, izveidojot cietumu. Ja jums ir nepieciešamas vairāk komandu, tās jāpievieno manuāli.
PIEZĪME: Tā kā esat iekļāvis bash apvalku, jums būs piekļuve visām bash iebūvētajām komandām. Tas ļauj iziet no cietuma, izmantojot izejas komandu.
Secinājums
Šajā apmācībā tika apskatīts, kas ir chroot cietums un kā mēs to varam izmantot, lai izveidotu izolētu vidi no galvenās sistēmas. Varat izmantot rokasgrāmatā aplūkotos paņēmienus, lai izveidotu izolētu vidi kritiskiem pakalpojumiem.
Lai praktizētu apgūto, mēģiniet izveidot apache2 cietumu.
PADOMS: Vispirms izveidojiet saknes direktoriju, pievienojiet konfigurācijas failus (etc / apache2), pievienojiet dokumenta sakni (/ var / www / html), pievienojiet bināro (/ usr / sbin / apache2) un visbeidzot pievienojiet nepieciešamās bibliotēkas (ldd / usr / sbin / apache2)