Quickstart firejail

Ich hatte schon einmal firejail, ein Programm um Anwendungen in Sandboxes vom restlichen System abzuschotten, installiert und damit herumexperimentiert. Aber aus Gründen, an die ich mich nicht mehr erinnere, habe ich es nie wirklich in mein System integriert.

In letzter Zeit ist mir firejail wieder durch Blogeinträge oder diesen Teil einer interessanten Artikelserie ins Gedächtnis gerufen worden und ich werde es nun für so viele Programme wie möglich nutzen.

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

Inhalt

Teilen: E-Mail

Hinterlasse einen Kommentar oder diskutiere im OSBN-Chat.


In den Kommentaren können folgende Formatierungen genutzt werden.