OpenSnitch Interaktive Anwendungs-Firewall für GNU/Linux
(github.com/evilsocket)- OpenSnitch ist eine Anwendungs-Firewall für GNU/Linux mit dem Schwerpunkt, externe Verbindungen von Anwendungen interaktiv zu filtern
- Systemweit können Werbe-, Tracker- und Malware-Domains blockiert werden, und in der GUI lässt sich auch eine nftables-basierte System-Firewall konfigurieren
- Die GUI unterstützt die Konfiguration von Systemregeln wie dem Festlegen von Eingangsrichtlinien und dem Erlauben eingehender Dienste; außerdem können mehrere Nodes zentral verwaltet werden
- Die Installation erfolgt durch Herunterladen von deb/rpm-Paketen und deren Installation mit
aptoderdnf; anschließend wirdopensnitch-uiausgeführt oder die GUI über das Anwendungsmenü geöffnet - Es gibt einen Show and tell-Diskussionsbereich zum Teilen von Fällen, in denen unerwartete Verbindungen abgefangen wurden, sowie SIEM-Integration, die sich zur Verbindungsüberwachung in Betriebsumgebungen nutzen lässt
Was OpenSnitch macht
- OpenSnitch ist eine Anwendungs-Firewall für GNU/Linux
- Die Kernfunktion ist das interaktive Filtern von ausgehenden Verbindungen von Anwendungen
- Systemweit wird das Blockieren von Werbe-, Tracker- und Malware-Domains unterstützt
Firewall- und Node-Verwaltung
- In der GUI kann die System-Firewall-Konfiguration eingerichtet werden
- Dabei geht es um nftables-basierte Einstellungen
- Eingangsrichtlinien, das Erlauben eingehender Dienste usw. können festgelegt werden
- In der zentralen GUI können mehrere Nodes verwaltet werden
- SIEM-Integration wird unterstützt
Download und Installation
- deb/rpm-Pakete können über GitHub Releases heruntergeladen werden
- Installation des deb-Pakets:
sudo apt install ./opensnitch*.deb ./python3-opensnitch-ui*.deb
- Installation des rpm-Pakets:
sudo dnf install opensnitch*.rpm
- Nach der Installation
opensnitch-uiausführen oder die GUI über das Anwendungsmenü starten - Detaillierte Installationsinformationen finden sich in der Dokumentation
Anwendungsfälle und Beteiligung
- Beispiele dafür, dass OpenSnitch unerwartete Verbindungen abfängt, sind in den Show and tell-Diskussionen gesammelt
- Wenn eine unerwartete Verbindung entdeckt wird, kann sie als neue Diskussion eingereicht werden
Projektinformationen
- OpenSnitch verwendet die GPL3-Lizenz
- Unterstützung ist im Abschnitt Sponsor this project rechts im GitHub-Repository möglich
- Die aktuellen Maintainer sind im Commit-Verlauf des master-Branches zu finden
- Die Liste der Mitwirkenden ist im Contributors-Graphen einsehbar
- Übersetzungen werden über Weblate durchgeführt
1 Kommentare
Hacker-News-Kommentare
Ich habe oft versucht, OpenSnitch als interaktive Firewall zu nutzen, aber es gibt ein Problem, bei dem ich nicht einmal weiß, ob es lösbar ist – und das ist nicht unbedingt OpenSnitchs Schuld.
Wenn man zum Beispiel im Terminal
curlausführt, muss man jedes Mal entscheiden, ob es erlaubt werden soll, oder es dauerhaft auf die Allowlist setzen.Wenn man aber allgemeine Tools wie
curloderwgeterlaubt, kann Malware auf einer kompromittierten Maschine diese Tools ebenfalls nutzen, um ohne Firewall-Benachrichtigung ins Internet zu gelangen – damit steht die Tür weit offen.Das beruhigende Gefühl, bei neuem Zugriff gefragt zu werden, macht den anfänglichen Aufwand wett, und wenn man sich daran gewöhnt hat, ist die Verwaltung ziemlich einfach.
Ich nutze auch häufig Regeln mit Ablaufdatum. Wenn ich zum Beispiel einem Installer vertraue und ihm vorübergehend freie Hand lassen möchte, erstelle ich für die ausführbare Datei eine Regel, die in naher Zukunft abläuft. Die Optionen sind dauerhaft, bis zum Neustart, die nächsten 30 Sekunden, die nächsten 5 Minuten usw.; dadurch werden auch Aufgaben mit vielen Endpoints deutlich einfacher, ohne dauerhafte Löcher zu hinterlassen.
devsämtlichencurl-/wget-Traffic zu erlauben und ihn beim Benutzernormalweiterhin zu erkennen.Entwicklungsaufgaben würde man dann etwa mit
su -c curl … devausführen.Wenn ein bösartiges Programm im normalen Benutzerbereich läuft, kann die App-Firewall die Nutzung von
curlundwgetangemessen erkennen.Da es lästig ist, jedes Mal ein Passwort einzugeben, könnte man PAM mit YubiKey oder biometrischer Authentifizierung konfigurieren; außerdem sollte dieser Benutzer sich nicht einloggen können und kein Passwort haben.
curloderwgetauch umbenennen.Ich nutze auf Mobilgeräten eine Firewall auf Anwendungsebene, aber ich setze nicht Programmnamen auf eine Allowlist, sondern erlaube bestimmten Programmen den Zugriff auf bestimmte Domains/IP-Adressen.
Meiner Erfahrung nach ist die einfachste Methode, externe Kommunikation von Programmen oder Malware zu verhindern, der DNS-Zugriff zu blockieren. Das mache ich seit Jahrzehnten so, und es funktioniert immer noch perfekt. „99 %“ der Programme/Malware, die nach außen kommunizieren, verlassen sich auf DNS statt auf hartcodierte IPs.
Die seltenen Programme/Malware, die kein DNS benötigen, sind ebenfalls leicht zu erkennen, und bei DNS erlaube ich nur bestimmte Domains. Heutzutage nutze ich nicht einmal mehr lokale Zone-Dateien mit den benötigten IP-Adressen; ein Forward-Proxy übernimmt das Domain-zu-IP-Mapping. Die Allowlist, die der Proxy liest, ist ähnlich wie eine Zone-Datei, aber eine noch einfachere Textdatei.
curldurchgelassen wird, wenn der Parent-Befehl ein vertrauenswürdiger Befehl ist, etwa ein vom Benutzer besessenesbash/zsh, und sonst blockiert wird. Das wirkt allerdings ziemlich umständlich.Wenn zum Beispiel
curlausgeführt wurde und man beim Hochlaufen der Parent-Kette auf einen Prozess/usr/bin/trustedstößt, sollte man deklarieren können, dass diesercurl-Aufruf erlaubt ist. Dann könnte mancurlin einem Bash-Skript erlauben, solange der Parent dieses Skripts/usr/bin/trustedist.Das war letztlich der Grund, warum ich zu NixOS gewechselt bin.
Als ich früher eine Application-Firewall nutzte, gab es viel Konfigurationsaufwand; wenn Updates Pfade änderten, ging häufig etwas kaputt, und bei jedem neuen Rechner musste ich alles neu machen – viel Churn und Verschwendung.
Durch die Integration mit dem Paketmanager sind diese Probleme verschwunden. Sobald die anfängliche Allowlist eingerichtet ist, ist nur noch ein bisschen Arbeit nötig, wenn ich der Nix-Konfiguration ein neues Paket hinzufüge.
Wenn es mir zu lästig ist, die Allowlist in die Nix-Konfiguration aufzunehmen, füge ich einfach eine temporäre Allowlist hinzu, die nur bis zum nächsten Neustart gilt. Die Lernkurve war steil und es war viel Arbeit, aber jetzt ist die Wartung sehr einfach.
Gut, um schlampige Apps aufzuspüren, die übermäßig viele Verbindungen aufbauen. Thunderbird, du bist gemeint.
Ich mag es, aber es gibt auch kleine Unannehmlichkeiten. Abgelaufene temporäre Regeln werden im Interface nicht gelöscht oder ausgeblendet, daher muss ich manchmal die GUI neu starten, um sie loszuwerden.
Unter Fedora würde ich das empfehlen, statt mit firewalld/firewall-config herumzubasteln.
dnfbei jedem Update den halben Kontinent absucht?https://news.ycombinator.com/item?id=41124755
Man könnte es einfach erlauben, aber das möchte ich nicht.
Ich fände so eine Funktionalität gut, wenn man APIs oder Webdienste in Docker-Containern betreibt.
containerA: gesamten ausgehenden Traffic erlaubencontainerB: ausgehenden Traffic blockieren, außer beim Antworten an ClientscontainerC: darf nur aufupdates.example.comzugreifenIst das einfach iptables pro Container? Man könnte iptables wohl in bestehende Images einbauen, aber das wirkt nach viel Arbeit. Oder macht man das auf dem Host mit iptables?
Gibt es so etwas auch für Android-Smartphones? Ich wäre an guten Empfehlungen interessiert.
https://netguard.me
Ich habe lange AFWall+ genutzt; die Steuerung, pro App Wi‑Fi, Mobilfunk und LAN zu erlauben oder zu blockieren, ist sauber. Da es ein iptables-/nftables-Frontend ist, kann man Regeln so stark anpassen, wie man möchte: https://github.com/ukanth/afwall
Funktioniert ab Android 2+.
Ohne Root bleiben nur VPN-basierte Lösungen wie Adguard.
Wenn man Statistiken braucht, gibt es auch die Android-Version von GlassWire. Ich habe nur die Beta ausprobiert und kenne den aktuellen Stand nicht, aber ein Blick lohnt sich.
"Rethink: DNS + Firewall + VPN"hat ähnliche Funktionen.Ich bin von dem oben erwähnten NetGuard darauf umgestiegen.
Arch- und OpenSUSE-Pakete wären auch schön.
opensnitch, und im AUR gibt esopensnitch-ebpf-module.Wie ist das im Vergleich zu so etwas wie UFW? Ich frage mich, ob der Kern die UI ist, mit der man laufende Aktivitäten sieht.
Wenn eine beliebige App zum Beispiel einen Telemetrie-Call macht, kann man sehr fein eine White-/Greylist festlegen – etwa ob nur die Verbindung von dieser ausführbaren Datei zu dieser Adresse erlaubt werden soll oder ob diese Adresse immer erlaubt ist –, dazu mit Zeitoptionen wie nur einmal, für 15 Sekunden oder bis zum Neustart.
Wenn man die anfängliche Hürde genommen hat, die Apps, die man nutzt und denen man vertraut, auf die Allowlist zu setzen, ist es ziemlich gut und zeigt einem vieles darüber, was Apps oder Spiele tun, von dem man nichts wusste.
Gibt es Pläne, das auf macOS zu portieren? Ich habe eine Zeit lang Little Snitch genutzt, bevorzuge aber aus Gründen, die nichts mit Bezahlung zu tun haben, Open Source.
Ich habe mehrmals sporadisch versucht, es zu nutzen, aber wegen zu vieler zufälliger Abstürze war es ziemlich schwer zu verwenden.