这是一个微型防火墙,用于将目标设备与本地网络完全隔离。 它允许受感染的机器访问互联网,但不会危及本地网络。
本项目依赖于 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 的操作系统。
首先,设置一台具有三个网络接口的机器。
第一个网络接口(如 eth0)将正常配置,带有 TCP/IP 协议栈,以便您可以 SSH 连接到它。
另外两个网络接口不应有 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.macexternal.router.macinternal.target.ipallow 范围内,但不在 block 范围内external.router.ip入站数据包必须满足以下条件:
internal.target.macexternal.router.macinternal.target.ipallow 范围内,但不在 block 范围内external.router.ip当然,没有绝对保证,但这个程序的安全性相当不错。
安全性基于这样一个事实:没有 IP 协议栈绑定到网卡。
这意味着受感染的目标设备无法以任何方式接触防火墙机器,除非在 is_allowed() 函数允许的范围内。
该函数代表了防火墙机器的大部分攻击面。而且,正如您从阅读该函数中可以看到的那样,它几乎不包含任何功能,这意味着攻击面确实非常小。
有一些理论上的攻击可能会在物理层发生,但在大多数情况下,我们不必担心它们。