GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Bloquer l'accès réseau d'un processus ?

Est-il possible de bloquer l'accès réseau (sortant) d'un seul processus ?

Réponse acceptée :

Avec Linux 2.6.24+ (considéré comme expérimental jusqu'à 2.6.29), vous pouvez utiliser des espaces de noms réseau pour cela. Vous devez avoir les "espaces de noms réseau" activés dans votre noyau (CONFIG_NET_NS=y ) et util-linux avec le unshare outil.

Ensuite, démarrer un processus sans accès au réseau est aussi simple que :

unshare -n program ...

Cela crée un espace de noms réseau vide pour le processus. C'est-à-dire qu'il est exécuté sans interface réseau, y compris sans bouclage . Dans l'exemple ci-dessous, nous ajoutons -r pour exécuter le programme uniquement après que les identifiants d'utilisateur et de groupe effectifs actuels ont été mappés sur ceux du superutilisateur (évitez sudo) :

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

Si votre application a besoin d'une interface réseau, vous pouvez en configurer une nouvelle :

$ 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

Notez que cela créera un nouveau fichier local bouclage. Autrement dit, le processus généré ne pourra pas accéder aux ports ouverts du 127.0.0.1 de l'hôte. .

Si vous avez besoin d'accéder au réseau d'origine à l'intérieur de l'espace de noms, vous pouvez utiliser nsenter pour saisir l'autre espace de noms.

L'exemple suivant exécute ping avec l'espace de noms de réseau utilisé par le PID 1 (il est spécifié via -t 1 ):

$ 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. Comment tuer un processus zombie sous Linux

  2. États de processus Linux

  3. accès simultané au fichier linux

  4. Créer un démon sous Linux

  5. Comment bloquer l'accès Internet à certains programmes sous Linux

Comment tuer un processus sous Linux

Commande Pstree sous Linux

Commande Kill sous Linux

Surveillance des processus sous Linux

Linux - Commande pour exécuter un processus enfant "hors ligne" (pas de réseau externe) sous Linux ?

Commande Linux nload