Za FreeBSD se razvija izolacijski mehanizam sličan plegde i unveil

Za FreeBSD se predlaže implementacija mehanizma izolacije aplikacije, koji podsjeća na sistemske pozive plegde i unveil razvijene u OpenBSD projektu. Izolacija u plegde se postiže zabranom pristupa sistemskim pozivima koji se ne koriste u aplikaciji, a u unveilu selektivnim otvaranjem pristupa samo pojedinačnim putovima datoteka s kojima aplikacija može raditi. Za aplikaciju se formira svojevrsna bijela lista sistemskih poziva i putova datoteka, a svi ostali pozivi i putovi su zabranjeni.

Razlika između FreeBSD analoga plegde i unveil svodi se na pružanje dodatnog sloja koji vam omogućuje izolaciju aplikacija bez mijenjanja njihovog koda ili s minimalnim promjenama. Podsjetimo se da su u OpenBSD-u plegde i unveil usmjereni na usku integraciju s temeljnim okruženjem i koriste se dodavanjem posebnih zabilješki kodu svake aplikacije. Kako biste pojednostavili organizaciju zaštite, filtri vam omogućuju da radite bez detalja na razini pojedinačnih sistemskih poziva i manipulirate klasama sistemskih poziva (ulaz/izlaz, čitanje datoteka, pisanje datoteka, utičnice, ioctl, sysctl, pokretanje procesa itd.) . Funkcije ograničenja pristupa mogu se pozvati u kodu aplikacije kako se izvode određene radnje, na primjer, pristup utičnicama i datotekama može se zabraniti nakon otvaranja potrebnih datoteka i uspostavljanja mrežne veze.

Autor port of plegde i unveil za FreeBSD namjerava pružiti mogućnost izolacije proizvoljnih aplikacija, za što je predložen uslužni program curtain, koji vam omogućuje primjenu pravila definiranih u zasebnoj datoteci na aplikacije. Predložena konfiguracija uključuje datoteku s osnovnim postavkama koje definiraju klase sistemskih poziva i tipične putanje datoteka specifične za pojedine aplikacije (rad sa zvukom, mrežna interakcija, logiranje itd.), kao i datoteku s pravilima pristupa za određene aplikacije.

Uslužni program zavjese može se koristiti za izolaciju većine nepromijenjenih uslužnih programa, poslužiteljskih procesa, grafičkih aplikacija, pa čak i cijelih sesija radne površine. Zavjesa se može koristiti u kombinaciji s izolacijskim mehanizmima koje osiguravaju podsustavi Jail i Capsicum. Također je moguće organizirati ugniježđenu izolaciju, kada pokrenute aplikacije nasljeđuju pravila postavljena za nadređenu aplikaciju, dopunjujući ih pojedinačnim ograničenjima. Neke operacije jezgre (olakšice za otklanjanje pogrešaka, POSIX/SysV IPC, PTY-ovi) dodatno su zaštićene mehanizmom barijere koji sprječava pristup objektima jezgre koji nisu kreirani od strane trenutnog ili nadređenog procesa.

Proces može konfigurirati vlastitu izolaciju pozivanjem curtainctl ili korištenjem libcurtainovih funkcija plegde() i unveil(), sličnih onima koje nalazimo u OpenBSD-u. Za praćenje zaključavanja dok je aplikacija pokrenuta, omogućen je sysctl 'security.curtain.log_level'. Pristup protokolima X11 i Wayland omogućen je zasebno određivanjem opcija “-X”/”-Y” i “-W” prilikom pokretanja zavjese, ali podrška za grafičke aplikacije još nije dovoljno stabilizirana i ima niz neriješenih problema ( problemi se uglavnom pojavljuju kod korištenja X11, a podrška za Wayland implementirana je puno bolje). Korisnici mogu dodati dodatna ograničenja stvaranjem lokalnih datoteka s pravilima (~/.curtain.conf). Na primjer, da biste dopustili pisanje iz Firfoxa samo u direktorij ~/Downloads/, možete dodati odjeljak “[firefox]” s pravilom “~/Downloads/ : rw +”.

Implementacija uključuje kernel modul mac_curtain za obaveznu kontrolu pristupa (MAC, Mandatory Access Control), set zakrpa za FreeBSD kernel s implementacijom potrebnih rukovatelja i filtara, libcurtain biblioteku za korištenje funkcija plegde i unveil u aplikacijama, uslužni program zastora, primjeri konfiguracijskih datoteka, set testova i zakrpa za neke programe u korisničkom prostoru (na primjer, za korištenje $TMPDIR za objedinjavanje rada s privremenim datotekama). Gdje je to moguće, autor namjerava minimizirati broj promjena koje zahtijevaju zakrpe za kernel i aplikacije.

Izvor: opennet.ru

Dodajte komentar