GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Netzwerkzugriff eines Prozesses blockieren?

Ist es möglich, den (ausgehenden) Netzwerkzugriff eines einzelnen Prozesses zu blockieren?

Akzeptierte Antwort:

Mit Linux 2.6.24+ (bis 2.6.29 als experimentell betrachtet) können Sie dafür Netzwerk-Namespaces verwenden. Sie müssen die „Netzwerk-Namespaces“ in Ihrem Kernel aktiviert haben (CONFIG_NET_NS=y ) und util-linux mit dem unshare Werkzeug.

Dann ist das Starten eines Prozesses ohne Netzwerkzugriff so einfach wie:

unshare -n program ...

Dadurch wird ein leerer Netzwerk-Namespace für den Prozess erstellt. Das heißt, es wird ohne Netzwerkschnittstellen ausgeführt, einschließlich kein Loopback . Im folgenden Beispiel fügen wir -r hinzu, um das Programm erst auszuführen, nachdem die aktuellen effektiven Benutzer- und Gruppen-IDs den Superuser-IDs zugeordnet wurden (vermeiden Sie sudo):

$ unshare -r -n ping 127.0.0.1
connect: Network is unreachable

Wenn Ihre App eine Netzwerkschnittstelle benötigt, können Sie eine neue einrichten:

$ unshare -n -- sh -c 'ip link set dev lo up; ping 127.0.0.1'
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=32 time=0.066 ms

Beachten Sie, dass dadurch eine neue, lokale erstellt wird Schleife. Das heißt, der erzeugte Prozess kann nicht auf offene Ports von 127.0.0.1 des Hosts zugreifen .

Wenn Sie Zugriff auf das ursprüngliche Netzwerk innerhalb des Namensraums benötigen, können Sie nsenter verwenden um den anderen Namensraum einzugeben.

Im folgenden Beispiel wird ping ausgeführt mit Netzwerknamensraum, der von PID 1 verwendet wird (wird durch -t 1 angegeben). ):

$ nsenter -n -t 1 -- ping -c4 example.com
PING example.com (93.184.216.119) 56(84) bytes of data.
64 bytes from 93.184.216.119: icmp_seq=1 ttl=50 time=134 ms
64 bytes from 93.184.216.119: icmp_seq=2 ttl=50 time=134 ms
64 bytes from 93.184.216.119: icmp_seq=3 ttl=50 time=134 ms
64 bytes from 93.184.216.119: icmp_seq=4 ttl=50 time=139 ms

--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 134.621/136.028/139.848/2.252 ms

Linux
  1. So beenden Sie einen Zombie-Prozess unter Linux

  2. 5 Linux-Befehle zur Fehlerbehebung im Netzwerk

  3. Linux – Wie kann ich die Netzwerkfreigabe für den aktuellen Prozess aufheben?

  4. Linux-CreateProcess?

  5. Zugriff auf ausgewählte Websites unter Linux nicht möglich (aber unter Windows möglich)

So beenden Sie einen Prozess in Linux

Pstree-Befehl unter Linux

Kill-Befehl unter Linux

Prozessüberwachung unter Linux

Linux – Befehl zum Ausführen eines untergeordneten Prozesses „offline“ (kein externes Netzwerk) unter Linux?

Linux-nload-Befehl