Mit OpenSnitch den Datenverkehr von Applikationen überwachen

Aus LinuxUser 03/2022

Mit OpenSnitch den Datenverkehr von Applikationen überwachen

© Roman Samborskyi / 123RF.com

Petze im Netzwerk

OpenSnitch agiert als Firewall auf Anwendungsbasis. An seinen Regeln kommt kein Programm vorbei, das eine Verbindung ins Internet aufbauen möchte.

Baut eine Anwendung eine Verbindung ins Internet auf, ist das normal und meist völlig legitim. Es gibt aber selbst im Open-Source-Bereich Programme, die gern nach Hause telefonieren oder den Benutzer tracken, ohne dass der immer weiß, ob das in seinem Interesse liegt oder nur die Neugier des Herstellers befriedigt.

Unter Linux geschieht das in aller Regel per Opt-in, man muss dem Ausforschen also zustimmen. Das betrifft oft Telemetriefunktionen, die den Entwicklern notwendige Informationen über den Umgang der Anwender mit dem jeweiligen Programm geben sollen. Open Source schützt aber nicht immer vor Ausforschung. Bei Firefox muss man die Telemetrie per Opt-out deaktivieren, wenn man ihr nicht zustimmt.

Application Firewalls machen das unerwünschte Treiben hinter dem Rücken des Anwenders sichtbar. Während konventionelle Firewalls die Pakete des Datenstroms von und zur CPU untersuchen, überwacht eine solche Anwendungs-Firewall den ausgehenden Datenfluss auf der Grundlage von Anwendungen. Das darf man nicht mit den vom Namen her ähnlichen Web Application Firewalls (WAF [1]) verwechseln.

Ein Beispiel für eine Application Firewall unter Linux ist Fireprompt [2], unter Windows wäre Glasswire [3] die Alternative. Im Folgenden betrachten wir OpenSnitch [4] näher, eine quelloffene Anwendungs-Firewall, bei der es sich um einen Python-Port der proprietären Personal Firewall Little Snitch [5] für MacOS handelt. Die Entwicklung von OpenSnitch begann vor rund vier Jahren.

Die Petze

Der Namensteil Snitch bei unserem heutigen Kandidaten steht im Englischen für Verräter oder Petze, und genau das macht diese Firewall. Sie analysiert den ausgehenden Datenverkehr von Anwendungen, entlarvt bei entsprechender Konfiguration Tracker und ähnliche Unholde und ermöglicht es Ihnen, im Bedarfsfall steuernd einzugreifen. Generell gilt dabei: Versucht eine Anwendung eine Verbindung ins Netz aufzubauen, so stoppt OpenSnitch dieses Unterfangen zunächst und fragt nach, ob Sie das zulassen wollen. Das erfolgt über die Definition einer Regel. Soweit die Theorie; sehen wir uns die Praxis an.

In den Archiven der gängigen Distributionen ist OpenSnitch noch nicht allzu weit verbreitet. Bei Arch Linux finden sich aktuelle Pakete im AUR. MX Linux bietet OpenSnitch zwar an, aber lediglich in der veralteten Version 1.3.6. Die aktuelle stabile Version 1.4.3 laden Sie als Binärpaket von der Github-Seite des Projekts herunter. Neben DEB- und RPM-Paketen [6] für 32- und 64-Bit-Systeme finden Sie dort auch den Quellcode, falls Sie OpenSnitch selbst bauen möchten. Weitere Pakete stehen für die Architekturen Armhf und Arm64 bereit.

Installation

Wir haben die Version 1.5.0-rc1 getestet, die vermutlich bereits stabil ist, wenn Sie dieses Heft in Händen halten. Dazu installierten wir unter Debian “Sid” (Siduction) und Debian 11 “Bullseye” die Pakete für den Daemon und die GUI.

Bei Siduction gab es ein Problem bei einigen Python-Abhängigkeiten, das wir aber mit dem Befehl sudo apt --fix-broken install beheben konnten. Bei Debian 11 lief die Installation ohne Hänger durch. Debian und dessen Derivat aktivieren den OpenSnitch-Dienst nach dem Einspielen der Software automatisch, bei anderen Distributionen müssen Sie das zum Teil manuell erledigen (Listing 1).

Listing 1

Dienst aktivieren

# systemctl --now enable opensnitched

Nach dem ersten Start verankert sich OpenSnitch im Systemabschnitt der Kontrollleiste. Ein Klick auf das Icon öffnet das Hauptfenster der Anwendung. Ein Rechtsklick darauf erledigt nach Auswahl von Statistiken dasselbe, lässt Sie aber zusätzlich die Firewall deaktivieren oder schließen und bietet den Zugang zur Hilfe in der Dokumentation.

Alles blockiert

Jedes Mal, wenn eine Anwendung auf das Internet zugreifen möchte, für die es noch keine Regel gibt, öffnet OpenSnitch einen Dialog. Das betrifft am Anfang alle Anwendungen, die Verbindungen nach außen anstreben. Bevor Sie also überhaupt dazu kommen, OpenSnitch also aus dem Systembereich aufzurufen, informieren Sie vermutlich bereits mehrere aufeinanderfolgende Fenster, dass Anwendungen auf dem System Hosts außerhalb des eigenen Netzwerks kontaktieren möchten (Abbildung 1).

Abbildung 1: Anfangs blockiert OpenSnitch alle Verbindungen nach außen. Hier fragt der Firmware-Updater Fwupd eine Verbindung an, um seinen Status zu aktualisieren. Am unteren Rand erlauben Sie den Zugriff, lehnen ihn ab oder schränken ihn über verschiedene Parameter ein.

Abbildung 1: Anfangs blockiert OpenSnitch alle Verbindungen nach außen. Hier fragt der Firmware-Updater Fwupd eine Verbindung an, um seinen Status zu aktualisieren. Am unteren Rand erlauben Sie den Zugriff, lehnen ihn ab oder schränken ihn über verschiedene Parameter ein.

Wenn Sie in einem solchen Fenster einer Anwendung den Kontakt nach außen erlauben, gilt das standardmäßig bis zum nächsten Neustart. Sie können die neue Regel aber auch dauerhaft machen oder ihre Gültigkeit auf einen bestimmten Zeitraum beschränken. Optional definieren Sie, ob die Regel nur für den laufenden Prozess, die anvisierte URL oder die zu kontaktierende Domain gelten soll.

Die von Ihnen erstellten Regeln speichert das Programm im JSON-Format in der Datei/etc/opensnitch/rules, die Sie auch von Hand editieren können. Die Liste mit Anwendungen, die externe Hosts kontaktieren wollen, speichern Sie bei Bedarf als CSV-Datei, etwa, um sie mit externen Anwendungen weiterzuverarbeiten (Abbildung 2).

Abbildung 2: OpenSnitch-Regeln lassen sich nicht nur im grafischen Interface erstellen und editieren, sondern auch in Form einer Regeldatei im JSON-Format.

Abbildung 2: OpenSnitch-Regeln lassen sich nicht nur im grafischen Interface erstellen und editieren, sondern auch in Form einer Regeldatei im JSON-Format.

Nehmen Sie keine Einstellungen vor, schließt sich das Fenster nach 15 Sekunden und OpenSnitch blockiert die Verbindung standardmäßig. Wir fanden diese Zeitspanne für den Anfang etwas kurz. Sie lässt sich aber in den Einstellungen verlängern, die Sie über das mittlere Icon am Kopf der Anwendung erreichen (Abbildung 3). Dort ändern Sie unter anderem gegebenenfalls auch die Standardaktion von Verweigern auf Erlauben, stellen statt der voreingestellten Geltungsdauer Bis zum Neustart einen kürzeren Zeitraum ein oder erweitern die Gültigkeitsdauer auf Immer. Haben Sie ein Fenster verpasst, etwa weil es sich schneller schloss, als Sie reagieren konnten, holen Sie die Einstellungen im Hauptfenster nach (Abbildung 4).

Abbildung 3: Um das Zeitlimit der Fenster für neue Regeln zu verlängern, erhöhen Sie den entsprechenden Wert in den Einstellungen. Im selben Fenster passen Sie auch weitere Standardeinstellungen an.

Abbildung 3: Um das Zeitlimit der Fenster für neue Regeln zu verlängern, erhöhen Sie den entsprechenden Wert in den Einstellungen. Im selben Fenster passen Sie auch weitere Standardeinstellungen an.


Abbildung 4: Bereits angelegte Regeln bearbeiten Sie aus dem Hauptfenster heraus, indem Sie den entsprechenden Tabelleneintrag mit der rechten Maustaste auswählen.

Abbildung 4: Bereits angelegte Regeln bearbeiten Sie aus dem Hauptfenster heraus, indem Sie den entsprechenden Tabelleneintrag mit der rechten Maustaste auswählen.

Firewall an oder aus

In der Kopfleiste finden Sie ganz rechts auch die am Anfang wichtigste Einstellung: Hier schalten Sie die Firewall ein und aus. Das ist besonders für den Einstieg wichtig, denn Sie benötigen einige Zeit, um Regeln für alle Anwendungen festzulegen, die Kontakt nach außen aufnehmen möchten. Mit diesem Schalter können Sie diese Aufgabe in für Sie zeitlich passende Häppchen aufteilen.

In der Menüzeile darunter finden Sie acht Reiter. Der mit Ereignisse überschriebene Tab listet alle Kontakte nach draußen in Echtzeit auf (Abbildung 5). Unter Knoten ist pro Gerät üblicherweise nur ein Socket verzeichnet, von dem die GUI die Daten zur Visualisierung bezieht. Als Standard dient dazu /tmp/osui.sock.

Abbildung 5: Der Reiter <span class="ui-element">Ereignisse</span> listet alle Kontakte nach drau&szlig;en in Echtzeit auf. Hier sehen Sie Verbindungsversuche von QBittorrent zu verschiedenen IPs.

Abbildung 5: Der Reiter Ereignisse listet alle Kontakte nach draußen in Echtzeit auf. Hier sehen Sie Verbindungsversuche von QBittorrent zu verschiedenen IPs.

Der dritte Reiter trägt die Bezeichnung Regeln und führt erwartungsgemäß die erstellten Regeln auf (Abbildung 6). Unter Hosts finden Sie die Gegenstellen, zu denen Anwendungen Kontakt aufnehmen wollten, und sehen, wie oft das pro Host erfolgte. Der Reiter Anwendungen listet die Anwendungen auf, die Kontakte herstellen wollten, und zeigt die Häufigkeit dieser Versuche.

Abbildung 6: Da QBittorrent (wie in <a href="#artRef-f5">Abbildung&nbsp;5</a> zu sehen), auf viele IPs zugreifen m&ouml;chte, k&ouml;nnen Sie im Reiter f&uuml;r Regeln &uuml;ber den Schalter <span class="ui-element">List of Domains/IPs</span> genau festlegen, was das Programm darf.

Abbildung 6: Da QBittorrent (wie in Abbildung 5 zu sehen), auf viele IPs zugreifen möchte, können Sie im Reiter für Regeln über den Schalter List of Domains/IPs genau festlegen, was das Programm darf.

Der Reiter Adressen führt Buch über die kontaktierten URLs und die Häufigkeit der Kontaktversuche. Ports tut dasselbe in Bezug auf die Ports der kontaktierten Hosts, während der letzte Reiter Benutzer die beteiligten Nutzer auflistet und die Anzahl der von ihnen gestarteten Kontaktversuche festhält. Von jedem dieser Reiter aus editieren Sie bei Bedarf zur Bearbeitung freigegebene Einträge, indem Sie mit der rechten Maustaste darauf klicken.

Um bei vielen Einträgen den Überblick nicht zu verlieren, können Sie die Einträge unter den einzelnen Reitern auch sortieren oder filtern. Am unteren Bildschirmrand zeigt eine Zeile die Zahl der Verbindungen während der aktuellen Laufzeit und wie viele davon abgelehnt wurden.

FAQ

OpenSnitch kann praktisch alles kontrollieren, was von einem Linux-System aus eine Verbindung zu einem Host herstellt. Bei Multi-User-Systemen lassen sich die Regeln auch für jeden Benutzer individuell definieren. Laut den Entwicklern entgeht OpenSnitch allerdings ab und zu der Verbindungsversuch einer App; die möglichen Gründe dafür erläutert das Projekt-Wiki [7] auf Github. Wir konnten bei unserem Test jedoch kein solches Durchschlüpfen verzeichnen. Eine FAQ [8] beantwortet häufig gestellte Fragen rund um die Application Firewall.

Haben Sie erst einmal alle Regeln erstellt, läuft OpenSnitch unauffällig im Hintergrund. Eine Anfrage taucht dann erst wieder auf, wenn Sie eine neue Anwendung installieren, die einen Kontaktversuch nach draußen unternimmt. Sollte eine App auffällig viele Verbindungen aufbauen, verschärfen Sie die Regel für diese App, indem Sie jeden Prozess einer nach außen gehenden Anfrage oder die jeweils kontaktierte Domain überprüfen und dann den Zugriff bestätigen oder ablehnen.

Fazit

Notgedrungen nervt OpenSnitch anfangs. Das bedeutet jedoch nichts anderes, als dass die Firewall ihren Job richtig macht. Den anfangs vielen Anfragen nach Regelung entziehen Sie sich zeitweise, indem Sie die Firewall ausschalten und weitere Regeln setzen, wenn es zeitlich besser passt. Der Einstieg in die Application Firewall gelingt dank der guten Dokumentation [9] vergleichsweise leicht.

Besonders interessant ist die Überprüfung bei Browser-Plugins, Webapps oder generell Anwendungen aus dritter Hand, denen man so besser auf die Finger schauen und notfalls auch einmal klopfen kann. Sie werden überrascht sein, was manche Apps so alles anstellen wollen. Abschließend lässt sich sagen, dass OpenSnitch die Sicherheit Ihres Systems verbessert, ohne Ihnen dabei allzu viel abzuverlangen. (cla/jlu)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 03/2022 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben