GNU/Linux >> Tutoriales Linux >  >> Linux

Linux – ¿Bloquear el acceso a la red de un proceso?

¿Es posible bloquear el acceso a la red (saliente) de un solo proceso?

Respuesta aceptada:

Con Linux 2.6.24+ (considerado experimental hasta 2.6.29), puede usar espacios de nombres de red para eso. Debe tener habilitados los "espacios de nombres de red" en su núcleo (CONFIG_NET_NS=y ) y util-linux con unshare herramienta.

Entonces, iniciar un proceso sin acceso a la red es tan simple como:

unshare -n program ...

Esto crea un espacio de nombres de red vacío para el proceso. Es decir, se ejecuta sin interfaces de red, incluido sin loopback . En el siguiente ejemplo, agregamos -r para ejecutar el programa solo después de que las ID de usuario y grupo efectivas actuales se hayan asignado a las de superusuario (evite sudo):

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

Si su aplicación necesita una interfaz de red, puede configurar una nueva:

$ 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

Tenga en cuenta que esto creará un nuevo local bucle invertido Es decir, el proceso generado no podrá acceder a los puertos abiertos del 127.0.0.1 del host. .

Si necesita obtener acceso a la red original dentro del espacio de nombres, puede usar nsenter para ingresar el otro espacio de nombres.

El siguiente ejemplo ejecuta ping con espacio de nombres de red que utiliza PID 1 (se especifica a través de -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. Cómo matar un proceso zombie en Linux

  2. 5 comandos de solución de problemas de red de Linux

  3. Linux:¿cómo dejar de compartir la red para el proceso actual?

  4. Servicio de sistema operativo Linux 'red'

  5. Estados de proceso de Linux

Cómo matar un proceso en Linux

Comando Pstree en Linux

Comando matar en Linux

Supervisión de procesos en Linux

Comando de descarga de Linux

Cómo bloquear el acceso a Internet a ciertos programas en Linux