Для FreeBSD развіваецца механізм ізаляцыі, падобны да plegde і unveil.

Для FreeBSD прапанавана рэалізацыя механізму ізаляцыі прыкладанняў, які нагадвае развіваюцца праектам OpenBSD сістэмныя выклікі plegde і unveil. Ізаляцыя ў plegde ажыццяўляецца праз забарону звароту да невыкарыстоўваных у дадатку сістэмных выклікаў, а ў unveil праз выбарачнае адкрыццё доступу толькі для асобных файлавых шляхоў, з якімі можа працаваць прыкладанне. Для прыкладання фармуецца падабенства белага спісу сістэмных выклікаў і файлавых шляхоў, а ўсе астатнія выклікі і шляхі забараняюцца.

Адрозненне які развіваецца для FreeBSD аналогу plegde і unveil зводзіцца да падавання дадатковай праслойкі, якая дазваляе ізаляваць прыкладанні без занясення змен у іх код або пры мінімальных зменах. Нагадаем, што ў OpenBSD plegde і unveil нацэлены на цесную інтэграцыю з базавым асяроддзем і прымяняюцца праз даданне спецыяльных анатацый у код кожнага прыкладання. Для спрашчэння арганізацыі абароны фільтры дазваляюць абыйсціся без дэталізацыі на ўзроўні асобных сістэмных выклікаў і маніпуляваць класамі сістэмных выклікаў (увод/выснова, чытанне файлаў, запіс файлаў, сокеты, ioctl, sysctl, запуск працэсаў і да т.п.). Функцыі абмежавання доступу могуць выклікацца ў кодзе прыкладання па меры выканання тых ці іншых дзеянняў, напрыклад, доступ да сокетаў і файлаў можа зачыняцца пасля адкрыцця патрэбных файлаў і ўсталёўкі сеткавага злучэння.

Аўтар порта plegde і unveil для FreeBSD мае намер падаць магчымасць ізаляцыі адвольных прыкладанняў, для чаго прапанаваная ўтыліта curtain, якая дазваляе ўжываць да прыкладанняў правілы, вызначаныя ў асобным файле. Прапанаваная канфігурацыя ўключае файл з базавымі наладамі, якія вызначаюць класы сістэмных выклікаў і тыпавыя файлавыя шляхі, спецыфічныя для пэўных ужыванняў (праца з гукам, сеткавае ўзаемадзеянне, выснова ў лог і да т.п.), а таксама файл з правіламі доступу канкрэтных прыкладанняў.

Утыліта curtain можа прымяняцца для ізаляцыі большасці немадыфікаваных утыліт, серверных працэсаў, графічных прыкладанняў і нават цэлых сеансаў працоўнага стала. Падтрымліваецца сумеснае выкарыстанне curtain з механізмамі ізаляцыі, якія прадстаўляюцца падсістэмамі Jail і Capsicum. Таксама магчымая арганізацыя ўкладзенай ізаляцыі, калі якія запускаюцца прыкладанні ўспадкоўваюць выстаўленыя бацькоўскаму з дадаткам правілы, дапаўняючы іх асобнымі абмежаваннямі. Некаторыя аперацыі ядра (сродкі адладкі, POSIX/SysV IPC, PTYs) дадаткова абараняюцца пры дапамозе механізму бар'ераў, які не дазваляе звяртацца да аб'ектаў ядра, створаным не бягучым ці бацькоўскім працэсам.

Працэс можа самастойна наладзіць уласную ізаляцыю пры дапамозе выкліку curtainctl або выкарыстоўваючы якія прадстаўляюцца бібліятэкай libcurtain функцыі plegde() і unveil(), аналагічныя падобным функцый з OpenBSD. Для адсочвання блакіровак падчас працы прыкладання прадугледжаны sysctl 'security.curtain.log_level'. Доступ да пратаколаў X11 і Wayland уключаецца асобна праз указанне пры запуску curtain опцый "-X"/"-Y" і "-W", але падтрымка графічных прыкладанняў яшчэ не дастаткова стабілізаваная і мае шэраг нявырашаных праблем (праблемы ў асноўным выяўляюцца пры выкарыстанні X11 , а падтрымка Wayland рэалізавана значна лепш). Карыстальнікі могуць дадаць дадатковыя абмежаванні праз стварэнне лакальных файлаў з правіламі (~/.curtain.conf). Напрыклад, для дазволу запісу з Firfox толькі ў каталог ~/Downloads/ можна дадаць секцыю "[firefox]" з правілам "~/Downloads/ : rw +".

Рэалізацыя ўключае ў сябе модуль ядра mac_curtain для мандатнага кантролю доступу (MAC, Mandatory Access Control), набор патчаў для ядра FreeBSD з рэалізацыяй неабходных апрацоўшчыкаў і фільтраў, бібліятэку libcurtain для выкарыстання функцый plegde і unveil у дадатках, утыліту curtain, прыклады файлаў тэстаў і патчы для некаторых праграм у прасторы карыстача (напрыклад, для выкарыстання $TMPDIR з мэтай уніфікацыі працы з часавымі файламі). Па магчымасці аўтар мае намер звесці да мінімуму лік змен, для якіх патрабуецца ўжыванне патчаў да ядра і прыкладанням.

Крыніца: opennet.ru

Дадаць каментар