
これは、対象デバイスをローカルネットワークから完全に隔離するミニファイアウォールです。
これは、対象デバイスをローカルネットワークから完全に隔離するミニファイアウォールです。感染したマシンにインターネットアクセスを許可する一方で、ローカルネットワークを危険にさらさないためのものです。
このプロジェクトは libpcap と、もちろんCコンパイラに依存しています。
Debianでは、以下でうまくいくはずです。
# apt-get install git gcc make libpcap-dev
# git clone https://github.com/robertdavidgraham/isowall
# cd isowall
# make
これにより、バイナリ isowall がローカルの isowall/bin ディレクトリに配置されます。
これは、Windows、Mac OS X、xBSD、そして libpcap をサポートするほとんどすべてのオペレーティングシステムでも動作するはずです。
まず、3つのネットワークインターフェースを持つマシンを準備します。
最初のネットワークインターフェース(eth0 など)は通常どおりTCP/IPスタックで設定し、SSHで接続できるようにします。
他の2つのネットワークインターフェースには、TCP/IPスタックもIPアドレスも、何も設定しないでください。これは最も重要な設定手順であり、最も間違えやすい点でもあります。たとえば、マシン上のDHCPソフトウェアが、これらの追加インターフェースに対して自動的にDHCP要求を送信するように設定されている場合があります。これらのインターフェースに何もバインドされないように修正する必要があります。
実行するには、次のように入力するだけです。
# ./bin/isowall --internal eth1 --external eth2 -c xxxx.conf
ここで、xxxx.conf には設定が含まれます。これについては以下で説明します。
以下は典型的な設定ファイルの例です。
internal = eth1
internal.target.ip = 10.0.0.129
internal.target.mac = 02:60:8c:37:87:f3
external = eth2
external.router.ip = 10.0.0.1
external.router.mac = 66:55:44:33:22:11
allow = 0.0.0.0/0
block = 192.168.0.0/16
block = 10.0.0.0/8
block = 224.0.0.0-255.255.255.255
隔離する対象デバイスは、指定されたIPアドレスとMACアドレスを持ちます。
IPv4パケットとARPパケットのみが通過します。
送信パケットは次の条件を満たす必要があります。
internal.target.mac と等しいexternal.router.mac と等しいinternal.target.ip と等しいallow の範囲内にあり、block の範囲内にないexternal.router.ip と等しくなければならない受信パケットは次の条件を満たす必要があります。
internal.target.mac と等しいexternal.router.mac と等しいinternal.target.ip と等しいallow の範囲内にあり、block の範囲内にないexternal.router.ip と等しくなければならないもちろん保証はありませんが、このプログラムはかなり優れたセキュリティを備えています。
セキュリティは、アダプタにIPスタックがバインドされていないという事実に基づいています。つまり、感染した標的は、is_allowed() 関数内で許可された場合を除き、ファイアウォールマシンに一切触れることができません。その関数がファイアウォールマシンの攻撃面の大部分を占めています。そして、その関数を読めばわかるように、そこにはほとんど機能が含まれておらず、攻撃面が実際に非常に小さいことを意味します。
物理層で発生する可能性のある理論上の攻撃がいくつかありますが、ほとんどの場合、それらを心配する必要はありません。