プログラムがインターネットを使用するのを防ぐ

プログラムがインターネットを使用するのを防ぐ

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

関連情報