15.4. A jailek létrehozása és vezérlése
Vissza | 15. fejezet - A jail alrendszer | Előre

## 15.4. A jailek létrehozása és vezérlése

Egyes rendszergazdák a jaileket a következő két típusba sorolják: „teljes” jail, mely egy valódi FreeBSD rendszerre emlékeztet, és a „szolgáltatás” jail, mely egyetlen, feltehetően kiemelt jogokkal futó alkalmazás vagy szolgáltatás számára van előkészítve. Ez a besorolás csupán fogalmi szintű, a jail felépítésének módját nem befolyásolja. A jail(8) man oldal részletesen ismerteti a jailek létrehozását:

`#` `setenv D `/itt/lesz/a/jail`` `#` `mkdir -p $D` `#` `cd /usr/src` `#` `make buildworld` `#` `make installworld DESTDIR=$D` `#` `make distribution DESTDIR=$D` `#` `mount -t devfs devfs $D/dev`

Érdemes először a jail helyét megválasztani. Itt fog fizikailag helyet foglalni a befogadó rendszer állományrendszerén belül a jail. Jó választás lehet erre a `/usr/jail/`jailnév``, ahol a `jailnév` a jailt azonosító rendszernév. A `/usr/` állományrendszeren általában elegendő hely jut a jail állományrendszerének, ami egy „teljes” jail esetén lényegében a FreeBSD alaprendszer alapértelmezett telepítésében megtalálható összes állomány másolatát tartalmazza.

| Ha korábban már a `make world` vagy a `make buildworld` parancs segítségével újrafordítottuk az alaprendszert, akkor ezt a lépést ki is hagyhatjuk és telepítsük az új alaprendszert közvetlenül az új jailbe.
| Ez a parancs fogja felmásolni a jail fizikai helyének választott könyvtár-részfába a működéshez szükséges programokat, függvénykönyvtárakat, man oldalakat és így tovább.
| A make paramétereként megadott `distribution` cél gondoskodik az összes szükséges konfigurációs állomány felmásolásáról. Magyarán szólva, átmásolja az összes telepíhető állományt a `/usr/src/etc/` könyvtárból a jail `/etc` alkönyvtárába, vagyis a `$D/etc/` könyvtárba.

A jaileken belül a devfs(8) csatlakoztatása nem kötelező. Másrészt azonban majdnem mindegyik alkalmazás, a feladatától függően, legalább egy eszközhöz hozzá akar férni. Nagyon fontos, hogy a kezünkbe vegyük a eszközök hozzáférésének irányítását a jaileken belül, mivel a helytelen beállítások révén a támadók csúnya dolgokat tudnak majd művelni. A devfs(8) működését a devfs(8) és devfs.conf(5) man oldalakon is ismertetett szabályrendszerek irányítják.

Ahogy a jailt telepítettük, a jail(8) segédprogrammal tudjuk elindítani. A jail(8) négy kötelező paramétert vár, melyekre a 15.3.1. szakasz - Mi is az a jail?ban ki is térünk. Más paramétereket is megadhatunk, például azt, hogy az elzárt program egy adott felhasználó jogaival fusson. A ``command`` paraméter használata a jail típusától függ: egy virtuális rendszer esetében a `/etc/rc` jó választásnak bizonyulhat, mivel ennek segítségével egy valódi FreeBSD rendszerindítási folyamatát játszhatjuk le. Amennyiben elzárt szolgáltatásról van szól, az adott szolgáltatástól vagy alkalmazástól függ.

A jaileket gyakran már a rendszerindítás során elindítják, amit a FreeBSD `rc` mechanizmusa nagyban meg is könnyít.

1. A rendszer indítása során aktiválandó jailek listáját vegyük hozzá a rc.conf(5) állományhoz:

   jail_enable="YES" # Ide NO-t írjunk, ha ki akarjuk kapcsolni jail_list="`www`" # Szóközzel elválasztva soroljuk fel a jaileket

   ### Megjegyzés:

   A `jail_list` értékeként felsorolt jailek nevei csak betűket és számjegyeket tartalmazhatnak.

2. A `jail_list`-ben szereplő összes jailt meg kell adnunk az ezeket leíró rc.conf(5)-beli beállításokat:

   jail_`www`_rootdir="/usr/jail/www" # a jail gyökérkönyvtára jail_`www`_hostname="`www`.example.org" # a jail neve jail_`www`_ip="192.168.0.10" # a jail IP-címe jail_`www`_devfs_enable="YES" # legyen-e devfs a jailen belül jail_`www`_devfs_ruleset="`www_ruleset`" # az alkalmazott devfs szabályrendszer

   Az rc.conf(5) állományban szereplő jailek esetén a `/etc/rc` szkript fut le, tehát feltételezi, hogy az így megadott jail egy teljes virtuális rendszer. A szolgáltatások jailbe foglalásához meg kell változtatnunk a jail alapértelmezett parancsát is. Ezt a `jail_`jailnév`_exec_start` opció megfelelő beállításával tudjuk megtenni.

   ### Megjegyzés:

   Az összes itt elérhető opciót a rc.conf(5) man oldalon találhatjuk meg.

Ha léteznek a megfelelő bejegyzések az `rc.conf` állományban, akkor az `/etc/rc.d/jail` szkript is használható arra, hogy a jaileket kézzel indítsuk el vagy állítsuk le:

`#` `/etc/rc.d/jail start `www`` `#` `/etc/rc.d/jail stop `www``

A jail(8) leállítására jelen pillanatban még nem érhető el szabályos módszer. Ez azért van, mert a szabályos rendszerleállítást elvégző parancsok nem használhatóak a jailen belül. Emiatt a jaileket a legtisztábban úgy tudjuk leállítani, ha kiadjuk az alábbi parancsot magában a jailben vagy pedig a jexec(8) segédprogrammal a jailen kívülről:

`#` `sh /etc/rc.shutdown`

Erről a témáról többet a jail(8) man oldalon olvashatunk.

Vissza | Fel | Előre
15.3. Bevezetés | Főoldal | 15.5. Finomhangolás és karbantartás

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.