Sajnos, még a létfontosságú biztonsági intézkedések megtétele után is, a biztonsági rések még mindig biztonságos rendszerekbe jutnak. A rendszer kezelésének és védelmének egyik módja a támadás bekövetkeztével lehetséges károk korlátozása.
Ebben az oktatóanyagban megvitatjuk a chroot börtön használatát a rendszer károsodásainak kezelésére támadás esetén. Megvizsgáljuk, hogyan lehet hamis root jogosultságokkal elkülöníteni a folyamatokat és az alfolyamatokat egy adott környezettől. Ezzel korlátozhatja a folyamatot egy adott könyvtárra, és megtagadja a hozzáférést a rendszer többi területéhez.
Rövid bevezetés a chroot börtönbe
A chroot börtön a folyamatok és azok alfolyamatainak elkülönítése a fő rendszertől hamis root jogosultságok alkalmazásával.
Mint említettük, egy adott folyamat hamis root jogosultságokkal történő elkülönítése korlátozza a károkat egy rosszindulatú támadás esetén. A chrootált szolgáltatások a könyvtárakra és a fájljaikra korlátozódnak, és a szolgáltatás újraindításakor nem állandóak.
Miért kell használni a chroot börtönt
A chroot börtön fő célja biztonsági intézkedés. A Chroot akkor is hasznos, ha az elveszett jelszavakat helyreállítja eszközök élő médiából történő csatlakoztatásával.
A chroot börtön beállításának számos előnye és hátránya van. Ezek tartalmazzák:
Előnyök
- Korlátozza a hozzáférést: Biztonsági kompromisszumok esetén az egyetlen sérült könyvtár csak a chroot börtönben található.
- Parancskorlátok: A felhasználók vagy folyamatok a börtönben engedélyezett parancsokra korlátozódnak.
Hátrányok
- Kihívást jelenthet a beállítás.
- Nagyon sok munkát igényel - Ha az alapértelmezés szerint engedélyezetteknél extra parancsra van szükség, akkor manuálisan kell beírnia.
Hogyan lehet létrehozni egy alap Chroot börtönt
Ebben a folyamatban létrehozunk egy alap chroot börtönt, 3 paranccsal, amelyek az adott mappára korlátozódnak. Ez segít szemléltetni a börtön létrehozását és a különféle parancsok hozzárendelését.
Először hozzon létre egy fő mappát. Ezt a mappát úgy gondolhatja, mint a / mappát a fő rendszerben. A mappa neve bármi lehet. Esetünkben / chrootjail-nek hívjuk
sudo mkdir / chrootjailEzt a könyvtárat fogjuk használni hamis gyökérként, amely tartalmazza a hozzá rendelt parancsokat. Az általunk használt parancsokkal megköveteljük a bin könyvtárat (amely tartalmazza a parancs futtatható fájljait) és az stb., könyvtár (amely tartalmazza a parancsok konfigurációs fájljait).
A / chrootjail mappában hozza létre ezt a két mappát:
sudo mkdir / chrootjail / stb., bin
A következő lépés könyvtárak létrehozása a dinamikusan összekapcsolt könyvtárak számára a börtönbe beilleszteni kívánt parancsokhoz. Ebben a példában a bash, ls és grep parancsokat fogjuk használni.
Az ldd paranccsal sorolja fel a parancsok függőségeit, az alábbiak szerint:
sudo ldd / bin / bash / bin / ls / bin / grep
Ha nem a kuka mappában van, akkor meg kell adnia a használni kívánt parancsok teljes elérési útját. Például: ldd / bin / bash vagy ldd / bin / grep
A fenti ldd kimenetből szükségünk van a lib64 és / lib / x86_64-linux-gnu könyvtárakra. A börtön könyvtárban hozza létre ezeket a mappákat.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Miután létrehoztuk a dinamikus könyvtárkönyvtárakat, egy fa segítségével felsorolhatjuk őket, az alábbiak szerint:
Ahogy haladunk, tiszta képet kap arról, hogy mit jelent a chroot börtön.
A Linux rendszer normál gyökérkönyvtárához hasonló környezetet hozunk létre. A különbség az, hogy ebben a környezetben csak meghatározott parancsok engedélyezettek, és a hozzáférés korlátozott.
Most, hogy létrehoztuk a kukát. stb., A lib és a lib64 fájlok hozzáadhatják a szükséges fájlokat a megfelelő könyvtárakba.
Kezdjük a bináris fájlokkal.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
Miután átmásoltuk a szükséges fájlok bináris fájljait, szükségünk van az egyes parancsok könyvtáraira. Az ldd paranccsal megtekintheti a másolni kívánt fájlokat.
Kezdjük a bash-val. A bash esetében a következő könyvtárakra van szükségünk:
/ lib / x86_64-linux-gnu / libtinfo.így.6/ lib / x86_64-linux-gnu / libdl.így.2
/ lib / x86_64-linux-gnu / libc.így.6
/ lib64 / ld-linux-x86-64.így.2
Ahelyett, hogy ezeket a fájlokat egyesével másolnánk, használhatunk egy egyszerű for ciklust az összes könyvtár minden könyvtárának másolásához a / chrootjail / lib / x86_64-linux-gnu könyvtárba
Ismételjük meg ezt a folyamatot mind az ls, mind a grep paranccsal:
Az ls parancshoz:
A grep parancshoz:
Ezután a lib64 könyvtárban van egy megosztott könyvtár az összes bináris fájlban. Egyszerűen másolhatjuk egy egyszerű cp paranccsal:
Ezután szerkesszük a fő bash bejelentkezési fájlt (az / etc / bash könyvtárban található).bashrc a Debianban), hogy kedvünkre csíphessük a bash parancsot. Egyszerű echo és tee parancsok használata az alábbiak szerint:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcMiután elvégeztük az összes fenti lépést, bejelentkezhetünk a börtönbe a chroot paranccsal, az ábra szerint.
sudo chroot / chrootjail / bin / bashA fenti echo és tee parancsban létrehozottakhoz hasonló parancssorral kap root jogosultságokat.
Miután bejelentkezett, látni fogja, hogy csak a börtön létrehozásakor kapott parancsokhoz férhet hozzá. Ha több parancsra van szüksége, manuálisan kell hozzáadnia őket.
JEGYZET: Mivel tartalmazza a bash shellt, hozzáférhet az összes bash beépített parancshoz. Ez lehetővé teszi, hogy kilépjen a börtönből az exit paranccsal.
Következtetés
Ez az oktatóanyag kitért arra, hogy mi is a chroot börtön, és hogyan használhatjuk azt arra, hogy elszigetelt környezetet hozzunk létre a fő rendszerből. Az útmutatóban tárgyalt technikákkal elszigetelt környezeteket hozhat létre a kritikus szolgáltatásokhoz.
A tanultak gyakorlásához próbáljon meg létrehozni egy apache2 börtönt.
CÉLZÁS: Először hozzon létre egy gyökérkönyvtárat, adja hozzá a konfigurációs fájlokat (etc / apache2), adja hozzá a dokumentum gyökerét (/ var / www / html), adja hozzá a bináris fájlt (/ usr / sbin / apache2), végül adja hozzá a szükséges könyvtárakat (ldd / usr / sbin / apache2)