Debianには、特定のプログラムがインターネットに接続するのを防ぐ方法(発信接続をブロックするファイアウォール)がありますか?たとえば、ワインで実行されている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
難しいかもしれません。
sandbox
明らかにSELinuxの一部として使用できるコマンドもあります。これはサンドボックスを使用してFirefoxを実行する例。これを行うにはselinuxを有効にする必要があります。
答え2
より簡単なアプローチは、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