Little Snitch für Linux
(obdev.at)- Ein Tool, mit dem sich Netzwerkverbindungen von Anwendungen visualisieren und steuern lassen; so ist erkennbar, welches Programm mit welchem Server kommuniziert
- In der Connections View werden Echtzeit- und frühere Traffic-Daten nach App angezeigt; mit einem Klick lassen sich Verbindungen blockieren und Datennutzung nachverfolgen
- Mit den Funktionen Blocklists und Rules lässt sich unerwünschter Traffic nach Kategorien oder anhand detaillierter Bedingungen präzise steuern
- Intern wird eBPF verwendet, um Verbindungen auf Kernel-Ebene zu überwachen; über ein Web-UI wird eine PWA-artige Oberfläche bereitgestellt
- Kein Security-Tool, sondern ein auf Privatsphäre fokussiertes Tool; zum Blockieren externer Kommunikation gewöhnlicher Software gut geeignet, für die Abwehr fortgeschrittener Angriffe jedoch nur eingeschränkt
Überblick
- Little Snitch for Linux ist ein Tool, mit dem sich Netzwerkverbindungen von Anwendungen in Echtzeit visualisieren und steuern lassen
- Es ist erkennbar, welche Anwendung mit welchem Server kommuniziert
- Bietet Funktionen zum Blockieren unerwünschter Verbindungen, zum Protokollieren von Traffic und zum Nachverfolgen der Datennutzung
- Erfordert Linux-Kernel 6.12 oder neuer sowie BTF-Kernel-Unterstützung
- Das Web-UI ist unter
http://localhost:3031/erreichbar und kann als PWA (Progressive Web App) installiert werden
Verbindungsüberwachung
- In der Connections View werden aktuelle und frühere Netzwerkaktivitäten nach Anwendungen angezeigt
- Es werden durch Regeln und Blocklisten blockierte Einträge, Datennutzung und Traffic-Verlauf angezeigt
- Sortierung und Filterung nach letzter Aktivität, Datenmenge und Name möglich
- Verbindungen lassen sich mit einem Klick blockieren
- Das Traffic-Diagramm am unteren Rand visualisiert die Datenmenge im Zeitverlauf
- Wird ein bestimmter Bereich zum Vergrößern gezogen, werden nur Aktivitäten aus diesem Zeitraum gefiltert angezeigt
Verwaltung von Blocklisten
- Mit der Funktion Blocklists lassen sich unerwünschte Traffic-Kategorien gesammelt blockieren
- Automatischer Download aus entfernten Quellen und laufende Aktualisierung
- Unterstützte Formate: eine Zeile pro Domain, eine Zeile pro Hostname,
/etc/hosts-Format (IP + Hostname), CIDR-Netzwerkbereiche -
Wildcards, reguläre Ausdrücke, glob, und URL-basierte Formate werden nicht unterstützt
- Aus Effizienzgründen werden domainbasierte Listen empfohlen
- Beispiel-Listen: Hagezi, Peter Lowe, Steven Black, oisd.nl
- Das macOS-Format
.lsrulesist mit der Linux-Version nicht kompatibel
Benutzerdefinierte Regeln
- Die Funktion Rules bietet eine feinere Steuerung als Blocklisten
- Einstellungen sind auf Ebene bestimmter Prozesse, Ports und Protokolle möglich
- Die Regelliste kann sortiert und gefiltert werden
- Über Regeln lassen sich detaillierte Richtlinien zur Netzwerksteuerung aufbauen
Zugriffssicherheit
- Standardmäßig ist die Weboberfläche für alle lokal laufenden Prozesse zugänglich
- Dadurch besteht die Möglichkeit, dass schädliche Anwendungen Regeln ändern, Blocklisten modifizieren oder Filter deaktivieren
- Um dies zu verhindern, kann die Anforderung einer Authentifizierung konfiguriert werden
- Detaillierte Einstellungen erfolgen in der erweiterten Konfiguration (Advanced configuration)
Interne Struktur
- Mittels eBPF wird in den Linux-Netzwerk-Stack eingehakt
- Das eBPF-Programm überwacht ausgehende Verbindungen und übergibt die Daten an den Daemon
- Der Daemon übernimmt Statistikverfolgung, Regelverarbeitung und die Bereitstellung des Web-UIs
- Der Quellcode des eBPF-Programms und des Web-UIs ist auf GitHub öffentlich verfügbar
Erweiterte Konfiguration
- Das Standard-UI zeigt nur wichtige Einstellungen an, erweiterte Konfiguration erfolgt über Textdateien
- Nach Änderungen muss der
littlesnitch-Daemon neu gestartet werden
- Nach Änderungen muss der
- Standardpfad der Konfiguration:
/var/lib/littlesnitch/config/- Nicht direkt bearbeiten; stattdessen die zu ändernde Datei nach
/var/lib/littlesnitch/overrides/config/kopieren und dort bearbeiten - Einstellungen im Override-Verzeichnis haben immer Vorrang
- Nicht direkt bearbeiten; stattdessen die zu ändernde Datei nach
- Wichtige Konfigurationsdateien
web_ui.toml: Netzadresse, Port, TLS, Authentifizierungseinstellungen- Wenn mehrere Benutzer Zugriff haben können, sollte Authentifizierung aktiviert werden
- Bei Freigabe über Loopback hinaus ist zusätzlich TLS erforderlich
main.toml: Standardverhalten für Verbindungen, die auf keine Regel passen- Standard ist Erlauben; bei Bedarf kann auf Ablehnen umgestellt werden
- Bei falscher Konfiguration besteht das Risiko, den Systemzugriff zu verlieren
executables.toml: Regeln zur Gruppierung von ausführbaren Dateien- Durch Entfernen von Versionsnummern werden mehrere Versionen derselben App als eine angezeigt
- Definiert Elternbeziehungen von Shells und App-Verwaltungsprozessen
- Wird fortlaufend durch Community-Feedback verbessert
- Das eBPF-Programm und das Web-UI können durch selbst gebaute Versionen ersetzt werden
- Versionen im Override-Verzeichnis werden bevorzugt verwendet
Einschränkungen
- Als Privatsphäre-Tool und nicht als Security-Tool konzipiert
- Einfacher als die macOS-Version, mit funktionalen Einschränkungen durch eBPF
- eBPF hat Beschränkungen bei Speicherplatz und Programmkomplexität
- Bei viel Traffic können Cache-Tabellen überlaufen, sodass die Zuordnung zwischen Paketen, Prozessen und DNS-Namen unvollständig wird
- Für die Wiederherstellung des ursprünglich aufgelösten Hostnamens aus einer IP-Adresse werden Heuristiken verwendet
- Die macOS-Version nutzt Deep Packet Inspection (DPI) für eine genauere Zuordnung
- Für die Überwachung und Blockierung externer Kommunikation gewöhnlicher Software gut geeignet, für die Systemverteidigung gegen fortgeschrittene Angreifer jedoch ungeeignet
Lizenz
- Besteht aus drei Komponenten
- eBPF-Kernel-Programm und Web-UI sind unter GNU GPL v2 veröffentlicht und auf GitHub verfügbar
- Der Daemon (
littlesnitch --daemon) ist proprietär, kann jedoch kostenlos genutzt und weiterverteilt werden
1 Kommentare
Hacker-News-Kommentare
Ich nutze weder Little Snitch noch Open Snitch, habe mich aber gefragt, ob auch Anfragen blockiert werden können, die ein erlaubtes Programm missbrauchen
Wenn zum Beispiel
suspicious.pyFirefox aufruft, um Daten hochzuladen, würde mich interessieren, ob die Firewall das verhindern kannWird ein Skript mit
#!/bin/interpreterausgeführt, gelten Regeln für den Skriptpfad, bei Ausführung alsinterpreter scriptverhält es sich andersIn Open Snitch kann man feingranular abgleichen, etwa danach, ob im Parent-Tree ein Python-Prozess enthalten ist
Frühere Windows-Firewalls wie Outpost oder Zone Alarm boten dafür eine Leak-Control-Funktion
Die meisten Distributionen bringen diese Funktion mit, aber normale Nutzer lernen oder konfigurieren die Regeln meist nicht
Ich habe es unter Fedora 43 ausprobiert, aber es hat alle CPU-Kerne ausgelastet und ist mit einem 50K-Zeilen-Log fehlgeschlagen
Es trat der Fehler
BPF_PROG_LOAD syscall returned Argument list too longaufAuf einer ARM64-VM lädt es zwar, kann Prozesse aber nicht identifizieren
Man untersucht eBPF-Kompatibilitätsprobleme, hat aber nur begrenzte Ressourcen und braucht daher Zeit
Da Fedora standardmäßig Btrfs nutzt, ist eine Prozessidentifikation nicht möglich; in Version 1.0.1 soll das behoben werden
Als Linux-Nutzer ist mir offener Code wichtig
Mit der Kombination aus OpenSnitch + OpenSnitch-UI bin ich vollkommen zufrieden
Ich habe mich gefragt, wie tragfähig ein Bezahltool-Modell unter Linux überhaupt ist
Das meiste ist kostenlos, spendenbasiert oder Open Core
Ich frage mich, ob Little Snitch die Linux-Version deshalb kostenlos veröffentlicht hat, weil man denkt, dass „unter Linux kein Geld zu holen ist“, oder ob es andere Gründe gab
Ich selbst finde ein proprietäres Programm, das den gesamten Netzwerkverkehr verarbeitet, auch unerquicklich
Stattdessen spende ich jedes Jahr mehrere Tausend Dollar an FOSS-Projekte
Solche Nutzer sind aber eine Minderheit, daher ist es schwierig, mit vollständig Open Source Einnahmen zu erzielen
Gerade bei hoch privilegiertem Code wie einer Firewall ist Vertrauen ohne Open Source schwer
Man sei gespannt, wie sich das entwickelt
Verwandter Blogpost: Einführung in Little Snitch for Linux
Früher gab es ZoneAlarm für Windows
Ich habe mich immer gefragt, warum es so etwas unter Linux nicht gab
Im Direwall-Code sieht man noch den alten C-Stil von damals
Es funktionierte durch Patches an der Socket-Bibliothek; ich frage mich, ob es heute noch kompiliert
Es erklärte klar, dass es anfangs lautstark nachfragt, nach dem Lernen aber ruhig wird
Dadurch gewann es das Vertrauen der Nutzer, und genau deshalb habe ich es empfohlen
Erst als kommerzielle Software nach Linux kam, entstand das Bedürfnis nach Netzwerküberwachung
Es war gut, das hemmungslose Starten von Programmen unter Windows einschränken zu können
Ich nutze Little Snitch schon lange und genehmige jede Netzwerkanfrage manuell
Trotzdem frage ich mich, wie sehr man einem Programm vertrauen kann, das Berechtigungen auf Kernel-Erweiterungsniveau hat
Über das Unternehmen oder die Entwickler findet man kaum Informationen, daher bin ich neugierig
Die eBPF-Komponente ist als GPLv2 Open Source veröffentlicht und der GitHub-Code ist einsehbar
Der Daemon muss jedoch mit Root-Rechten laufen, daher sollte man ihn mit Zugriffskontrollen wie SELinux einschränken
Es ist die erste Veröffentlichung, man bearbeitet gerade Bugreports und war von der Vielfalt der Linux-Umgebungen überrascht
Unter macOS nutzt man keine Kernel-Erweiterung, sondern die Network Extension API
Wenn es um Netzwerkbeobachtung geht, gibt es mit Sniffnet auch GUI-Sniffer
Glückwunsch zum Linux-Port
Als vollständig Open Source und terminalbasierte Alternative stelle ich RustNet vor, das ich pflege
Ein TUI-basiertes Echtzeit-Paketmonitoring-Tool, keine Firewall, aber mit Landlock zur eigenen Sandboxisierung
Mich interessiert der Vergleich mit OpenSnitch
OpenSnitch GitHub
Das liegt an technischen Einschränkungen der Linux-Version
Wegen der eBPF-Basis ist bei Cache-Overflow kein Prozess-Mapping mehr möglich, und eine Deep Packet Inspection wie unter macOS gibt es nicht
Das wird in der offiziellen Erklärung ausführlich beschrieben
Verwandter Beitrag
Ich nutze OpenSnitch zufriedenstellend
Schön wäre aber ein Plugin-System, das Nutzerverhalten und Netzwerkverbindungen gemeinsam analysiert und nur unerwartete Verbindungen meldet
Zusätzlich wäre ein CLI-basierter Auto-Allow-Wrapper praktischer als Pop-ups