GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:bloccare l'accesso alla rete di un processo?

È possibile bloccare l'accesso alla rete (in uscita) di un singolo processo?

Risposta accettata:

Con Linux 2.6.24+ (considerato sperimentale fino alla 2.6.29), puoi utilizzare gli spazi dei nomi di rete per questo. Devi avere gli "spazi dei nomi di rete" abilitati nel tuo kernel (CONFIG_NET_NS=y ) e util-linux con unshare strumento.

Quindi, avviare un processo senza accesso alla rete è semplice come:

unshare -n program ...

Questo crea uno spazio dei nomi di rete vuoto per il processo. Cioè, viene eseguito senza interfacce di rete, incluso nessun loopback . Nell'esempio seguente aggiungiamo -r per eseguire il programma solo dopo che l'utente effettivo corrente e gli ID di gruppo sono stati mappati su quelli di superutente (evita sudo):

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

Se la tua app ha bisogno di un'interfaccia di rete, puoi configurarne una nuova:

$ 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

Nota che questo creerà un nuovo, locale loopback. Cioè, il processo generato non sarà in grado di accedere alle porte aperte del 127.0.0.1 dell'host .

Se devi accedere alla rete originale all'interno dello spazio dei nomi, puoi utilizzare nsenter per accedere all'altro spazio dei nomi.

L'esempio seguente esegue ping con spazio dei nomi di rete utilizzato dal PID 1 (è specificato tramite -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. Come uccidere un processo zombie su Linux

  2. Linux:come annullare la condivisione della rete per il processo corrente?

  3. Processo di avvio di Linux

  4. Stati del processo Linux

  5. Impossibile accedere a siti Web selezionati su Linux (ma possibile su Windows)

Come uccidere un processo in Linux

Comando Pstree in Linux

Kill Command in Linux

5 Comandi per la risoluzione dei problemi di rete Linux

Monitoraggio dei processi su Linux

comando Linux nload