要构建 Linux IP 防火墙,必须有一个内核,该内核构建时带有 IP 防火墙支持和适当的配置实用程序。在 2.2 系列之前的所有生产内核中,您将使用 ipfwadm 实用程序。2.2.x 内核标志着 Linux IP 防火墙的第三代版本发布,名为 IP Chains。IP chains 使用一个类似于 ipfwadm 的程序,名为 ipchains。Linux 内核 2.3.15 及更高版本支持第四代 Linux IP 防火墙,名为 netfilter。netfilter 代码是对 Linux 中数据包处理流程进行大规模重新设计的结果。netfilter 是一个多方面的实体,为 ipfwadm 和 ipchains 提供直接的向后兼容支持,以及一个名为 iptables 的新替代命令。我们将在接下来的几个部分中讨论这三者之间的差异。
必须配置 Linux 内核以支持 IP 防火墙。这并没有太多其他内容,只需在执行以下操作时选择适当的选项make menuconfig您的内核。[1] 我们在 第 3 章” 中描述了如何执行此操作。在 2.2 内核中,您应该选择以下选项
Networking options ---> [*] Network firewalls [*] TCP/IP networking [*] IP: firewalling [*] IP: firewall packet logging |
在 2.4.0 及更高版本的内核中,您应该选择此选项
Networking options ---> [*] Network packet filtering (replaces ipchains) IP: Netfilter Configuration ---> . <M> Userspace queueing via NETLINK (EXPERIMENTAL) <M> IP tables support (required for filtering/masq/NAT) <M> limit match support <M> MAC address match support <M> netfilter MARK match support <M> Multiple port match support <M> TOS match support <M> Connection state match support <M> Unclean match support (EXPERIMENTAL) <M> Owner match support (EXPERIMENTAL) <M> Packet filtering <M> REJECT target support <M> MIRROR target support (EXPERIMENTAL) . <M> Packet mangling <M> TOS target support <M> MARK target support <M> LOG target support <M> ipchains (2.2-style) support <M> ipfwadm (2.0-style) support |
ipfwadm(IP 防火墙管理)实用程序是用于为 2.2.0 之前的所有内核构建防火墙规则的工具。它的命令语法可能非常令人困惑,因为它能完成如此复杂范围的事情,但我们将提供一些常见的示例,这些示例将说明其中最重要的变化。
ipfwadm 实用程序包含在大多数现代 Linux 发行版中,但可能不是默认安装的。可能有一个特定的软件包需要您安装。如果您的发行版不包含它,您可以从 ftp.xos.nl 获取源代码包,位置在/pub/linux/ipfwadm/目录中,并自行编译。
就像 ipfwadm 实用程序一样,ipchains 实用程序最初使用起来也可能有些令人困惑。它提供了 ipfwadm 的所有灵活性,并具有简化的命令语法,此外还提供了一种“链接”机制,允许您管理多个规则集并将它们链接在一起。我们将在本章末尾附近的一个单独部分中介绍规则链接,因为在大多数情况下,这是一个高级概念。
ipchains 命令出现在大多数基于 2.2 内核的 Linux 发行版中。如果您想自行编译它,可以从其开发人员的站点 http://www.rustcorp.com/linux/ipchains/ 找到源代码包。源代码包中包含一个名为 ipfwadm-wrapper 的包装脚本,该脚本模仿 ipfwadm 命令,但实际上调用 ipchains 命令。有了这个补充,现有防火墙配置的迁移变得更加轻松。
iptables 实用程序的语法与 ipchains 语法非常相似。这些更改是改进,也是工具重新设计为可通过共享库扩展的结果。就像 ipchains 一样,我们将提供 iptables 等效的示例,以便您可以比较和对比其语法与其他语法的不同。
iptables 实用程序包含在 netfilter 源代码包中,该包可在 http://www.samba.org/netfilter/ 获取。它也将包含在任何基于 2.4 系列内核的 Linux 发行版中。
我们将在本章后面的一个单独部分中稍微讨论一下 netfilter 的巨大进步。
[1] | 防火墙数据包日志记录是一项特殊功能,它将关于每个与特定防火墙规则匹配的数据报的信息行写入到一个特殊设备,以便您可以看到它们。 |