„FreeBSD“ kuriamas izoliavimo mechanizmas, panašus į „plegde and unveil“.

FreeBSD atveju siūlomas programos izoliavimo mechanizmo įgyvendinimas, primenantis OpenBSD projekto sukurtus plegde and unveil sistemos iškvietimus. Plegde izoliacija pasiekiama uždraudžiant prieigą prie sistemos iškvietimų, kurie nėra naudojami programoje, ir atskleidžiant pasirinktinai atidarant prieigą tik prie atskirų failų kelių, su kuriais programa gali dirbti. Programai sudaromas tam tikras baltasis sistemos iškvietimų ir failų kelių sąrašas, o visi kiti skambučiai ir keliai yra draudžiami.

Skirtumas tarp „Plegde“ ir „Unveil“ analogo, kuriamo „FreeBSD“, atsiranda dėl papildomo sluoksnio, leidžiančio izoliuoti programas nekeičiant jų kodo arba atliekant minimalius pakeitimus. Prisiminkite, kad OpenBSD plegde ir unveil yra skirti glaudžiai integruoti su pagrindine aplinka ir yra naudojami pridedant specialius komentarus prie kiekvienos programos kodo. Siekiant supaprastinti apsaugos organizavimą, filtrai leidžia atsisakyti detalių atskirų sistemos iškvietimų lygiu ir valdyti sistemos iškvietimų klases (įvestis / išvestis, failų skaitymas, failų rašymas, lizdai, ioctl, sysctl, proceso paleidimas ir kt.) . Prieigos apribojimo funkcijas galima iškviesti programos kode, kai atliekami tam tikri veiksmai, pavyzdžiui, atidarius reikiamus failus ir užmezgus tinklo ryšį, gali būti uždrausta prieiga prie lizdų ir failų.

Port of plegde and unveil for FreeBSD autorius ketina suteikti galimybę išskirti savavališkas programas, kurioms siūlomas užuolaidų įrankis, leidžiantis programoms taikyti atskirame faile apibrėžtas taisykles. Siūloma konfigūracija apima failą su pagrindiniais parametrais, kurie apibrėžia sistemos iškvietimų klases ir tipinius failų kelius, būdingus tam tikroms programoms (darbas su garsu, tinklo sąveika, registravimas ir kt.), taip pat failas su prieigos taisyklėmis konkrečioms programoms.

Užuolaidų programa gali būti naudojama norint atskirti daugumą nepakeistų paslaugų, serverio procesų, grafinių programų ir net visas darbalaukio sesijas. Užuolaidą galima naudoti kartu su Jail ir Capsicum posistemių teikiamais izoliavimo mechanizmais. Taip pat galima organizuoti įdėtą izoliaciją, kai paleistos programos paveldi pagrindinei programai nustatytas taisykles, papildydamos jas individualiais apribojimais. Kai kurios branduolio operacijos (derinimo priemonės, POSIX/SysV IPC, PTY) yra papildomai apsaugotos barjeriniu mechanizmu, kuris neleidžia pasiekti branduolio objektų, kurie nėra sukurti dabartiniu ar pirminiu procesu.

Procesas gali sukonfigūruoti savo izoliaciją iškviesdamas curtainctl arba naudodamas libcurtain plegde() ir unveil() funkcijas, panašias į tas, kurios yra OpenBSD. Norėdami sekti užraktus, kai programa veikia, pateikiamas sysctl „security.curtain.log_level“. Prieiga prie X11 ir Wayland protokolų įjungiama atskirai nurodant "-X"/"-Y" ir "-W" parinktis paleidžiant užuolaidą, tačiau grafinių programų palaikymas dar nėra pakankamai stabilizuotas ir turi daug neišspręstų problemų ( problemų dažniausiai atsiranda naudojant X11 , o Wayland palaikymas įgyvendinamas daug geriau). Vartotojai gali pridėti papildomų apribojimų kurdami vietinių taisyklių failus (~/.curtain.conf). Pavyzdžiui, norėdami leisti rašyti iš „Firfox“ tik į ~/Atsisiuntimų/ katalogą, galite pridėti skyrių „[firefox]“ su taisykle „~/Downloads/ : rw +“.

Įgyvendinimas apima „mac_curtain“ branduolio modulį, skirtą privalomai prieigos kontrolei (MAC, „Mandatory Access Control“), „FreeBSD“ branduolio pataisų rinkinį su reikiamų tvarkyklių ir filtrų įdiegimu, „libcurtain“ biblioteką, skirtą naudoti „plegde“ ir „Unveil“ funkcijas programose, užuolaidų programa, konfigūracijos failų pavyzdžiai, kai kurių vartotojų erdvėje esančių programų testų ir pataisų rinkinys (pavyzdžiui, norint naudoti $TMPDIR darbui su laikinais failais suvienodinti). Jei įmanoma, autorius ketina sumažinti pakeitimų, kuriems reikia branduolio ir programų pataisų, skaičių.

Šaltinis: opennet.ru

Добавить комментарий