Gibt es eine interaktive Firewall für ausgehenden Datenverkehr unter Ubuntu?

3626
GJ.

Ich möchte verhindern, dass einige Programme "nach Hause telefonieren" und anderen Programmen den Zugriff auf bestimmte Webserver ermöglichen.

Gibt es eine Möglichkeit, die ausgehende Kommunikation einzelner Programme auf Ubuntu interaktiv zuzulassen oder abzulehnen?

4

4 Antworten auf die Frage

1
nik

Das wäre netfilter / ipfilter mit einem Skript, das interaktiv (vielleicht mit der auf Ubuntu verfügbaren API) ein Hintergrundskript verwenden würde.

Es gibt einige alte Diskussionen auf dieser UbuntuForums-Seite .
Siehe auch Ubuntu IPTablesHowTo und Firewall- Seiten.

1
user50610

Sie könnten Anoubis versuchen. Es gibt Installationsanweisungen und Pakete für Karmic Koala (ich bin ein Neuling für Superuser, Sie müssen sie also selbst finden>: - S Hinweis: Scrollen Sie auf der Download-Seite nach unten zu "Distributions").

1
stribika

Nun, nicht gerade interaktiv, aber ich kenne drei Möglichkeiten, den Netzwerkzugriff auf Programme zu beschränken.

  1. Standardmäßig weist linux Benutzern Berechtigungen zu, und jedes von ihnen ausgeführte Programm verfügt über die gleichen Berechtigungen. Führen Sie das nicht vertrauenswürdige Programm als separaten Benutzer aus. Dies ist ziemlich einfach, wenn Sie es können. (Manchmal kann es Ihnen nicht gefallen, wenn ein Programm Root-Rechte benötigt.) Fügen Sie die folgende Firewall-Regel hinzu:

    iptables -A OUTPUT -m owner --uid-owner $ -j DROP 
  2. Wenn Sie keine Angst vor dem Patchen des Kernels haben, versuchen Sie Sicherheit . Es ermöglicht unterschiedliche Berechtigungen für verschiedene ausführbare Dateien für denselben Benutzer. Dies ist wahrscheinlich der beste Weg, da Sie ihn in iptables-Regeln integrieren und detaillierte Einschränkungen angeben können. Die Regeln sollten ungefähr so ​​aussehen:

    ... role your_regular_user u ... subject /path/to/untrusted/program connect disabled ... ... 
  3. Deaktivieren Sie die Funktion connect () mit LD_PRELOAD. Dies ist der hässlichste Weg, den Sie nur verwenden sollten, wenn Sie keine andere Option haben. Sie benötigen eine Bibliothek wie diese:

    #include <errno.h> #include <stdio.h> #include <sys/types.h> #include <sys/socket.h>  int connect(int sockfd, struct sockaddr const* addr, socklen_t addrlen) { errno = ECONNREFUSED; printf("connection refused\n"); return -1; } 

    Kompilieren Sie dies mit

    gcc -fPIC -shared -Wl,-soname,fake_connect fake_connect.c -o libfake_connect.so 

    Starten Sie das Programm mit

    LD_PRELOAD="./libfake_connect.so" ./untrusted_program 
0
Praveen Sripati

Ich hatte gufw schon einige Zeit benutzt, es ist schön und einfach zu installieren / konfigurieren. gufw kommt nicht mit Ubuntu-Installationen. Sie müssen es manuell installieren 'sudo apt-get install gufw'.

Hier sind einige Referenzen.

https://help.ubuntu.com/community/Gufw