FreeBSD jaoks töötatakse välja isoleerimismehhanism, mis sarnaneb plegde and unveil'iga

FreeBSD jaoks pakutakse välja rakenduse isolatsioonimehhanismi juurutamine, mis meenutab OpenBSD projektis välja töötatud plegde and unveil süsteemikutseid. Plegde isoleerimine saavutatakse, keelates juurdepääsu süsteemikõnedele, mida rakenduses ei kasutata, ja avalikustamisel, avades valikuliselt juurdepääsu ainult üksikutele failiteedele, millega rakendus saab töötada. Rakenduse jaoks moodustatakse süsteemikõnede ja failiteede valge nimekiri ning kõik muud kõned ja teed on keelatud.

Erinevus plegde ja unveili analoogi vahel, mida arendatakse FreeBSD jaoks, tuleneb lisakihi olemasolust, mis võimaldab isoleerida rakendusi ilma nende koodi muutmata või minimaalsete muudatustega. Tuletame meelde, et OpenBSD-s on plegde ja unveil suunatud tihedale integratsioonile aluseks oleva keskkonnaga ning neid kasutatakse iga rakenduse koodile spetsiaalsete märkuste lisamisega. Kaitse korraldamise lihtsustamiseks võimaldavad filtrid loobuda üksikasjadest üksikute süsteemikutsete tasemel ja manipuleerida süsteemikutsete klassidega (sisend/väljund, failide lugemine, failide kirjutamine, pistikupesad, ioctl, sysctl, protsesside käivitamine jne). . Juurdepääsupiirangu funktsioone saab rakenduse koodis välja kutsuda teatud toimingute sooritamisel, näiteks saab pärast vajalike failide avamist ja võrguühenduse loomist keelata juurdepääsu pistikupesadele ja failidele.

FreeBSD port of plegde and unveil autor kavatseb pakkuda võimalust isoleerida suvalised rakendused, mille jaoks on välja pakutud curtain-utiliit, mis võimaldab rakendada rakendustele eraldi failis määratletud reegleid. Kavandatav konfiguratsioon sisaldab põhisätetega faili, mis määratlevad teatud rakenduste jaoks spetsiifilised süsteemikutsete klassid ja tüüpilised failiteed (töö heliga, võrgu interaktsioon, logimine jne), samuti faili konkreetsete rakenduste juurdepääsureeglitega.

Kardinautiliiti saab kasutada enamiku muutmata utiliitide, serveriprotsesside, graafiliste rakenduste ja isegi tervete töölauaseansside eraldamiseks. Kardinat saab kasutada koos isolatsioonimehhanismidega, mida pakuvad alamsüsteemid Jail ja Capsicum. Samuti on võimalik korraldada pesastatud isolatsiooni, kui käivitatud rakendused pärivad põhirakendusele seatud reeglid, täiendades neid individuaalsete piirangutega. Mõned kerneli toimingud (silumisvõimalused, POSIX/SysV IPC, PTY-d) on täiendavalt kaitstud tõkkemehhanismiga, mis takistab juurdepääsu tuumaobjektidele, mida ei loo praegune või vanemprotsess.

Protsess saab ise isolatsiooni seadistada, kutsudes välja curtainctl või kasutades libcurtaini funktsioone plegde() ja unveil(), mis on sarnased OpenBSD-s leiduvatele funktsioonidele. Lukkude jälgimiseks rakenduse töötamise ajal pakutakse sysctl ‘security.curtain.log_level’. Juurdepääs X11 ja Waylandi protokollidele on eraldi lubatud, määrates kardina käivitamisel suvandid “-X”/”-Y” ja “-W”, kuid graafiliste rakenduste tugi ei ole veel piisavalt stabiliseerunud ja sellel on mitmeid lahendamata probleeme ( probleemid ilmnevad peamiselt X11 kasutamisel ja Waylandi tugi on palju paremini rakendatud). Kasutajad saavad lisada täiendavaid piiranguid, luues kohalike reeglite faile (~/.curtain.conf). Näiteks selleks, et lubada Firfoxist kirjutamist ainult kataloogi ~/Allalaadimised/, saate lisada jaotise „[firefox]” reegliga „~/Allalaadimised/ : rw +”.

Rakendus sisaldab kerneli moodulit mac_curtain kohustuslikuks juurdepääsukontrolliks (MAC, Mandatory Access Control), FreeBSD kerneli paikade komplekti koos vajalike töötlejate ja filtritega, libcurtaini teeki plegde ja unveil funktsioonide kasutamiseks rakendustes, kardinautiliit, konfiguratsioonifailide näited, testide ja paikade komplekt mõnede kasutajaruumi programmide jaoks (näiteks $TMPDIR-i kasutamiseks ajutiste failidega töö ühendamiseks). Võimaluse korral kavatseb autor minimeerida muudatuste arvu, mis nõuavad kerneli ja rakenduste paikamist.

Allikas: opennet.ru

Lisa kommentaar