FreeBSD üçün plegde and unveil-ə bənzər bir izolyasiya mexanizmi hazırlanır

FreeBSD üçün, OpenBSD layihəsi tərəfindən hazırlanmış plegde və açıq sistem çağırışlarını xatırladan proqram təcrid mexanizminin tətbiqi təklif olunur. Plegde-də izolyasiya, tətbiqdə istifadə edilməyən sistem zənglərinə girişi qadağan etməklə və yalnız tətbiqin işləyə biləcəyi fərdi fayl yollarına girişi seçərək açmaqla əldə edilir. Tətbiq üçün sistem zənglərinin və fayl yollarının bir növ ağ siyahısı formalaşır və bütün digər zənglər və yollar qadağandır.

Plegde analoqu ilə FreeBSD üçün hazırlanmış təqdimat arasındakı fərq, proqramların kodunda dəyişiklik etmədən və ya minimal dəyişikliklərlə təcrid etməyə imkan verən əlavə təbəqənin təmin edilməsindən irəli gəlir. Xatırladaq ki, OpenBSD-də plegde və unveil əsas mühitlə sıx inteqrasiyaya yönəlib və hər bir tətbiqin koduna xüsusi annotasiyalar əlavə etməklə istifadə olunur. Mühafizənin təşkilini sadələşdirmək üçün filtrlər fərdi sistem çağırışları səviyyəsində təfərrüatlardan imtina etməyə və sistem zənglərinin siniflərini (giriş/çıxış, faylların oxunması, faylların yazılması, yuvalar, ioctl, sysctl, prosesin işə salınması və s.) manipulyasiya etməyə imkan verir. . Müəyyən hərəkətlər yerinə yetirildiyi üçün tətbiq kodunda giriş məhdudlaşdırma funksiyaları çağırıla bilər, məsələn, lazımi faylları açdıqdan və şəbəkə bağlantısı qurduqdan sonra rozetkalara və fayllara giriş rədd edilə bilər.

FreeBSD üçün plegde və unveil portunun müəllifi ayrıca faylda müəyyən edilmiş qaydaları proqramlara tətbiq etməyə imkan verən pərdə yardım proqramı təklif olunan ixtiyari proqramları təcrid etmək imkanı vermək niyyətindədir. Təklif olunan konfiqurasiya müəyyən proqramlara xas olan sistem zənglərinin siniflərini və tipik fayl yollarını müəyyən edən əsas parametrləri olan faylı (səslə işləmə, şəbəkə qarşılıqlı əlaqəsi, giriş və s.), həmçinin xüsusi proqramlar üçün giriş qaydaları olan faylı ehtiva edir.

Pərdə yardım proqramı ən çox dəyişdirilməmiş kommunal proqramları, server proseslərini, qrafik proqramları və hətta bütün iş masası seanslarını təcrid etmək üçün istifadə edilə bilər. Pərdə Jail və Capsicum alt sistemləri tərəfindən təmin edilən izolyasiya mexanizmləri ilə birlikdə istifadə edilə bilər. Başlanmış proqramlar fərdi məhdudiyyətlərlə əlavə edərək, ana tətbiq üçün müəyyən edilmiş qaydaları miras aldıqda, yuvalanmış izolyasiyanı təşkil etmək də mümkündür. Bəzi kernel əməliyyatları (saxtalama vasitələri, POSIX/SysV IPC, PTY-lər) əlavə olaraq cari və ya əsas proses tərəfindən yaradılmayan kernel obyektlərinə girişin qarşısını alan maneə mexanizmi ilə qorunur.

Proses curtainctl-ə zəng etməklə və ya OpenBSD-də tapılanlara bənzər libcurtain-in plegde() və unveil() funksiyalarından istifadə etməklə öz izolyasiyasını konfiqurasiya edə bilər. Proqram işləyərkən kilidləri izləmək üçün sysctl 'security.curtain.log_level' təmin edilir. X11 və Wayland protokollarına giriş pərdə işləyərkən “-X”/”-Y” və “-W” seçimlərini təyin etməklə ayrıca aktivləşdirilir, lakin qrafik proqramlar üçün dəstək hələ kifayət qədər sabitləşməyib və bir sıra həll olunmamış problemlərə malikdir ( problemlər əsasən X11 istifadə edərkən ortaya çıxır və Wayland dəstəyi daha yaxşı həyata keçirilir). İstifadəçilər yerli qaydalar faylları (~/.curtain.conf) yaratmaqla əlavə məhdudiyyətlər əlavə edə bilərlər. Məsələn, Firfox-dan yalnız ~/Yükləmələr/ kataloquna yazmağa icazə vermək üçün siz “~/Yükləmələr/ : rw +” qaydası ilə “[firefox]” bölməsini əlavə edə bilərsiniz.

Tətbiqə məcburi girişə nəzarət üçün mac_curtain kernel modulu (MAC, Mandatory Access Control), lazımi işləyicilərin və filtrlərin tətbiqi ilə FreeBSD nüvəsi üçün yamaqlar dəsti, tətbiqlərdə plegde və açmaq funksiyalarından istifadə üçün libcurtain kitabxanası, pərdə yardım proqramı, nümunə konfiqurasiya faylları, istifadəçi məkanında bəzi proqramlar üçün testlər və yamaqlar dəsti (məsələn, müvəqqəti fayllarla işi birləşdirmək üçün $TMPDIR istifadə etmək üçün). Mümkünsə, müəllif nüvəyə və tətbiqlərə yamaqlar tələb edən dəyişikliklərin sayını minimuma endirmək niyyətindədir.

Mənbə: opennet.ru

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