netfilter/iptables 是与最新的 2.4.x 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器,则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。Mugdha Vairagade 将介绍 netfilter/iptables 系统、它是如何工作的、它的优点、安装和配置以及如何使用它来配置 Linux 系统上的防火墙以过滤 IP 信息包。
注:至少具备 Linux OS 的中级水平知识,以及配置 Linux 内核的经验,将有助于对本文的理解。
对于本文,我们将使用 iptables 用户空间工具版本 1.2.6a 和内核版本 2.4.9。
Linux 安全性和 netfilter/iptables
Linux 因其健壮性、可靠性、灵活性以及好象无限范围的可定制性而在 IT 业界变得非常受欢迎。Linux 具有许多内置的能力,使开发人员可以根据自己的需要定制其工具、行为和外观,而无需昂贵的第三方工具。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器,所要用到的一种内置能力就是针对网络上 Linux 系统的防火墙配置。可以在 netfilter/iptables IP 信息包过滤系统(它集成在 2.4.x 版本的 Linux 内核中)的帮助下运用这种能力。
在如 ipfwadm和 ipchains 这样的 Linux 信息包过滤解决方案中,netfilter/iptables IP 信息包过滤系统是最新的解决方案,而且也是第一个集成到 Linux 内核的解决方案。对于 Linux 系统管理员、网络管理员以及家庭用户(他们想要根据自己特定的需求来配置防火墙、在防火墙解决方案上节省费用和对 IP 信息包过滤具有完全控制权)来说,netfilter/iptables 系统十分理想。
First, unpack the tool package into a directory:# bzip2 -d iptables-1.2.6a.tar.bz2# tar -xvf iptables-1.2.6a.tarThis will unpack the tool source into a directory named iptables-1.2.6a. Now change to the iptables-1.2.6a directory:# cd iptables-1.2.6aThe INSTALL file in this directory contains a lot of useful information on compiling and installing this tool.Now compile the userspace tool using the following command:# make KERNEL_DIR=/usr/src/linux/Here the KERNEL_DIR=/usr/src/linux/ specifies the path to the kernel's directory. If the directory of kernel happens to be different on some systems, the appropriate directory path should be substituted for /usr/src/linux.Now install the source binaries using the following command:# make install KERNEL_DIR=/usr/src/linux/Now the installation is complete.
注:如果您有 RedHat Linux 版本 7.1 或更高版本,就不需要执行这里说明的前两个步骤。正如我们所知道的,该 Linux 分发版(distribution)的标准安装中包含了 iptables 用户空间工具。但在缺省情况下,这个工具是关闭的。为了使该工具运行,需要执行以下步骤( 清单 2): 清单 2. 在 RedHat 7.1 系统上设置用户空间工具的示例
First you'll have to turn off the old ipchains module (predecessor of iptables) available in this OS package.This can be done using the following command:# chkconfig --level 0123456 ipchains offNext, to completely stop the ipchains module from running, so that it doesn't conflict with the iptables tool, you will have to stop the ipchains service using the following command:# service ipchains stopNow if you don't want to keep this old ipchains module on your system, uninstall it using the following command:# rpm -e ipchainsNow you can turn on the iptables userspace tool with the following command:# chkconfig --level 235 iptables onFinally, you'll have to activate the iptables service to make the userspace tool work by using this command:# service iptables startNow the userspace tool is ready to work on a RedHat 7.1 or higher system.
netfilter/iptables 系统的优点
netfilter/iptables 的最大优点是它可以配置有状态的防火墙,这是 ipfwadm 和 ipchains 等以前的工具都无法提供的一种重要功能。有状态的防火墙能够指定并记住为发送或接收信息包所建立的连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度。这里有四种有效状态,名称分别为 ESTABLISHED 、 INVALID 、 NEW 和 RELATED 。
状态 ESTABLISHED 指出该信息包属于已建立的连接,该连接一直用于发送和接收信息包并且完全有效。 INVALID 状态指出该信息包与任何已知的流或连接都不相关联,它可能包含错误的数据或头。状态 NEW 意味着该信息包已经或将启动新的连接,或者它与尚未用于发送和接收信息包的连接相关联。最后, RELATED 表示该信息包正在启动新连接,以及它与已建立的连接相关联。
netfilter/iptables 的另一个重要优点是,它使用户可以完全控制防火墙配置和信息包过滤。您可以定制自己的规则来满足您的特定需求,从而只允许您想要的网络流量进入系统。
另外,netfilter/iptables 是免费的,这对于那些想要节省费用的人来说十分理想,它可以代替昂贵的防火墙解决方案。