Quickstart firejail

Installation

Unter Debian ist firejail ab Stretch enthalten, bzw. für Jessie in den Backports verfügbar. Man installiert es denkbar einfach:

# apt install firejail
Einrichtung und Benutzung

Für viele Programme sind schon Profile unter /etc/firejail vorhanden und man kann diese einfach nutzen, indem man die Anwendung per firejail $PROGRAMMNAME aufruft. Per firecfg kann man sich für installierte Programme, für die ein Profil vorhanden ist, folgendermaßen automatisch Symlinks nach /usr/local/bin/ anlegen lassen:

# firecfg 

Dadurch genügt es nun das Programm in einem Terminal oder per Alt+F2 mit dem Programmnamen ohne vorangestelltes firejail aufzurufen.

Mit folgendem Befehl kann man sich anzeigen lassen, welche Symlinks zu firejail von firecfg angelegt wurden:

$ firecfg --list

Da viele Programmstarter (.desktop-Dateien) unter /usr/local/share/applications/ den kompletten Pfad zum binary enthalten funktionieren die Verknüpfungen aus den Menüs der Desktopumgebungen für diese Programme nicht mit firejail. Das lässt sich ebenfalls automatisch mit firecfg beheben:

$ firecfg --fix

Dann scannt firecfg die .desktop-Dateien unter /usr/local/share/applications/ nach vollständigen Pfadangaben bei Exec= in den Startern von unterstützten Programmen, kopiert diese nach ~/.local/share/applications/ und trägt dort statt dem kompletten Pfad nur den Namen des binary ein. Nach anschließendem Aus- und Einloggen (bzw. Ausführen von r mittels Alt+F2 bei Gnome3) werden diese Anwendungen nun automatisch in einer Sandbox geöffnet.

Man kann sich anzeigen lassen welche Programme gerade von firejail in einer Sandbox ausgeführt werden:

$ firejail --list

Oder man lässt sich auch sämtliche Subprozesse mit anzeigen:

$ firejail --tree
Eigene Profile anlegen

Möchte man ein Profil abändern erstellt man den Ordner ~/.config/firejail/ und kopiert das entsprechende Profil von /etc/firejail/ in den erstellten Ordner ~/.config/firejail/. Man kann die Profile natürlich auch global in /etc/firejail/ editieren, aber die Änderungen könnten von Updates überschrieben werden.

Möchte man eigene Profile für Programme, für die kein Profil mitgeliefert wird, anlegen macht man dies am Besten unter ~/.config/firejail/$BINARYNAME.profile. Es bietet sich an ein neues Profil auf der Basis von /etc/firejail/default.profile aufzubauen.

Auf die Konfiguration von Profilen werde ich hier (noch?) nicht eingehen, da ich auch noch in der Einarbeitungsphase stecke. Deshalb gibt es hier auch "nur" einen Quickstart-Guide. firecfg --fix wird leider in den Blogbeiträgen, die ich bisher zum Theme gelesen habe, nicht erwähnt. Dummerweise habe ich es erst in der manpage gefunden nachdem ich das schon händisch erledigt hatte. 😄

Profile testen [Update 2017-02-25]

Mit der Option --audit lassen sich Profile auf mögliche Sicherheitslecks untersuchen. Ein einfacher Aufruf ohne weitere Parameter prüft das Defaultprofil:

$ firejail --audit

Die vorhanden Profile lassen sich prüfen indem man einfach den Programmnamen übergibt:

$ firejail --audit firefox

Mögliche Sicherheitslöcher werden von firejail dann folgendermaßen berichtet:

UGLY: I can access files in /home/martin/.mozilla directory. Use "firejail --blacklist=/home/martin/.mozilla" to block it.

In dem fall ist es natürlich ok, dass firefox auf ~/.mozilla zugreifen darf. Findet man aber Zugriffe auf Ordner, die man global unterbinden möchte legt man eine Datei /etc/firejail/disable-common.local an und fügt dort einen blacklist Eintrag ein:

# Lokale firejail blacklist
blacklist ${HOME}/.gnupg
blacklist ${HOME}/.mozilla
blacklist ${HOME}/.thunderbird

Trotzdem sollte man die Programme die man mit firejail in den Berechtigungen einschränkt auch noch einzeln einem Audit unterziehen, da globale Einstellungen in den einzelnen Profilen wieder aufgehoben werden können.

Troubleshooting
Gnome-extensions AddOn im Firefox [Update 2016-12-03]

Heute fiel mir auf, dass ich keine Gnome-extensions mehr im Firefox installieren konnte. Ich konnte es lösen indem ich folgende Zeilen dem firefox.profile hinzugefügt habe:

noblacklist ~/.local/share/gnome-shell/extensions/
whitelist ~/.local/share/gnome-shell/extensions/

Das komplette Profil sieht nun so aus:

# Firejail profile for Mozilla Firefox (Iceweasel in Debian)

noblacklist ~/.mozilla
noblacklist ~/.cache/mozilla
noblacklist ~/.local/share/gnome-shell/extensions/
include /etc/firejail/disable-common.inc
include /etc/firejail/disable-programs.inc
include /etc/firejail/disable-devel.inc

caps.drop all
netfilter
nonewprivs
noroot
protocol unix,inet,inet6,netlink
seccomp
tracelog

whitelist ${DOWNLOADS}
mkdir ~/.mozilla
whitelist ~/.mozilla
mkdir ~/.cache/mozilla/firefox
whitelist ~/.cache/mozilla/firefox
whitelist ~/dwhelper
whitelist ~/.zotero
whitelist ~/.vimperatorrc
whitelist ~/.vimperator
whitelist ~/.pentadactylrc
whitelist ~/.pentadactyl
whitelist ~/.keysnail.js
whitelist ~/.config/gnome-mplayer
whitelist ~/.cache/gnome-mplayer/plugin
whitelist ~/.pki

# Gnome-Shell AddOn
whitelist ~/.local/share/gnome-shell/extensions/

# lastpass, keepassx
whitelist ~/.keepassx
whitelist ~/.config/keepassx
whitelist ~/keepassx.kdbx
whitelist ~/.lastpass
whitelist ~/.config/lastpass


#silverlight
whitelist ~/.wine-pipelight
whitelist ~/.wine-pipelight64
whitelist ~/.config/pipelight-widevine
whitelist ~/.config/pipelight-silverlight5.1

include /etc/firejail/whitelist-common.inc

# experimental features
#private-etc passwd,group,hostname,hosts,localtime,nsswitch.conf,resolv.conf,gtk-2.0,pango,fonts,iceweasel,firefox,adobe,mime.types,mailcap,asound.conf,pulse

Teilen: E-Mail

Hinterlasse einen Kommentar oder diskutiere im OSBN-Chat.

In den Kommentaren können folgende Formatierungen genutzt werden.