9.2.1 iptables防火墙的运行与管理
RHEL 5默认安装时,已经在系统中安装了iptables软件包,可以用以下命令查看。
[root@localhost ~]# rpm -qa | grep iptables
iptables-1.3.5-1.2.1
iptables-ipv6-1.3.5-1.2.1
#
一般情况下,iptable开机时都已经默认运行,但与其他一些服务不同,iptables的功能是管理内核中的防火墙规则,不需要常驻内存的进程。如果对防火墙的配置做了修改,并且想保存已经配置的iptables规则,可以使用以下命令。
# /etc/rc.d/init.d/iptables save
此时,所有正在使用的防火墙规则将保存到/etc/sysconfig/iptables文件中,可以用以下命令查看该文件的内容。
# more /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Fri Jan 16 14:58:31 2009
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2237:2371316]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 808 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
可以看到,/etc/sysconfig/iptables文件中包含了一些iptables规则,这些规则的形式与iptables命令类似,但也有区别。
%注意:一般不建议用户手工修改这个文件的内容,这个文件只用于保存启动iptables时,需要自动应用的防火墙规则。
以上看到的实际上是默认安装RHEL 5时该文件中的内容,其所确定的规则的解释见9.2.2小节。还有一种保存iptables规则的方法是使用iptables-save命令,格式如下:
# iptables-save > abc
此时,正在使用的防火墙规则将保存到abc文件中。如果希望再次运行iptables,可以使用以下命令。
# /etc/rc.d/init.d/iptables start
上述命令实际上是清空防火墙所有规则后,再按/etc/sysconfig/iptables文件的内容重新设定防火墙规则。还有一种复原防火墙规则的命令如下:
# iptables-restore < abc
此时,由iptables-save命令保存在abc文件中的规则将重新载入到防火墙中。如果使用以下命令,将停止iptables的运行。
# /etc/rc.d/init.d/iptables stop
上述命令实际上是清空防火墙中的规则,与“iptables -F”命令类似。此外,/etc/sysconfig目录的iptables-config文件是iptables防火墙的配置文件,去掉注释后的初始内容和解释 如下:
配置1:
IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"
功能:当iptables启动时,载入ip_conntrack_netbios_ns和ip_conntrack_ftp两个iptables模块。
配置2:
IPTABLES_MODULES_UNLOAD="yes"
功能:当iptables重启或停止时,是否卸载所载入的模块,yes表示是。
配置3:
IPTABLES_SAVE_ON_STOP="no"
功能:当停止iptables时,是否把规则和链保存到/etc/sysconfig/iptables文件,no表 示否。
配置4:
IPTABLES_SAVE_ON_RESTART="no"
功能:当重启iptables时,是否把规则和链保存到/etc/sysconfig/iptables文件,no表 示否。
配置5:
IPTABLES_SAVE_COUNTER="no"
功能:当保存规则和链时,是否同时保存计数值,no表示否。
配置6:
IPTABLES_STATUS_NUMERIC="yes"
功能:输出iptables状态时,是否以数字形式输出IP地址和端口号,yes表示是。
配置7:
IPTABLES_STATUS_VERBOSE="no"
功能:输出iptables状态时,是否包含输入输出设备,no表示否。
配置8:
IPTABLES_STATUS_LINENUMBERS="yes"
功能:输出iptables状态时,是否同时输出每条规则的匹配数,yes表示是。