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 | |
Ha korábban már a | |
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
| |
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
paraméter használata a jail
típusától függ: egy
virtuális rendszer esetében a
command
/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.
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
A jail_list
értékeként felsorolt jailek nevei csak
betűket és számjegyeket
tartalmazhatnak.
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_
opció megfelelő
beállításával tudjuk
megtenni.jailnév
_exec_start
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.
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>.