CentOS5.7 iptables防火墙配置实例

发布时间:2020-05-01编辑:脚本学堂
本文介绍下,在centos5.7系统中配置iptables防火墙的例子,有需要的朋友,可以参考学习下。

我们建议在centos配置防火墙时,用iptables命令结合脚本文件的方式。

例如,下面的命令:
iptables -A INPUT -i eth0 -p udp -s 60.195.252.110 --dport 1000 -j ACCEPT
这种并没有错。也是好用的。
但是在centos系统中,其主要的防火墙设置都在RH-Firewall中了。
例如:
 

复制代码 代码示例:
[root@jbxue ~]# 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之后,此时,只要调整下次序就行,而不用添加。