Opublikowano wersję projektu Firejail 0.9.72, rozwijającego system do izolowanego uruchamiania aplikacji graficznych, konsolowych i serwerowych, który pozwala zminimalizować ryzyko kompromitacji systemu głównego podczas uruchamiania aplikacji niegodnych zaufania lub potencjalnie podatnych na ataki. Program napisany jest w języku C, jest udostępniany na licencji GPLv2 i może działać w dowolnej dystrybucji Linux z jądrem starszym niż 3.0. Przygotowane pakiety Firejail są dostępne w formatach deb (Debian, Ubuntu) oraz rpm (CentOS, Fedora).
Do izolacji w Firejail używane są przestrzenie nazw (namespaces), AppArmor i filtracja wywołań systemowych (seccomp-bpf) w systemie Linux. Po uruchomieniu program i wszystkie jego procesy potomne korzystają z oddzielnych widoków zasobów jądra, takich jak stos sieciowy, tabela procesów i punkty montowania. Aplikacje zależne od siebie można łączyć w jeden wspólny sandbox. W razie potrzeby Firejail można stosować również do uruchamiania kontenerów Docker, LXC i OpenVZ.
W przeciwieństwie do narzędzi kontenerowych, Firejail jest bardzo prosty w konfiguracji i nie wymaga przygotowania obrazu systemowego — skład kontenera jest tworzony na bieżąco na podstawie zawartości aktualnego systemu plików i usuwany po zakończeniu pracy aplikacji. Oferuje elastyczne narzędzia do definiowania zasad dostępu do systemu plików, można określać, do jakich plików i katalogów dostęp jest dozwolony lub zabroniony, podłączać dla danych tymczasowe systemy plików (tmpfs), ograniczać dostęp do plików lub katalogów tylko do odczytu, łączyć katalogi poprzez bind-mount i overlayfs.
Dla dużej liczby popularnych aplikacji, w tym Firefox, Chromium, VLC i Transmission, przygotowano gotowe profile izolacji wywołań systemowych. Aby uzyskać uprawnienia niezbędne do konfiguracji izolowanego środowiska, plik wykonywalny firejail jest instalowany z flagą SUID root (po inicjalizacji uprawnienia są resetowane). Aby uruchomić program w trybie izolacji, wystarczy podać nazwę aplikacji jako argument dla narzędzia firejail, na przykład "firejail firefox" lub "sudo firejail /etc/init.d/nginx start."
W nowym wydaniu:
- Dodano filtr wywołań systemowych seccomp, blokujący tworzenie przestrzeni nazw (dla włączenia dodano opcję "--restrict-namespaces"). Zaktualizowane tabele wywołań systemowych i grupy seccomp.
- Ulepszono tryb force-nonewprivs (NO_NEW_PRIVS), który zabrania uzyskiwania dodatkowych uprawnień w nowych procesach.
- Dodano możliwość korzystania z własnych profili AppArmor (w opcjach połączenia dodano opcję «—apparmor»).
- W systemie śledzenia ruchu sieciowego nettrace, który wyświetla informacje o IP i intensywności ruchu z każdego adresu, dodano wsparcie dla ICMP oraz wprowadzono opcje «—dnstrace», «—icmptrace» i «—snitrace».
- Usunięto polecenia —cgroup i —shell (domyślnie stosowane jest —shell=none). Domyślnie zaprzestano kompilacji firetunnel. Wyłączono ustawienia chroot, private-lib i tracelog w /etc/firejail/firejail.config. Zaprzestano wsparcia dla grsecurity.
Źródło: opennet.ru
