it-swarm.com.de

Wie steuere ich den Internetzugang für jedes Programm?

Ich möchte eine Software verwenden, um zu steuern, welches Programm eine Verbindung zum Internet herstellen darf. Ich weiß, dass dieses Verhalten mit der Word- "Firewall" zusammenhängt, aber einige Linux-Benutzer sind sehr verärgert, wenn jemand eine Personal Firewall fordert. Ich möchte Sie nicht verärgern, wenn Sie ein solches Programm verlangen.
Ich möchte keine Ports oder andere Dinge "sichern", die eine Personal Firewall unter Windows verspricht. Ich habe iptables untersucht, aber es entspricht nicht meinen Anforderungen.

Ich habe hier eine ausgezeichnete Antwort gesehen ( "Wie blockiere ich den Internetzugang für Weinanwendungen" ), aber es ist sehr unkomfortabel, dies einzurichten.

Gibt es eine Software, die nach jedem Programm fragt, ob es auf das Internet zugreifen darf?

57
guerda

Es gibt ein Perl-Skript im deutschen Ubuntu-Forum ( Google-übersetzt ins Englische ) das scheint das zu tun. Ich habe es nie ausprobiert und mir das Drehbuch nicht genauer angesehen, aber vielleicht funktioniert es für Sie. Die Beschreibung ist nur in deutscher Sprache, daher benötigen Sie möglicherweise einen Übersetzungsdienst (wie Google Translate; siehe oben).

6
Florian Diesch

Falls Sie noch nach einer solchen Anwendung suchen, entwickle ich gerade genau diese Anwendung: http://douaneapp.com/https://gitlab.com/douaneapp/ Douane

Meine Anwendung blockiert unbekannte Anwendungen (neue Versionen einer autorisierten Anwendung werden blockiert) und fragt Sie, ob Sie den Datenverkehr zulassen oder verweigern möchten.

Schauen Sie sich die Website an ;-)

screen shot

33
ZedTuX

I gefunden eine bequeme Lösung, die das Problem löst. Sie erstellen eine Gruppe, die niemals das Internet benutzen darf, und starten das Programm als Mitglied dieser Gruppe.

  1. Erstellen Sie eine Gruppe _no-internet_. Tritt dieser Gruppe nicht bei

    _Sudo addgroup no-internet
    _
  2. Fügen Sie iptables eine Regel hinzu, die verhindert, dass alle zur Gruppe _no-internet_ gehörenden Prozesse das Netzwerk verwenden (verwenden Sie _ip6tables_, um auch IPv6-Datenverkehr zu verhindern).

    _Sudo iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
    _
  3. Führen Sie Sudo -g no-internet YOURCOMMAND anstelle von YOURCOMMAND aus.

Sie können problemlos ein Wrapper-Skript schreiben, das Sudo für Sie verwendet. Sie können das Passwort Prompt entfernen, indem Sie es hinzufügen

_%Sudo     ALL=(:no-internet)      NOPASSWD: ALL
_

oder etwas ähnliches mit _Sudo visudo_

Verwenden Sie _iptables-save_ und _iptables-restore_, um Firewall-Regeln beizubehalten.

26
Tim

In Ubuntu gibt es bereits eine Firewall ufw , die jedoch standardmäßig deaktiviert ist. Sie können es über die Befehlszeile oder das Frontend gufw aktivieren und verwenden, das direkt installierbar ist aus dem Ubuntu Software Center.

Wenn Sie den Internetzugriff für eine bestimmte Anwendung blockieren müssen, können Sie LeopardFlower ausprobieren, das sich noch in der Beta-Version befindet und im Ubuntu Software Center nicht verfügbar ist:

5
heiko81

Wenn Sie ein Programm unter einem anderen Benutzer ausführen, werden die Konfigurationsdateien für diesen Benutzer und nicht für Ihren verwendet.

Hier ist eine Lösung, bei der die Firewall-Regeln nicht geändert werden müssen und die unter demselben Benutzer (über Sudo) mit einer geänderten Umgebung ausgeführt wird, in der Ihr Benutzer my_user ist und die App, die Sie ausführen möchten, my_app ist:

# run app without access to internet
Sudo unshare -n Sudo -u my_user my_app

Weitere Einzelheiten finden Sie unter man unshare und diese Antwort .

Linux GUI Firewall

Wenn Sie nach einer GUI-Firewall suchen, mit der ich gute Ergebnisse erzielt habe OpenSnitch -, ist sie noch nicht in Ubuntu Repos verfügbar, und ich würde sie nicht als Produktionsstufe bezeichnen. Github Seite arbeitete für mich.

4
ccpizza

@psusi: Ich wünschte wirklich, die Leute würden keine schlechten und nicht nützlichen Informationen verkaufen. IPTables erlaubt es einem, dies zu tun, daher würde ich es kaum als "tollkühn" bezeichnen. Nur "NEIN" zu sagen, ohne einen Anwendungsfall zu verstehen, ist etwas engstirnig. http://www.debian-administration.org/article/120/Application_level_firewalling

BEARBEITEN Sie bodhi.zazen

HINWEIS - DIESE OPTION WURDE 2005, 8 JAHRE VOR DIESER ANTWORT, VON IPTABLES ENTFERNT

SEE - http://www.spinics.net/lists/netfilter/msg49716.html

festschreiben 34b4a4a624bafe089107966a6c56d2a1aca026d4 Autor: Christoph Hellwig Datum: Sun Aug 14 17:33:59 2005 -0700

[NETFILTER]: Missbrauch von tasklist_lock in ipt {, 6} -Eigentümer entfernen

Lösche den cmd/sid/pid-Abgleich, da er nicht fixierbar ist und Änderungen an tasklist_lock blockiert.

Signed-off-by: Christoph Hellwig <[email protected]>
Signed-off-by: Patrick McHardy <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
3
user141987

Ich habe festgestellt, dass die gepostete Lösung hier gut ist. Dazu müssen Sie eine Benutzergruppe erstellen, für die der Internetzugriff zulässig ist , und Firewall-Regeln einrichten, um den Zugriff nur für diese Gruppe zuzulassen. Die einzige Möglichkeit für eine Anwendung, auf das Internet zuzugreifen, besteht darin, dass sie von einem Mitglied dieser Gruppe ausgeführt wird. Sie können Programme unter dieser Gruppe ausführen, indem Sie eine Shell mit Sudo -g internet -s öffnen.

Um zusammenzufassen, was in dem Beitrag steht, den ich oben verlinkt habe:

  1. Erstellen Sie die Gruppe "Internet", indem Sie Folgendes in eine Shell eingeben: Sudo groupadd internet

  2. Stellen Sie sicher, dass der Benutzer, der das folgende Skript ausführt, zur Gruppe Sudo in /etc/group hinzugefügt wird. Wenn Sie diese Datei ändern, müssen Sie sich abmelden und wieder anmelden, bevor das folgende Skript ausgeführt werden kann.

  3. Erstellen Sie ein Skript, das Folgendes enthält, und führen Sie es aus:

    #!/bin/sh
    # Firewall apps - only allow apps run from "internet" group to run
    
    # clear previous rules
    Sudo iptables -F
    
    # accept packets for internet group
    Sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
    
    # also allow local connections
    Sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
    Sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
    
    # reject packets for other users
    Sudo iptables -A OUTPUT -p tcp -j REJECT
    
    # open a Shell with internet access
    Sudo -g internet -s
    
  4. Wenn Sie das obige Skript ausführen, verfügen Sie über eine Shell, in der Sie Anwendungen mit Internetzugang ausführen können.

Beachten Sie, dass dieses Skript nichts unternimmt, um Ihre Firewall-Regeln zu speichern und wiederherzustellen. Möglicherweise möchten Sie das Skript so ändern, dass die Shell-Befehle iptables-save und iptables-restore verwendet werden.

2
Mark

Eine andere Option ist Feuergefängnis. Es führt die Anwendung in der Sandbox aus, in der Sie steuern, ob die Anwendung das Netzwerk sehen kann:

firejail --net=none firefox

Dieser Befehl startet den Firefox-Browser ohne Internetzugang. Beachten Sie, dass die FireJail-Distribution im Ubuntu-Repo veraltet ist - laden Sie die neueste LTS-Version besser von der FireJail-Homepage herunter.

2
Dimitar II

Versuchen Sie Leopard Flower . Es gibt Einschränkungen für die Benutzeroberfläche und die einzelnen Anwendungen.

1
brand

Es war in iptables bis zur Kernel-Version 2.6.24. Wenn Sie einen 2.x - 2.6.24-Computer ausführen und Ihr Kernel die Kompatibilität hat, können Sie dies tun. Aus irgendeinem Grund haben sie es rausgenommen, also ist es nicht Microsoft. http://cateee.net/lkddb/web-lkddb/IP_NF_MATCH_OWNER.html

1
not really

Zum Guten oder Schlechten verwendet Linux einen anderen Ansatz. Es gibt keine einfache grafische Oberfläche, die diese Funktionalität bietet. Es gibt viele Diskussionen zu diesem Thema im Internet und Sie können interessante Diskussionen finden, wenn Sie Google Search verwenden. Obwohl die Debatte interessant ist, gab es bisher keine engagierte Gruppe von Programmierern, die diese Funktionalität schreiben und beibehalten wollten.

Die Tools, die diese Funktionalität in Linux bieten, sind Apparmor, Selinux und Tomoyo.

Keines dieser Tools ist zu einfach zu erlernen und hat Vor- und Nachteile. Persönlich bevorzuge ich SELinux, obwohl SELinux eine steilere Lernkurve aufweist.

Sehen:

http://www.linuxbsdos.com/2011/12/06/3-application-level-firewalls-for-linux-distributions/

Es gab (gibt) eine Anwendung, auf die bereits verwiesen wurde: Leopardenblume. Ich bin mir nicht sicher über den Status/die Wartung.

1
Panther

Nein, das ist nicht möglich. Es ist auch nicht Teil der traditionellen Definition einer Firewall. Es ist etwas, das Microsoft vor einiger Zeit einfiel, um die grundlegend kaputten Sicherheitsprobleme des Betriebssystems zu beheben. In der Linux-Community wird dies als tollkühn und nicht praktikabel angesehen, da ein Programm, das nicht zulässig ist, einfach ein anderes Programm ausführen und auf diese Weise Zugriff erhalten kann.

Wenn Sie nicht mögen, was ein Programm im Netzwerk tut, wenn Sie es ausführen, führen Sie dieses Programm nicht aus.

0
psusi