下面的例子包括四个台式机和四个服务器。名为 stranger 的台式机禁止进入防火墙保护的内部网络,而 familiar 则可以。名为 freedom 的服务器位于公司内部网络,但不受防火墙保护,这对向公开的网站来说是常见的。分配给这些机器的网络地址是随便给定的,但是它们被划分成不同的网络地址集合 (192.168.x.x 分配给防火墙内部网, 216.19.15.x 分配给防火墙外部但仍处于公司内部的网络, 198.102.x.x 指的是公共因特网址)。
表 2: 链操作命令 命令 陈述 ipchains -n 创建一个新链 ipchains -x 删除已有链 ipchains -l 列出链中的所有规则 ipchains -f 删除链中的所有规则,但仍保留该链 ipchains -z 删除与链相关的统计数据 ipchains -p 设置链的全部策略(接受 accept, 否决 deny, 拒绝 reject, 屏蔽 masq, 改向 redirect, 返回 return 等) ipchains -m -l 列出所有使用屏蔽的链 ipchains -m -s 对所有使用屏蔽的链,根据协议不同而分配若干超时限制 表 3: 定义过滤规则的命令 命令 陈述 ipchains -a 将规则添加到链中 ipchains -d 根据规则在链中的位置,删除该规则 ipchains -r 根据规则在链中的位置,用新规则取代它 ipchains -i 将新规则插入到链中的指定位置 ipchains -c 使用链中的规则来过滤 protocol-info 中的内容,从而测试该链 表 3 中的过滤规则命令需要指定源和目的地址、协议类型和相关的端口号、其他ip协议的标志、以及所施行于它们的规则。这些规则条目可以逐一列出,以便或含糊或准确的描述被过滤掉的包的类型。 源地址 (-s) 和目的地址 (-d) 具有相同的格式。您可以具体指定单个主机地址或某网络的一组主机地址。前一种情况,只需要插入主机地址;后一种情况则需要指定网络地址和网络地址掩码或比特掩码。比特掩码和网络掩码的作用是一样的,不同于网络掩码给定四组十进制数,它从网络掩码的左端开始计入比特数。例如,网络掩码 255.255.255.0 等效于比特掩码 24,255.255.224.0 等效于 19。不方便的是,您不能指定任意范围的网络地址,比如从 192.168.1.1 到 192.168.1.133 ╠╠ 因为您无法用合适的网络掩码来表示它们。这个软件不得不这么工作,因为想要使它有效地过滤任意一段网络地址实在是太困难了。
规则 陈述 -d 192.168.1.24 -j accept 接受所有发送到 192.16.1.24 (jane) 的包 -d 192.168.0.0/255.255.224.0 -j deny 拒绝所有试图到达 192.168.1.0 到 192.168.31.255 范围中某个地址的数据包,这就意味着 bob, fred 和 jane 的主机都被保护起来,而 olivia 则没有。 -d 192.168.0.0/19 -j deny 和上一命令相同,只是用比特掩码来表示范围的结束地址。 上面的例子展示了目的地址的细节(用 -d ),但和源地址的用法是相同的(只是代之以 -s )。下一个策略组件是协议类型。ipchains 支持三种常用的传输协议类型:tcp、udp 和 icmp。其他协议仍处于试用阶段,这里略过不谈。
-p tcp -s 192.168.1.24 -j accept 接受所有来自 jane (192.168.1.24) 的包 -p tcp -d 192.168.0.0/19 -j deny 否决所有到达 bob, fred 和 jane 的 tcp 包 -p tcp -d 192.168.1.24 80 -j accept 接受到达 jane 机器80端口的所有 tcp 包 -p tcp -d 192.168.1.24 www -j accept 和上一命令类似,但用 www 来表示缺省的 web 服务器端口。在 /etc/services 文件中定义了此端口。 -p tcp -d 192.168.1.24 0:1024 -j deny 否决所有要到 jane 的0到1024范围中任何一个端口的 tcp 包。 -p tcp -d 192.168.1.24 www -j accept 接收要到 jane 机器上 www 端口(缺省情况下即80端口)的所有 tcp 包。 -p tcp -d 192.168.1.24 ! www -j deny d 否决要到 jane 机器上 www 之外任何端口的 tcp 包。命令中的感叹后(!)表示对它后面的值取非,这里即用 ! www 来表示除了 www 之外的所有端口值。 -p tcp -d ! 192.168.1.24 www -j deny 否决要到除了 jane 之外的其他机器 www 端口的所有 tcp 包。注意这条命令与上一条并不相同。 -p tcp -d ! 192.168.1.24 ! www -j deny 否决所有要到 jane 之外的其他机器,并且非 www 端口的 tcp 包。也就是说,它允许那些到达 jane 的 www 端口的 tcp 包。尽量不要用这样的规则,以免引起混乱。 -p ! tcp -d 192.168.1.24 -j deny 否决所有要到 jane 机器上的 tcp 之外的数据包。 对于 udp 协议,其工作情况类似。而对于支持 ping 和 traceroute 的 icmp 协议则需要指定端口.
-p icmp -d 192.168.1.24 0 -j accept -p icmp -d 192.168.1.24 8 -j accept 接受对 jane 的 ping 包。为了让 ping 正常工作,这两条规则(icmp 端口0 和 8)必须分开写。 -p icmp -d 192.168.1.24 3 -j accept 如果 jane 机器上的用户试图访问一个远程站点,所返回的“无法到达” icmp 消息允许通过。访问一些远程机器的 telnet 或其他服务时,常有这种没有回应的情况发生,因此通常都会使用这条规则。 -p icmp -d 192.168.1.24 11 -j deny 否决来自防火墙外部 traceroute 命令的数据包。 除了地址和协议信息,您还可以指定通过包的网络接口驱动程序。如果要加入考虑数据包的来源,是比较容易的,在指定过滤规则应用的网络端口时也很有用。
-i eth0 -s 192.168.1.24 -j accept 使用第一块以太网卡 (eth0) 来接受所有来自 jane 的数据包。 -i eth+ -s 192.168.1.24 -j accept 可以用任何一块网卡 (eth+) 来接受来自 jane 的数据包。 -i ppp0 -p tcp -s 198.102.68.2 1025:65535 -j accept 通过 ppp 接口,来接受所有来自 familiar (198.102.68.2) 1025 到 65535 端口之间的 tcp 包。 (责任编辑:admin) |