Mehanizam izolacije sličan plegde i unveil se razvija za FreeBSD

Za FreeBSD, predlaže se implementacija mehanizma izolacije aplikacija, koji podsjeća na sistemske pozive plegde i unveil razvijene od strane OpenBSD projekta. Izolacija u plegde se postiže zabranom pristupa sistemskim pozivima koji se ne koriste u aplikaciji, a u otkrivanju selektivnim otvaranjem pristupa samo pojedinačnim putanjama datoteka sa kojima aplikacija može raditi. Za aplikaciju se formira neka vrsta bijele liste sistemskih poziva i putanja datoteka, a svi ostali pozivi i putanje su zabranjeni.

Razlika između analoga plegde i unveil koji se razvija za FreeBSD svodi se na obezbjeđivanje dodatnog sloja koji vam omogućava da izolujete aplikacije bez mijenjanja njihovog koda ili uz minimalne promjene. Podsjetimo da u OpenBSD-u plegde i unveil imaju za cilj čvrstu integraciju sa osnovnim okruženjem i koriste se dodavanjem posebnih napomena u kod svake aplikacije. Kako bi pojednostavili organizaciju zaštite, filteri vam omogućavaju da se oslobodite detalja na nivou pojedinačnih sistemskih poziva i manipulišete 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 dok se izvode određene radnje, na primjer, pristup utičnicama i datotekama može biti odbijen nakon otvaranja potrebnih datoteka i uspostavljanja mrežne veze.

Autor porta plegde i unveil za FreeBSD namerava da obezbedi mogućnost izolovanja proizvoljnih aplikacija, za koje je predložen uslužni program zavese, koji vam omogućava da primenite pravila definisana u posebnom fajlu na aplikacije. Predložena konfiguracija uključuje fajl sa osnovnim postavkama koje definišu klase sistemskih poziva i tipične putanje fajlova specifičnih za određene aplikacije (rad sa zvukom, mrežna interakcija, logovanje, itd.), kao i fajl sa pravilima pristupa za određene aplikacije.

Uslužni program zavjesa se može koristiti za izolaciju većine neizmijenjenih uslužnih programa, serverskih procesa, grafičkih aplikacija, pa čak i cijelih desktop sesija. Zavjesa se može koristiti zajedno sa mehanizmima izolacije koje obezbjeđuju Jail i Capsicum podsistemi. 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 kernela (mogućnosti za otklanjanje grešaka, POSIX/SysV IPC, PTY) su dodatno zaštićene mehanizmom barijere koji sprečava pristup objektima kernela koji nisu kreirani trenutnim ili roditeljskim procesom.

Proces može konfigurirati sopstvenu izolaciju pozivanjem curtainctl ili korištenjem plegde() i unveil() funkcija libcurtaina, slično onima koje se nalaze u OpenBSD-u. Za praćenje zaključavanja dok je aplikacija pokrenuta, osiguran je sysctl ‘security.curtain.log_level’. Pristup X11 i Wayland protokolima je omogućen odvojeno navođenjem opcija “-X”/”-Y” i “-W” prilikom pokretanja zavjese, ali podrška za grafičke aplikacije još uvijek nije dovoljno stabilizirana i ima niz neriješenih problema ( problemi se uglavnom javljaju kada se koristi X11, a podrška za Wayland je mnogo bolje implementirana). Korisnici mogu dodati dodatna ograničenja kreiranjem datoteka lokalnih pravila (~/.curtain.conf). Na primjer, da biste dozvolili pisanje sa Firfoxa samo u ~/Downloads/ direktorij, možete dodati odjeljak “[firefox]” s pravilom “~/Downloads/ : rw +”.

Implementacija uključuje modul kernela mac_curtain za obaveznu kontrolu pristupa (MAC, Mandatory Access Control), set zakrpa za FreeBSD kernel sa implementacijom potrebnih rukovatelja i filtera, libcurtain biblioteku za korištenje plegde i unveil funkcija u aplikacijama, uslužni program zavjesa, primjeri konfiguracijskih datoteka, skup 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 na kernelu i aplikacijama.

izvor: opennet.ru

Dodajte komentar