Na žalost tudi po sprejemu ključnih varnostnih ukrepov varnostne ranljivosti še vedno najdejo pot v varne sisteme. Eden od načinov upravljanja in zaščite vašega sistema je omejevanje škode, ki je možna po napadu.
V tej vadnici bomo obravnavali postopek uporabe zapora chroot za obvladovanje sistemskih poškodb v primeru napada. Preučili bomo, kako postopke in podprocese izolirati v določeno okolje z lažnimi korenskimi privilegiji. S tem boste postopek omejili na določen imenik in zavrnili dostop do drugih sistemskih področij.
Kratek uvod v Chroot zapor
Chroot zapor je metoda izolacije procesov in njihovega podprocesa iz glavnega sistema z uporabo lažnih korenskih pravic.
Kot smo že omenili, izolacija določenega postopka z lažnimi korenskimi privilegiji omejuje škodo v primeru zlonamernega napada. Chrootirane storitve so omejene na imenike in datoteke v njihovih imenikih in ob ponovnem zagonu storitve niso trajne.
Zakaj uporabljati chroot zapor
Glavni namen zapora chroot je varnostni ukrep. Chroot je uporaben tudi pri obnavljanju izgubljenih gesel z namestitvijo naprav iz medija v živo.
Nastavitev zapora Chroot ima različne prednosti in slabosti. Tej vključujejo:
Prednosti
- Omeji dostop: V primeru varnostnega ogrožanja so edini poškodovani samo tisti imeniki v zaporu chroot.
- Omejitve ukazov: Uporabniki ali procesi se omejijo na ukaze, dovoljene v zaporu.
Slabosti
- Namestitev je lahko zahtevna.
- Zahteva veliko dela - če potrebujete dodaten ukaz, kot je privzeto dovoljen, ga morate vključiti ročno.
Kako ustvariti osnovni zapor Chroot
V tem postopku bomo ustvarili osnovni zapor chroot s 3 ukazi, omejenimi na to mapo. To bo pomagalo ponazoriti, kako ustvariti zapor in dodeliti različne ukaze.
Začnite z ustvarjanjem glavne mape. To mapo si lahko predstavljate kot mapo / v glavnem sistemu. Ime mape je lahko poljubno. V našem primeru ga imenujemo / chrootjail
sudo mkdir / chrootjailTa imenik bomo uporabili kot ponarejen koren, ki vsebuje ukaze, ki mu jih bomo dodelili. Z ukazi, ki jih bomo uporabili, bomo potrebovali imenik bin (vsebuje izvršljive datoteke ukazov) in itd., imenik (vsebuje konfiguracijske datoteke za ukaze).
V mapi / chrootjail ustvarite ti dve mapi:
sudo mkdir / chrootjail / itd, bin
Naslednji korak je ustvariti imenike za dinamično povezane knjižnice za ukaze, ki jih želimo vključiti v zapor. V tem primeru bomo uporabili ukaze bash, ls in grep.
Z ukazom ldd poiščite odvisnosti teh ukazov, kot je prikazano spodaj:
sudo ldd / bin / bash / bin / ls / bin / grep
Če niste v mapi bin, morate prenesti celotno pot do ukazov, ki jih želite uporabiti. Na primer ldd / bin / bash ali ldd / bin / grep
Iz zgornjega izhoda ldd potrebujemo imenika lib64 in / lib / x86_64-linux-gnu. V imeniku zapora ustvarite te mape.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Ko smo ustvarili dinamične imenike knjižnic, jih lahko naštejemo z drevesom, kot je prikazano spodaj:
Ko bomo napredovali, boste začeli dobivati jasno sliko o tem, kaj pomeni zapor chroot.
Ustvarjamo okolje, podobno običajnemu korenskemu imeniku sistema Linux. Razlika je v tem, da so znotraj tega okolja dovoljeni samo določeni ukazi in dostop omejen.
Zdaj, ko smo ustvarili koš. itd., lib in lib64, lahko dodajamo zahtevane datoteke v ustrezne imenike.
Začnimo z binarnimi datotekami.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
Ko smo kopirali binarne datoteke za ukaze, ki jih potrebujemo, potrebujemo knjižnice za vsak ukaz. Z ukazom ldd si lahko ogledate datoteke, ki jih želite kopirati.
Začnimo z bash. Za bash potrebujemo naslednje knjižnice:
/ lib / x86_64-linux-gnu / libtinfo.torej.6/ lib / x86_64-linux-gnu / libdl.torej.2
/ lib / x86_64-linux-gnu / libc.torej.6
/ lib64 / ld-linux-x86-64.torej.2
Namesto da bi kopirali vse te datoteke eno za drugo, lahko s preprostim zanko for kopiramo vsako knjižnico v vseh knjižnicah v / chrootjail / lib / x86_64-linux-gnu
Ponovimo ta postopek za ukaz ls in grep:
Za ukaz ls:
Za ukaz grep:
Nato imamo znotraj imenika lib64 eno knjižnico v skupni rabi v vseh binarnih datotekah. Lahko ga preprosto prekopiramo s preprostim ukazom cp:
Nato uredimo glavno prijavno datoteko za bash (ki se nahaja v / etc / bash.bashrc v Debianu), tako da lahko bash poziv prilagodimo po svojih željah. Uporaba preprostih ukazov echo in tee, kot je prikazano:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcKo opravimo vse zgornje korake, se lahko v zaporniško okolje prijavimo z ukazom chroot, kot je prikazano.
sudo chroot / chrootjail / bin / bashKorenske privilegije boste dobili s pozivom, podobnim tistim, ustvarjenim v zgornjem ukazu echo and tee.
Ko se prijavite, boste videli, da imate dostop samo do ukazov, ki ste jih vključili, ko ste ustvarili zapor. Če potrebujete več ukazov, jih morate dodati ročno.
OPOMBA: Ker ste vključili lupino bash, boste imeli dostop do vseh bash vgrajenih ukazov. To vam omogoča izhod iz zapora z uporabo ukaza za izhod.
Zaključek
Ta vadnica je zajela, kaj je zapor chroot in kako ga lahko uporabimo za ustvarjanje izoliranega okolja iz glavnega sistema. Tehnike, obravnavane v priročniku, lahko uporabite za ustvarjanje izoliranih okolij za ključne storitve.
Če želite vaditi, kar ste se naučili, poskusite ustvariti zapor apache2.
NAMIG: Začnite z ustvarjanjem korenskega imenika, dodajte konfiguracijske datoteke (etc / apache2), dodajte koren dokumenta (/ var / www / html), dodajte binarni (/ usr / sbin / apache2) in na koncu dodajte potrebne knjižnice (ldd / usr / sbin / apache2)