Objavljen je projekt Firejail 0.9.72, koji razvija sustav za izolirano izvršavanje grafičkih, konzolnih i serverskih aplikacija, omogućujući minimiziranje rizika od kompromitacije glavnog sustava prilikom pokretanja nepouzdane ili potencijalno ranjive aplikacije. Program je napisan na jeziku C, distribuira se pod GPLv2 licencom i može raditi na bilo kojoj Linux distribuciji s kernelom starijim od 3.0. Pripremljeni paketi za Firejail dostupni su u deb (Debian, Ubuntu) i rpm (CentOS, Fedora) formatima.
Za izolaciju u Firejail koriste se prostori imena (namespaces), AppArmor i filtriranje sistemskih poziva (seccomp-bpf) u Linuxu. Nakon pokretanja, program i svi njegovi dječji procesi koriste odvojene prikaze resursa kernela, kao što su mrežni stek, tablica procesa i točke montiranja. Zavisni među sobom aplikacije mogu se spojiti u jedan zajednički sandbox. Po želji, Firejail se može koristiti i za pokretanje Docker, LXC i OpenVZ kontejnera.
Za razliku od sredstava kontejnerske izolacije, firejail je izuzetno jednostavan za konfiguraciju i ne zahtijeva pripremu sistemske slike — sastav kontejnera formira se u hodu na osnovu sadržaja trenutnog FS-a i briše se nakon završetka rada aplikacije. Pružaju se fleksibilna sredstva za određivanje pravila pristupa datotečnom sustavu, moguće je definirati koji su datoteke i direktoriji dopušteni ili zabranjeni za pristup, povezati privremene FS-ove (tmpfs) za podatke, ograničiti pristup datotekama ili direktorijima samo za čitanje, kombinirati direktorije putem bind-mount i overlayfs.
Za veliki broj popularnih aplikacija, uključujući Firefox, Chromium, VLC i Transmission, pripremljeni su gotovi profili izolacije sistemskih poziva. Za dobivanje privilegija potrebnih za postavljanje izoliranog okruženja, izvršna datoteka firejail instalira se s oznakom SUID root (nakon inicijalizacije privilegije se poništavaju). Za izvršavanje programa u režimu izolacije, dovoljno je navesti ime aplikacije kao argument alatu firejail, primjerice, "firejail firefox" ili "sudo firejail /etc/init.d/nginx start".
U novom izdanju:
- Dodani su seccomp filtri sistemskih poziva, koji blokiraju stvaranje prostora imena (za uključivanje dodana je opcija "—restrict-namespaces"). Ažurirane su tablice sistemskih poziva i grp seccomp.
- Poboljšan je način force-nonewprivs (NO_NEW_PRIVS), koji zabranjuje dobivanje dodatnih privilegija u novim procesima.
- Dodana je mogućnost korištenja vlastitih profila AppArmor (za povezivanje je predložena opcija "—apparmor").
- U sustavu za praćenje mrežnog prometa nettrace, koji prikazuje informacije o IP-u i intenzitetu prometa s svake adrese, implementirana je podrška za ICMP i predložene su opcije "—dnstrace", "—icmptrace" i "—snitrace".
- Uklonjene su naredbe —cgroup i —shell (po defaultu se primjenjuje —shell=none). Po defaultu je prekinuta izrada firetunnela. Isključene su opcije chroot, private-lib i tracelog u /etc/firejail/firejail.config. Prekinuta je podrška za grsecurity.
Izvor: opennet.ru
