FreeBSD-l on pakutud rakenduste isoleerimise mehhanism, mis sarnaneb OpenBSD projekti arendatavate süsteemikutsungite pledge ja unveil rakendusele. Pledge'i abil teostatakse isoleerimist, keelates juurdepääsu rakenduses kasutamata süsteemikutsungitele, samas kui unveil võimaldab avada juurdepääsu ainult konkreetsetele failiteedele, millega rakendus võib töötada. Rakendusele luuakse süsteemikutsungite ja failiteede must nimekiri, samas kui kõik muud kutsungid ja teed on keelatud.
FreeBSD-equivalendi pledge ja unveil arendamise eripära seisneb täiendava kihina, mis võimaldab rakenduste isoleerimist ilma nende koodi muutmata või minimaalsete muudatustega. Kuidas on OpenBSD puhul pledge ja unveil suunatud tihedale integratsioonile põhikeskkonnaga ning rakendatakse, lisades spetsiaalsed annotatsioonid iga rakenduse koodile. Kaitse korraldamise lihtsustamiseks võimaldavad filtrid vältida detailide jagamist üksikute süsteemikutsungite tasemel ning manipuleerida süsteemikutsungite klassidega (sisend/väljund, failide lugemine, failide kirjutamine, sokid, ioctl, sysctl, protsesside käitamine jne). Juurdepääsu piiramise funktsioone saab kohe kutsuda rakenduskoodis, näiteks sokkide ja failide juurdepääs võib sulgeda pärast vajalike failide avamist ja võrguühenduse loomist.
Pledge ja unveil FreeBSD jaoks porti autor plaanib pakkuda isoleerimise võimalusi erinevatele rakendustele, mille jaoks on välja pakutud utiliit curtain, mis võimaldab rakendustele rakendada reegleid, mis on määratletud eraldi failis. Pakutud konfiguratsioon sisaldab faili põhiseadetega, mis määratlevad süsteemikutsungite klassid ja tüüpilised failiteed, mis on spetsiifilised teatud rakendustele (heli töötlemine, võrgu suhtlemine, logidesse kirjutamine jne), samuti faili, millel on konkreetsete rakenduste juurdepääsureeglid.
Utiliit curtain saab kasutada enamikku muutmata utiliitide, serveriprotsesside, graafiliste rakenduste ja isegi terve töölaudadesessiooni isoleerimiseks. Curtain toetab koos töötamist isoleerimismehhanismidega, mida pakuvad Jail ja Capsicum alamsüsteemid. Samuti on võimalik korraldada sisemist isoleerimist, kus käivitatavad rakendused pärivad vanemrakendusele seatud reeglid, lisades neile eraldi piiranguid. Mõned tuumaoperatsioonid (äärele rakendamise vahendid, POSIX/SysV IPC, PTYs) on täiendavalt kaitstud barjääride mehhanismi abil, mis ei luba juurdepääsu tuumaobjektidele, mis on loodud mitteolemasoleva või vanemprotsessi poolt.
Protsess saab isoleerimist iseseisvalt seadistada, kasutades curtainctl'i kutsumist või kasutades libcurtain'i pakutavaid funktsioone plegde() ja unveil(), mis sarnanevad OpenBSD funktsioonidele. Rakenduse töös esinevate tõkete jälgimiseks on ette nähtud sysctl 'security.curtain.log_level'. X11 ja Waylandi protokollide juurde pääsemine aktiveeritakse eraldi, määrates curtain'i käivitamisel valikud "-X"/"-Y" ja "-W", kuid graafiliste rakenduste tugi ei ole veel piisavalt stabiilne ning tal on mitmeid lahendamata probleeme (probleemid ilmnevad peamiselt X11 kasutamisel, samas kui Waylandi tugi on oluliselt parem). Kasutajad saavad lisapiiranguid luua, luues kohalikke reeglite faile (~/.curtain.conf). Näiteks Firefoxi kirjutamise lubamiseks ainult katalooge ~ /Downloads/ saab lisada sektsiooni "[firefox]" reegliga "~ /Downloads/ : rw +".
Teostus sisaldab tuuma moodulit mac_curtain mandsüstemaatiliseks juurdepääsul toimub (MAC, Mandatory Access Control), kogumi patšiseid FreeBSD tuumale vajalike töötlejate ja filtrite rakendamiseks, raamatukogu libcurtain, et kasutada funktsioone plegde ja unveil rakendustes, utiliiti curtain, näidisdokumendid, testide kogum ja patšid mõnedele kasutajaruumi programmidele (näiteks $TMPDIR kasutamiseks ajutiste failide töötlemise ühtlustamiseks). Autori soov on, et muudetud muudatusi, mille jaoks on vaja patšide rakendamist tuumale ja rakendustele, oleks võimalikult vähe.
Allikas: opennet.ru
