Antworten:
Das wäre netfilter / ipfilter mit einigen Skripten, die Dinge interaktiv erledigen würden (vielleicht mit der netten API, die auf Ubuntu verfügbar ist), die ein Hintergrundskript verwenden.
Es gibt einige alte Diskussionen auf dieser UbuntuForums-Seite .
Siehe auch Ubuntu IPTablesHowTo und Firewall- Seiten.
Nun, nicht gerade interaktiv, aber ich kenne 3 Möglichkeiten, den Netzwerkzugriff auf Programme einzuschränken.
Standardmäßig weist Linux Benutzern Berechtigungen zu, und jedes von ihnen ausgeführte Programm verfügt über dieselben Berechtigungen. Führen Sie das nicht vertrauenswürdige Programm als separaten Benutzer aus. Das ist ziemlich einfach, wenn du es schaffst. (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 ${untrusted_uid} -j DROP
Wenn Sie keine Angst haben, den Kernel zu patchen, versuchen Sie grsecurity . Es ermöglicht unterschiedliche Berechtigungen für unterschiedliche ausführbare Dateien für denselben Benutzer. Dies ist wahrscheinlich der beste Weg, da Sie ihn in iptables-Regeln integrieren und detaillierte Einschränkungen festlegen können. Die Regeln sollten ungefähr so aussehen:
...
role your_regular_user u
...
subject /path/to/untrusted/program
connect disabled
...
...
Deaktivieren Sie die Funktion connect () mit LD_PRELOAD. Dies ist die hässlichste Methode, die Sie nur verwenden können, 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
Ich hatte gufw für einige Zeit benutzt, es ist schön und einfach zu installieren / konfigurieren. gufw kommt nicht mit Ubuntu-Installationen. Du musst es manuell installieren 'sudo apt-get install gufw'.
Hier einige Referenzen.