logo

Linux -virtualisointi - Chroot Jail

UNIX -käyttöjärjestelmien chroot on toimenpide, joka muuttaa nykyisen juoksuprosessin ja sen lasten näennäistä juurhakemistoa. Tässä muokatussa ympäristössä toimivat ohjelmat eivät pääse nimetyn hakemistopuun ulkopuolella oleviin tiedostoihin. Tämä rajoittaa pääasiassa heidän pääsynsä hakemistopuulle ja siten he saavat nimen 'Chroot Jail'.

Ajatuksena on, että luot hakemistopuun, johon kopioit tai linkit kaikkiin järjestelmän tiedostoihin, joita tarvitaan prosessin suorittamiseen. Käytä sitten Chroot System -puhelua muuttaaksesi juurhakemiston tämän uuden puun pohjassa ja käynnistämään prosessi, joka toimii siinä chrooted -ympäristössä. Koska se ei oikeastaan ​​voi viitata polkuja muokatun juuren ulkopuolelle, se ei voi haitallisesti lukea tai kirjoittaa näille sijainneille.



Miksi sitä vaaditaan ja miten se eroaa virtuaalikoneista?

Tämä on käyttöjärjestelmän tason virtualisointi, ja sitä käytetään usein virtuaalikoneiden sijasta isäntäjärjestelmän useita eristettyjä tapauksia. Tämä on ytimen tason virtualisointi, eikä sillä ole käytännössä mitään yleiskustannuksia verrattuna virtuaalikoneisiin, jotka ovat sovelluskerroksen virtualisointia, minkä seurauksena se tarjoaa erittäin hyvän menetelmän saman laitteiston useita eristettyjä esiintymiä. Virtuaalikone (VM) on koneen ohjelmiston toteutus ja he hyödyntävät usein sitä, mitä laitteistovirtualisoinnista tunnetaan toimivasta käyttöjärjestelmästä virtuaalikuvan.

Kuinka käyttää Chroot -vankilaa

Peruskomento Chroot -vankilaan luomiseksi on seuraava:

 chroot /path/to/new/root command  
OR
chroot /path/to/new/root /path/to/server
OR
chroot [options] /path/to/new/root /path/to/server

HUOMAUTUS: Vain juuri/etuoikeutettu käyttäjä voi käyttää Chroot -järjestelmän puhelua. Ei-etuoikeutettu käyttäjä, jolla on pääsy komentoon, voi ohittaa Chroot-vankilan.



Vaiheet mini-vankilön luomiseksi 'bash' ja 'ls' -komennolle


1. Luo hakemisto, joka toimii komennon juurena.

 $ mkdir jailed  
$ cd jailed

2. Luo kaikki välttämättömät hakemistot komennolle: Käyttöjärjestelmästäsi riippuen vaadittavat hakemistot voivat muuttua. Loogisesti luomme kaikki nämä hakemistot pitämään kopion vaadituista kirjastoista. Katso vaihe 4 nähdäksesi mitä kaikki hakemistot vaaditaan.

 $ mkdir -p bin lib64/x86_64-linux-gnu lib/x86_64-linux-gnu

3.Run ', jonka komento: Suorita 'mitä' komento löytää LS- ja Bash -komennon sijainti. Käynnissä, jotka komentavat nuo binaarit vankilamme 'bin' -hakemistossa. Varmista, että sinulla ei ole mitään näistä komennoista. Tästä eteenpäin viitamme hakemistoon "Vangittu" Hakemisto mukavuutta varten.



 $ unalias ls # Required only if you have aliased ls command  
$ unalias bash # Required only if you have aliased bash command
$ cp $(which ls) ./bin/
$ cp $(which bash) ./bin/

4. Kopioi sopivat kirjastot/objektit : Vangittu Hakemisto työhön, meidän on kopioitava asianmukaiset kirjastot/esineet vankilassa olevaan hakemistoon. Oletusarvoisesti suoritettava tarkastelee sijainteja, jotka alkavat '/'. Riippuvuuksien löytämiseksi käytämme komentoa 'LDD'

$ ldd $(which bash)  
linux-vdso.so.1 => (0x00007ffc75dd4000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f6577768000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6577564000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f657719a000)
/lib64/ld-linux-x86-64.so.2 (0x000055979f3fd000)

Suorita seuraavat komennot luodaksesi asianmukaiset hakemistot.

$ cp /lib/x86_64-linux-gnu/libtinfo.so.5 lib/x86_64-linux-gnu/  
$ cp /lib/x86_64-linux-gnu/libdl.so.2 lib/x86_64-linux-gnu/
$ cp /lib/x86_64-linux-gnu/libc.so.6 lib/x86_64-linux-gnu/
$ cp /lib64/ld-linux-x86-64.so.2 lib64/

Samoin LS: lle 

$ ldd $(which ls)  
linux-vdso.so.1 => (0x00007fff4f05d000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f9a2fd07000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9a2f93e000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9a2f6cd000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9a2f4c9000)
/lib64/ld-linux-x86-64.so.2 (0x000055e836c69000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9a2f2ac000)
$ cp /lib/x86_64-linux-gnu/libselinux.so.1 lib/x86_64-linux-gnu/  
$ cp /lib/x86_64-linux-gnu/libc.so.6 lib/x86_64-linux-gnu/
$ cp /lib/x86_64-linux-gnu/libpcre.so.3 lib/x86_64-linux-gnu/
$ cp /lib/x86_64-linux-gnu/libdl.so.2 lib/x86_64-linux-gnu/
$ cp /lib64/ld-linux-x86-64.so.2 lib64/
$ cp /lib/x86_64-linux-gnu/libpthread.so.0 lib/x86_64-linux-gnu/


Lopullisen hakemistorakenteen on oltava samanlainen kuin tämä

Chroot -vankila' title=

5. sudo chroot: Suorita tämä komento muuttaaksesi juuren vankilaan liittyväksi hakemistoksi yhdessä kuoreen. Oletuksena se yrittää ladata '/bin/sh' -kuoren.

 $ cd ..  
$ sudo chroot jailed /bin/bash

Saatat kohdata tämän virheen käydessään chroot -komentoa 

chroot: failed to run command `/bin/bash': No such file or directory

Tämä voi johtua kahdesta syystä joko tiedostoa ei ole (mikä on ilmeistä) tai kun latauskirjasto epäonnistuu tai ei ole käytettävissä. Tarkista, jos kirjastot ovat oikeassa paikassa.

6. Uuden kuoren on ponnahdus: Se on vankilamme bash. Meillä on tällä hetkellä vain 2 komentoa asennettuna Bash ja LS. Onneksi CD ja PWD ovat rakennettuja komentoja bash -kuoressa, joten voit käyttää niitä myös.

Hakemiston ympärillä oleva vaeltaminen yritä käyttää 'CD /../' tai jotain vastaavaa. Yritä rikkoa vankila todennäköisesti et voi. :)

Poistua vankilasta 

diana mary blacker
 $ exit

Tärkein ja mielenkiintoisin osa on, että kun juokset 

 $ ps aux

ja löydä prosessi, jonka havaitset, että prosessia on vain yksi 

root 24958 … 03:21 0:00 /usr/bin/sudo -E chroot jailed/ /bin/bash

Mielenkiintoista prosessit vankilassa olevassa kuoressa suoritettavana tämän kuoren yksinkertaisena lapsiprosessina. Kaikki vankitun ympäristön sisällä olevat prosessit ovat vain yksinkertaisia ​​käyttäjätasoprosesseja isäntäjärjestelmässä, ja ne eristetään ytimen tarjoamilla nimitiloilla, joten yleiskustannukset ovat minimaaliset ja lisäetuina saamme eristyksen.

Samoin voit lisätä lisää komentoja sinulle virtuaaliseen vangittuun ympäristöön. Lisätäksesi monimutkaisempia ohjelmia, joita saatat joutua luomaan lisää hakemistoja, kuten '/proc' ja '/dev'. Ne lisäävät prosessin monimutkaisuutta. Toivottavasti emme vaadi sitä tarkoitukseemme.

Tämä on kaikki mitä sinun on tiedettävä Chrootista ja hakemistojen vangitsemisesta. Perimmäisenä tavoitteemme on ymmärtää, mitkä ovat säilöt ja miten palvelut, kuten AWS (Amazon Web Services) Google Cloud ja Docker, pystyvät tarjoamaan niin monia virtuaalisia tapauksia käyttöjärjestelmistä pyynnöstä. Myös miten sys-admin suorittaa useita web-palvelimia useille verkkotunnuksille yhdellä fyysisellä koneella. Tämä oli vain yksi askel kohti sen ymmärtämistä