Jail

A HupWiki-ből...

A legtöbb UNIX(-szerű) operációs rendszeren a root felhasználónak korlátlan joga van. Sajnos ez nem valami biztonságos dolog. Ha egy támadó root jogokat szerez egy ilyen rendszeren, akkor tulajdonképpen az operációs rendszer összes funkciójához hozzáférhet minden korlátozás nélkül. A FreeBSD-ben vannak olyan funkciók, amelyek korlátozzák a root felhasználó hatalmát, és ezzel csökkentik az esetleges sikeres "betörés" esetén a támadó által okozott károk nagyságát. Ilyen funkciók például a "secure level"-ek (biztonsági szintek).
A FreeBSD-nek a 4.0-RELEASE kiadása óta része egy olyan "segédprogram", amely a jail (magyarul: börtön) névre hallgat. A jail implementáció két szponzornak köszönhető: a serverthweb.com-nak és a Safeport Network Services-nek. Az implementációt Poul-Henning Kamp és Robert N. M. Watson készítette.
A jail tulajdonképpen úgy működik, hogy chroot-ol (elkülönít) egy környezetet, és ott különböző korlátozásokat vezet be azokon a processzeken, amelyek belőle forkolódnak. Például a jail-be zárt processz nem képes érintkezni a jail-en kívüli processzekkel, nem tudja használni a rendszerhívásokat, és optimális esetben nem tud kárt okozni a számítógépen futó operációs rendszerben. A jail-lel egy új biztonsági modell jött létre. Ha a felhasználók a pontenciálisan veszélyeztetett szervizeket (például: Apache, BIND, sendmail, stb.) jail-ben futtatják, akkor a támadó hiába "töri meg" ezeket a szolgáltatásokat, nem tud komolyabb károkat okozni a rendszerben.

Nézzük a dolgokat egy ISP szemszögéből: Adott egy gép, amelyen több száz felhasználó adata van. Ha nem használunk jail-t, akkor egy esetleges betörés esetén a támadó az összes felhasználó adataihoz hozzáférhet, törölheti, módosíthatja azokat. Ha a felhasználókat szeparáljuk, és mindegyik felhasználó csak a saját virtuális szerveréhez fér hozzá, de abból nem tud kilépni, akkor a támadó a kompromittálás esetén csak annak az egy felhasználónak az adataihoz férhet hozzá. A többi felhasználó adatai biztonságosan el vannak különítve.

A jail felépítése

A jail két részből tevődik össze. Az egyik a felhasználó-térben (userland) használható jail program, a másik pedig a kernelben implementált kódrész: a jail() rendszerhívás és a hozzá kapcsolódó korlátozások.

A jail megkötései

  • nem tudsz jail-t futtatni, ha jail-ben vagy
  • azt látod, ahova chroot-olva vagy (például a mount(8) parancs segítségével),
  • csak egy IP-t használhatsz a jail-el belül
  • a SysV IPC-k használata a jail-ben nem biztonságos (alapértelmezés szerint ki vannak kapcsolva)

Külső hivatkozások