应用iptables 与ipchains和ipfwadm不同的是,iptables可以配置有状态的防火墙。iptables可以检测到源地址和目的地址、源端口和目的端口及流入数据包的顺序,即iptables记住了在现有连接中,哪些数据包已经被允许接收。这使得暂时性的端口只有在需要时才会被打开,并且会拒绝所有永久性占用端口的请求,大大地加强了安全性。同时,那些被更改了报头的数据包,即使包含有一个被允许的目的地址和端口,也会被检测到并被丢弃。此外,有状态的防火墙能够指定并记住为发送或接收信息包所建立连接的状态。防火墙可以从信息包的连接跟踪状态获得该信息。在决定新的信息包过滤时,防火墙所使用的这些状态信息可以增加其效率和速度。
1.启动和停止iptables
下面将正式使用iptables来创建防火墙。启动和停止iptables的方法取决于所使用的Linux发行版,可以先查看所使用Linux版本的文档。
一般情况下,iptables已经包含在Linux发行版中,运行iptables --version来查看系统是否安装了iptables。在Red Hat 9.0中,安装的版本是iptables v1.2.7a。如果系统没有安装iptables,则可以从http://www.netfilter.org下载。
2.查看规则集
上面仅对iptables的用法做了一个简单介绍,使用中可以运行man iptables来查看所有命令和选项的完整介绍,或者运行iptables -help来查看一个快速帮助。要查看系统中现有的iptables规划集,可以运行以下命令:
下面是没有定义规划时iptables的样子:
如上例所示,每一个数据包都要通过三个内建的链(INPUT、OUTPUT和FORWARD)中的一个。
filter是最常用的表,在filter表中最常用的三个目标是ACCEPT、DROP和REJECT。DROP会丢弃数据包,不再对其进行任何处理。REJECT会把出错信息传送至发送数据包的主机。图1 Red Hat 9.0中安全设置的GUI工具
在Red Hat 9.0中,提供一个GUI程序来让用户对系统的安装级别进行简单的配置。该工具的启动方法是:主选单→系统设置→安全工具(如图1所示)。在此将安全级别设为“高级”,并选择使用默认的防火墙规则。点击确定后,再用iptables -list显示,发现iptables与没有定义规则前已经有很大不同,如下所示:
现实中一般不使用这个GUI工具,因为它的功能有限,也不够透明。相比较而言,SuSE 9.0中相应的配置工具要好得多,它可以在GUI下对防火墙进行更加细化的配置(比如增加了IP转发和伪装等功能的配置)。尽管这样,一般还是自己来增加和删除规则。图2 SuSE 9.0中YaST配置工具中的防火墙设置