AA_PO-23434_SergeyMironov-123RF.jpg

© SergeyMironov, 123RF

Programme absichern mit Firejail

Heiße Zelle

Firejail erhöht die Sicherheit, indem es beliebige Programme und Prozesse in voneinander abgeschottete Gefängnisse sperrt und den Zugriff auf das Dateisystem strikt reglementiert.

Schadprogramme gelangen häufig über Sicherheitslücken im Browser oder in Hintergrunddiensten auf das eigene System. Dort manipulieren sie dann Konfigurationsdateien, installieren Rootkits oder missbrauchen andere Programme.

Firejail verhindert derartige Attacken, indem es Firefox, Apache oder ein beliebiges anderes gefährdetes Programm in ein Gefängnis sperrt. In dieser sogenannten Sandbox können die solcherart arretierten Anwendungen dann keine wichtigen Dateien mehr manipulieren und höchstens noch innerhalb ihrer engen Mauern Amok laufen. Auf Wunsch reglementiert und verändert Firejail sogar die Sicht der entsprechenden Prozesse auf das Dateisystem und verwirft alle von den Programmen erstellen Dateien.

Im Gegensatz zum Einsatz in einer virtuellen Maschine, die gleich einen kompletten PC nachbildet, laufen in der Sandbox von Firejail neben beliebigen GUI- und Server-Anwendungen auch anspruchsvolle Spiele mit 3D-Beschleunigung mit voller Leistung.

Gefängnisbau

Auf der Firejail-Homepage [1] warten bereits je ein DEB- (Debian, Ubuntu, Linux Mint) und RPM-Paket (Fedora, OpenSuse, CentOS 7 und RHEL 7) auf den Download. Beide setzen zwingend ein 64-Bit-System voraus. Arch-Linux-Nutzer finden Firejail im AUR, für Slackware stehen Pakete im SlackBuilds-Repository bereit [2]. Firejail arbeitet mit allen Kerneln der 3er-Reihe zusammen. Einige wenige Funktionen können Sie allerdings erst unter neueren Kernel-Versionen nutzen (dazu später noch mehr).

Finden Sie kein für die von Ihnen verwendete Distribution passendes Paket, greifen Sie zum Quellcode-Archiv. Nachdem Sie es entpackt haben, wechseln Sie ins dabei neu entstandene Verzeichnis und übersetzen Firejail mit dem klassischen Dreisatz (Listing 1). Die daraufhin startende Übersetzung und Installation setzt Make, einen C-Compiler und die Kernel-Header voraus.

Listing 1

$ ./configure && make && sudo make install

Um eine Anwendung in ein Gefängnis zu sperren, rufen Sie Firejail mit dem Namen des zu startenden Programms auf. Ein Beispiel für Firefox zeigt die erste Zeile von Listing 1. Sofern die einzusperrende Anwendung noch Parameter benötigt, hängen Sie diese einfach hinten an den Befehl an.

Listing 2

$ firejail firefox
$ firejail "/etc/init.d/sshd start && sleep inf"

Rufen Sie Firejail ohne jeden Parameter auf, so startet wie in Abbildung 1 eine Sandbox mit einer Bash-Shell. Entgegen der offiziellen Dokumentation [3] läuft Firejail so lange immer im Hintergrund weiter, bis sich das Programm in der Sandbox beendet.

Abbildung 1: Beim Start gibt Firejail noch eine Übersicht über die in der Sandbox gültigen IP-Adressen. In der von Firejail gestarteten Sandbox besitzt das eingesperrte Programm immer die Prozess-ID 1.

Eine kleine Stolperfalle lauert bei Webservern, Datenbanken und anderen Diensten: Deren Daemons verkrümeln sich nach dem Start umgehend in den Hintergrund. Firejail glaubt dann, das Programm habe sich beendet, und reißt die Sandbox samt Dienst umgehend wieder ein. Um das zu verhindern, müssen Sie zu einem Trick greifen und Firejail nach dem Start des Daemons unendlich lange warten beziehungsweise mitlaufen lassen. Ein entsprechendes Beispiel für SSH sehen Sie in der zweiten Zeile von Listing 2.

Äußerst vergesslich

Die Programme in der Sandbox können auf nahezu sämtliche Verzeichnisse nur lesend zugreifen und somit keine wichtigen Dateien manipulieren. Lediglich die Verzeichnisse /home, /tmp and /var dürfen die eingesperrten Anwendungen weiterhin beschreiben (Abbildung 2).

Abbildung 2: Rufen Sie Firejail mit dem zusätzlichen Parameter --debug auf, dann zeigt das Werkzeug zahlreiche Informationen an, darunter auch die eingebundenen Verzeichnisse.

Genügen diese Restriktionen nicht, dann aktivieren Sie zusätzlich ein sogenanntes Overlay-Dateisystem. Die dahinterstehende Technik kommt auch bei Live-Systemen zum Einsatz: Firejail gaukelt dem Programm in der Sandbox vor, es dürfte im Dateisystem schalten und walten. Stattdessen fängt es jedoch sämtliche Änderungen ab, die es zudem beim Beenden der Sandbox verwirft. Die Daten auf der Festplatte bleiben somit gänzlich unverändert.

Technisch gesehen legt Firejail dazu ein zusätzliches Dateisystem über das vorhandene (siehe Kasten "Interna"). Wenn Sie das Overlay-Dateisystem nutzen möchten, hängen Sie firejail den Parameter --overlay an:

$ firejail --overlay gedit

Mit dem so gestarteten Gnome-Editor können Sie Dateien erstellen und verändern. Nach dem Beenden von Gedit befinden sich jedoch alle neuen Daten im Nirwana, während die vermeintlich geänderten Dateien weiterhin in der ursprünglichen Fassung auf der Festplatte liegen.

Als besonders nützlich erweist sich das Overlay-Dateisystem bei Webbrowsern: Sämtliche gesammelten Cookies, die History und der Cache lösen sich nach dem Beenden in Wohlgefallen auf. Allerdings funktioniert --overlay erst mit einem Linux-Kernel ab Version 3.18. Einige Distributionen haben die zugrundeliegende Kernel-Funktion jedoch schon länger aktiviert, darunter Ubuntu und OpenSuse.

Interna

Firejail erstellt die Sandbox mithilfe der vom Linux-Kernel angebotenen Namespaces. Mit deren Hilfe gaukelt das Programm einem Prozess vor, er würde ganz alleine auf dem System laufen. Zudem nutzt Firejail die Namespaces, um den Zugriff auf das Netzwerk und das Dateisystem zu reglementieren. Zudem erstellt es in der Sandbox einen eigenen Netzwerk-Stack. Die Sandbox besitzt folglich ihre eigene Routing-Tabelle, eigene Netfilter- beziehungsweise Iptables-Firewalls und eigene Netzwerkschnittstellen.

Das Overlay-Dateisystem realisiert Firejail mittels OverlayFS [5]. Dabei landen neue und geänderte Dateien in einem eigenen Dateisystem, das das vorhandene überdeckt. Nach einem ähnlichen Prinzip funktioniert der Private Mode: In ihm mountet Firejail ein Tmpfs-Dateisystem über das Heimatverzeichnis.

Wie die Parameter --seccomp und --caps andeuten, nutzt Firejail dabei die Seccomp-Unterstützung des Kernels beziehungsweise greift auf die sogenannten Linux Capabilities [6] zurück. Experten dürfen hinter --seccomp weitere Syscalls auflisten, die Firejail in der Sandbox blocken soll, wie etwa:

$ firejail --seccomp=chmod,fchmod,fchmodat

Einen tieferen Einblick in den Ablauf der eingesperrten Prozesse gibt das Werkzeug firemon. Mit ihm können Sie alle Fork-, Exec-, ID-Change- und Exit-Ereignisse in der Sandbox verfolgen und bei Bedarf in ein Log schreiben lassen. Firemon benötigt dazu Root-Rechte. Welche Prozesse die Funktionen open, unlink, mkdir, rmdir, stat, access, socket, connect und bind in der Glibc aufrufen, erfahren Sie, wenn Sie Firejail mit dem Parameter --trace starten.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Sandkasten
    Die grafische Benutzeroberfläche Firetools vereinfacht die Nutzung der Sicherheitssoftware Firejail und liefert obendrein nützliche Statistiken und Übersichten.
  • Angetestet
    Datenbanken bequem verwalten mit Adminer 4.1.0, Dateien schnell durchsuchen mit Find and Replace 1.8, Programme sicher einsperren mit Firejail 0.9.6, Datendurchsatz jederzeit im Blick mit Vnstat 1.12b
  • Neue Version der Distribution Parrot dank Sanbox jetzt noch sicherer
    Die Distribution Parrot richtet sich mit ihren vorinstallierten Tools an Sicherheitsexperten und Penetration-Tester. Die jetzt freigegebene Version 3.9 möchte mit verschiedenen Neuerungen den Betrieb noch sicherer und zuverlässiger machen.
  • Digitale Ausgabe LU 04/2015 für 99 Cent
    Pünktlich zur Veröffentlichung der LinuxUser 04/2015 mit dem Titel "TV & Streaming" gibt es die digitalen Ausgaben als Android App, als Epaper für den Browser, im Appstore für iPhone und iPad und bei Amazon am 19. März für nur 99 Cent statt den üblichen 5,99 Euro.
  • Heft-DVDs 06/2014
Kommentare
Rumhängen
Fred (unangemeldet), Freitag, 23. Juni 2017 09:59:42
Ein/Ausklappen

Nun, ehe ich mit "meckern" anfange, muss ich erst mal ein dickes Lob los werden: der Artikel ist absolute Sahne.
Dass es bei mir mit Debian nicht geklappt hat, kann ich da nicht nachvollziehen. Alles lief perfekt, aber als ich debian mit firejail aufgerufen habe, wurde mir gesagt, dass /dev nicht vorhanden sei. Was natürlich auch gestimmt hat - nix da in /debian. Die Installation war also nicht korrekt und das lag dann an Debian selbst.
Ich werde es mal mit einem anderen System (außer Windows) probieren.


Bewertung: 148 Punkte bei 15 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Huawei
Pit Hampelmann, 13.12.2017 11:35, 1 Antworten
Welches Smartphone ist für euch momentan das beste? Sehe ja die Huawei gerade ganz weit vorne. Bi...
Fernstudium Informatik
Joe Cole, 12.12.2017 10:36, 2 Antworten
Hallo! habe früher als ich 13 Jahre angefangen mit HTML und später Java zu programmieren. Weit...
Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 3 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...