Nažalost, čak i nakon poduzimanja ključnih sigurnosnih mjera, sigurnosne ranjivosti i dalje pronalaze svoj put do sigurnih sustava. Jedan od načina upravljanja i zaštite vašeg sustava je ograničavanje moguće štete nakon napada.
U ovom uputstvu razgovarat ćemo o procesu korištenja chroot zatvora za upravljanje oštećenjima sustava u slučaju napada. Pogledat ćemo kako izolirati procese i potprocese u određeno okruženje s lažnim root privilegijama. To će ograničiti postupak na određeni direktorij i zabraniti pristup drugim područjima sustava.
Kratki uvod u chroot zatvor
Chroot zatvor je metoda izoliranja procesa i njihovog potprocesa iz glavnog sustava pomoću privilegija lažnih korijena.
Kao što je spomenuto, izoliranje određenog postupka korištenjem lažnih privilegija korijena ograničava štetu u slučaju zlonamjernog napada. Chrootirane usluge ograničene su na direktorije i datoteke unutar njihovih direktorija i nisu trajne nakon ponovnog pokretanja usluge.
Zašto koristiti chroot zatvor
Glavna svrha chroot zatvora je sigurnosna mjera. Chroot je također koristan kada oporavlja izgubljene lozinke postavljanjem uređaja s živih medija.
Postoje razne prednosti i nedostaci postavljanja Chroot zatvora. To uključuje:
Prednosti
- Ograničava pristup: U slučaju ugrožavanja sigurnosti, jedini oštećeni direktoriji su oni unutar chroot zatvora.
- Ograničenja naredbi: Korisnici ili procesi ograničavaju se na naredbe dopuštene u zatvoru.
Mane
- Postavljanje može biti izazovno.
- Zahtijeva puno posla - ako trebate dodatnu naredbu od one dopuštene prema zadanim postavkama, morate je uključiti ručno.
Kako stvoriti osnovni zatvor za Chroot
U ovom ćemo procesu stvoriti osnovni chroot zatvor s 3 naredbe ograničene na tu mapu. To će vam pomoći ilustrirati kako stvoriti zatvor i dodijeliti razne naredbe.
Započnite stvaranjem glavne mape. O ovoj mapi možete razmišljati kao o / mapi u glavnom sustavu. Naziv mape može biti bilo koji. U našem slučaju to nazivamo / chrootjail
sudo mkdir / chrootjailKoristit ćemo ovaj direktorij kao lažni korijen koji sadrži naredbe koje ćemo mu dodijeliti. Uz naredbe koje ćemo koristiti trebat će nam bin direktorij (sadrži izvršne datoteke naredbi) i, itd., direktorij (sadrži konfiguracijske datoteke za naredbe).
Unutar mape / chrootjail stvorite ove dvije mape:
sudo mkdir / chrootjail / itd, bin
Sljedeći je korak stvaranje direktorija za dinamički povezane knjižnice za naredbe koje želimo uključiti u zatvor. Za ovaj primjer koristit ćemo naredbe bash, ls i grep.
Upotrijebite ldd naredbu za popis ovisnosti ovih naredbi, kao što je prikazano dolje:
sudo ldd / bin / bash / bin / ls / bin / grep
Ako niste unutar mape bin, morate proći puni put za naredbe koje želite koristiti. Na primjer, ldd / bin / bash ili ldd / bin / grep
Iz gornjeg izlaza ldd trebaju nam direktoriji lib64 i / lib / x86_64-linux-gnu. Stvorite ove mape unutar zatvorskog direktorija.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Nakon što kreiramo dinamičke direktorije knjižnica, možemo ih navesti pomoću stabla, kao što je prikazano dolje:
Kako napredujemo, počet ćete dobivati jasnu sliku o tome što znači chroot zatvor.
Stvaramo okruženje slično normalnom korijenskom direktoriju Linux sustava. Razlika je u tome što su unutar ovog okruženja dopuštene samo određene naredbe i pristup je ograničen.
Sad kad smo stvorili kantu za smeće. itd., lib i lib64, možemo dodati potrebne datoteke unutar njihovih odgovarajućih direktorija.
Krenimo od binarnih datoteka.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
Nakon kopiranja binarnih datoteka za naredbe koje su nam potrebne, potrebne su nam knjižnice za svaku naredbu. Pomoću naredbe ldd možete pregledati datoteke za kopiranje.
Krenimo od basha. Za bash su nam potrebne sljedeće knjižnice:
/ lib / x86_64-linux-gnu / libtinfo.tako.6/ lib / x86_64-linux-gnu / libdl.tako.2
/ lib / x86_64-linux-gnu / libc.tako.6
/ lib64 / ld-linux-x86-64.tako.2
Umjesto da kopiramo sve ove datoteke jednu po jednu, možemo koristiti jednostavnu petlju for da bismo kopirali svaku knjižnicu u svim knjižnicama u / chrootjail / lib / x86_64-linux-gnu
Ponovimo ovaj postupak i za naredbu ls i grep:
Za naredbu ls:
Za naredbu grep:
Dalje, unutar direktorija lib64 imamo jednu zajedničku knjižnicu u svim binarnim datotekama. Jednostavno ga možemo kopirati pomoću jednostavne cp naredbe:
Dalje, uredimo glavnu datoteku za prijavu na bash (koja se nalazi u / etc / bash.bashrc u Debianu), tako da možemo prilagoditi bash odziv po svom ukusu. Korištenje jednostavnih naredbi eha i tee kao što je prikazano:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcNakon što dovršimo sve gornje korake, možemo se prijaviti u okruženje zatvora pomoću naredbe chroot kako je prikazano.
sudo chroot / chrootjail / bin / bashDobit ćete root privilegije s upitom sličnim onima stvorenim u gornjoj naredbi echo and tee.
Jednom kada se prijavite, vidjet ćete da imate pristup samo naredbama koje ste uključili kad ste stvarali zatvor. Ako vam je potrebno više naredbi, morate ih dodati ručno.
BILJEŠKA: Budući da ste uključili bash ljusku, imat ćete pristup svim bash ugrađenim naredbama. To vam omogućuje da izađete iz zatvora pomoću naredbe exit.
Zaključak
Ovaj je vodič objasnio što je chroot zatvor i kako ga možemo koristiti za stvaranje izoliranog okruženja od glavnog sustava. Tehnike o kojima se raspravlja u vodiču možete koristiti za stvaranje izoliranih okruženja za ključne usluge.
Da biste vježbali ono što ste naučili, pokušajte stvoriti zatvor apache2.
SAVJET: Počnite stvaranjem korijenskog direktorija, dodajte konfiguracijske datoteke (etc / apache2), dodajte korijen dokumenta (/ var / www / html), dodajte binarni (/ usr / sbin / apache2) i na kraju dodajte potrebne knjižnice (ldd / usr / sbin / apache2)