9.2.3 管理主机防火墙规则

来源:互联网 发布:js qq在线客服 编辑:程序博客网 时间:2024/05/21 19:21

9.2.3  管理主机防火墙规则

可以有很多功能种类的防火墙,有些是安装在某一台主机上,主要用于保护主机本身的安全;有些是安装在网络中的某一节点,专门用于保护网络中其他计算机的安全;也有一些可以为内网的客户机提供NAT服务,使内网的客户机共用一个公网IP,以便节省IP地址资源。下面首先介绍一下主机防火墙的应用示例。

当一台服务器为外界提供比较重要的服务,或者一台客户机在不安全的网络环境中使用时,都需要在计算机上安装防火墙,以最大限度地防止主机受到外界的攻击。9.2.2小节介绍的开机时默认的防火墙设置非常典型,用户可以根据自己主机的功能关闭已经开放的端口,或者开放更多的端口,以便允许符合更多规则的数据包通过。

例如,为了使主机能为外界提供telnet服务,除了配置好telnet服务器外,还需要开放TCP23号端口。因为在默认的防火墙配置中,并不允许目的端口为23TCP数据包进入主机。为了开放TCP23号端口,可以有两种办法,一种是在RH-Firewall-1-INPUT链中加入相应的规则,还有一种是把规则加到INPUT链中。但需要注意的是,规则是有次序的,如果使用以下命令,则是没有效果的。

 

# iptables -A RH-Firewall-1-INPUT -p tcp --dport 23 -j ACCEPT

 

上述命令执行后,可以再次查看规则情况。

 

# iptables -L -n --line-number

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

num  target       prot opt  source            destination        

11   ACCEPT     tcp  --  0.0.0.0/0        0.0.0.0/0    state NEW tcp dpt:80

12   ACCEPT     tcp  --  0.0.0.0/0        0.0.0.0/0    state NEW tcp dpt:25

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

14   ACCEPT     tcp  --  0.0.0.0/0        0.0.0.0/0     tcp dpt:23
                                                    #
新添加的规则

#

 

可以看到,新添加的规则位于最后的位置。由于所有的数据包都可以与目标动作为REJECT的规则号为13的规则匹配,而REJECT代表的是拒绝,因此数据包到达新添加的规则前肯定已被丢弃,这条规则是不会被使用的。为了解决这个问题,需要把上述规则插入到现有的规则中,要位于规则13的前面。下面是正确的开放TCP23号端口的命令。

 

# iptables -I RH-Firewall-1-INPUT 11 -p tcp --dport 23 -j ACCEPT

 

以上命令中,“-I RH-Firewall-1-INPUT 11”表示在RH-Firewall-1-INPUT链原来的规则11前面插入一条新规则,规则内容是接受目的端口为23TCP数据包。为了删除前面添加的无效规则,可以执行以下命令。

 

# iptables -D RH-Firewall-1-INPUT 15

 

15是第一次添加的那条无效规则此时的规则号,也可能是其他的数值,可根据具体显示结果加以改变。如果希望新加的规则与原来的规则1112等类似,可以执行以下命令。

 

# iptables -I RH-Firewall-1-INPUT 11 -m state --state NEW -p tcp --dport 23 -j ACCEPT

 

以上是在RH-Firewall-1-INPUT链中添加规则,以开放TCP23号端口。还有一种开放TCP23号端口的方法是在INPUT链中添加规则,具体命令如下所示。

 

# iptables -I INPUT 1 -p tcp --dport 23 -j ACCEPT

# iptables -L --line-number

Chain INPUT (policy ACCEPT)

num  target               prot opt    source      destination        

1    ACCEPT               tcp   --     anywhere    anywhere    tcp dpt:telnet

2    RH-Firewall-1-INPUT   all   --     anywhere   anywhere

%注意:添加的规则也要位于原来规则2的前面,否则,任何数据包都匹配规则2,将会跳到RH-Firewall-1-INPUT链,并且不再回来。因此,添加在规则2后面的规则都是无效的。

前面介绍的是在RHEL5默认防火墙规则的基础上添加用户自己的防火墙规则,以开放TCP23号端口。在很多的时候,用户可能希望从最初的状态开始,构建自己的防火墙。为了从零开始设置iptables防火墙,可以用以下命令清空防火墙中所有的规则。

 

# iptables -F

 

然后再根据要求,添加自己的防火墙规则。一般情况下,保护防火墙所在主机的规则都添加在INPUT内置链中,以挡住外界访问本机的部分数据包。本机向外发送的数据包只经过OUTPUT链,一般不予限制。如果不希望本机为外界数据包提供路由转发功能,可以在FORWARD链中添加一条拒绝一切数据包通过的规则,或者干脆在内核中设置不转发任何数据包。

原创粉丝点击