Debian で特定のプログラムがインターネットに接続できないようにブロックする方法 (発信接続をブロックするファイアウォール)、たとえば、wine で実行されている Windows プログラムがホームに電話をかけられないようにする方法はありますか?
答え1
使用できるLinux コンテナネットワークインターフェースのない環境を作成します。たとえば、次のような構成ファイルを作成するとします。
# lxc.network.type = empty
そして、次のようにシェルを起動します。
# lxc-execute --name bash -f /tmp/lxc.conf /bin/bash
このシェル内には、以下以外のネットワーク デバイスは利用できないことがわかりますlo
。
# ifconfig -a
lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
を実行するには root 権限が必要なので、デスクトップ環境でlxc-execute
これを動作させるのは難しいかもしれません。wine
SELinuxの一部として利用できるコマンドもあるようですsandbox
。ここにサンドボックスを使用してFirefoxを実行する例これには、selinux が有効になっている必要があります。
答え2
より簡単な方法の 1 つは、WINE プログラムを別のユーザーとして実行し、そのユーザーからのパケットをドロップするように netfilter を設定することです。
たとえば、「wineusername」は Wine ユーザーで、em1 はネットワーク インターフェイスです。
iptables -A OUTPUT -o em1 -m owner --uid-owner wineusername -j DROP
iptables -A FORWARD -o em1 -m owner --uid-owner wineusername -j DROP
iptables -A INPUT -o em1 -m owner --uid-owner wineusername -j DROP