CentOS防火墙配置实战

操作系统CentOS 5.7.
首先,先记住别用setup配置防火墙,因为灵活度有限,同时,还会还原你用iptables设置的规则。
另外,使用iptables配置完后要使用service iptables save进行保存。
如果你想快速看如何添加防火墙规则的请点击此处

【正文】
一般来说我们使用iptables采用以下形式,

iptables -A INPUT -i eth0 -p udp -s 60.195.252.110 --dport 1000 -j ACCEPT

这种并没有错。也是好用的。但是在centos系统中,其主要的防火墙设置都在RH-Firewall中了。下面就是一个样例:

[root@nanya ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     udp  --  60.195.252.110       0.0.0.0/0           udp dpt:161 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:10020
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

注意第4行,

ACCEPT     udp  --  60.195.252.110       0.0.0.0/0           udp dpt:161

此规则在下面这条规则之后了。

RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

在对应的

Chain RH-Firewall-1-INPUT (2 references)

文本后面的最后一行,我们发现有如下条目:

REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

其实,这里这条就是拒绝一切请求。所以你配置的规则因为发生在其后,所以是无法起作用的。
为此,我们不能这么设置,我们需要让我们的配置进入到RH-Firewall的配置中。
于是,我们使用如下命令:

iptables -A RH-Firewall-1-INPUT -i eth0 -p udp -s 60.195.252.110 --dport 1000 -j ACCEPT

这里把对应的Chain的名字改成了RH-Firewall对应的。所以,我们现在可以得到如下情况:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:10020
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
ACCEPT     udp  --  60.195.252.110       0.0.0.0/0           udp dpt:161

最后一条加入了,但是这不是,还是发生在拒绝之后,不会起作用?
对的。所以,绕了这么一圈,我们现在终于要拿出杀手锏了!

# vim /etc/sysconfig/iptables

此命令,会直接调用防火墙配置文件,完全可以让我们灵活配置。内容如下:

# Generated by iptables-save v1.3.5 on Sun Feb  5 00:11:13 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1100:159219]
: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 10020 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -s 60.195.252.110 -i eth0 -p udp -m udp --dport 161 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Sun Feb  5 00:11:13 2012

注意了,这里的

-A RH-Firewall-1-INPUT -s 60.195.252.110 -i eth0 -p udp -m udp --dport 161 -j ACCEPT

是我们添加进去的项,我们添加在REJECT之前,这样他就可以起作用了。注意,此处可以如果没有起租用,可以执行service iptables restart。
在这里值得一提的是,如果我们刚才执行了service iptables save的话,上面这条信息,会出现在REJECT之后,此时,我们只要调整下次序就行,就不用添加了。
所以,具体是直接修改iptables配置文件,还是利用iptables命令辅助一下,这就看你了。





 » 转载请注明来源:AnyKoro Blog » 《CentOS防火墙配置实战》
 » 订阅本站:RSS订阅

发表评论

您也可以使用微博账号登陆

无觅相关文章插件,快速提升流量