GNU/Linux >> Linux の 問題 >  >> Linux

Linux –プロセスのネットワークアクセスをブロックしますか?

単一のプロセスの(送信)ネットワークアクセスをブロックすることは可能ですか?

承認された回答:

Linux 2.6.24以降(2.6.29までは実験的と見なされます)では、そのためにネットワーク名前空間を使用できます。カーネルで「ネットワーク名前空間」を有効にする必要があります(CONFIG_NET_NS=y )およびutil-linuxとunshare ツール。

次に、ネットワークアクセスなしでプロセスを開始するのは次のように簡単です。

unshare -n program ...

これにより、プロセスの空のネットワーク名前空間が作成されます。つまり、ループバックなしを含むネットワークインターフェースなしで実行されます。 。以下の例では、-rを追加して、現在の有効なユーザーIDとグループIDがスーパーユーザーIDにマップされた後にのみプログラムを実行します(sudoは避けてください)。

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

アプリにネットワークインターフェースが必要な場合は、新しいインターフェースを設定できます:

$ 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

これにより、新しいローカルが作成されることに注意してください ループバック。つまり、生成されたプロセスは、ホストの127.0.0.1の開いているポートにアクセスできなくなります。 。

名前空間内の元のネットワークにアクセスする必要がある場合は、nsenterを使用できます。 他の名前空間を入力します。

次の例では、pingを実行します PID 1で使用されるネットワーク名前空間を使用(-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. Linuxでゾンビプロセスを強制終了する方法

  2. Linux – Linuxで子プロセスを「オフライン」(外部ネットワークなし)で実行するコマンド?

  3. Linux の起動プロセス

  1. Linux プロセスの状態

  2. プロセスのネットワーク アクセスをブロックしますか?

  3. Linux で特定のプログラムへのインターネット アクセスをブロックする方法

  1. Linux OS サービス「ネットワーク」

  2. Linux の CreateProcess?

  3. ファイル linux への同時アクセス