手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

Iptables 指南 1.1.19(中文版)(四)

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
RELATED且发往 Internet接口的包进入。在allowed链中有一个和此类似的规则(译者注:实在是多余,建议大家把他拿掉吧)。顺序上,当然是INPUT链里的规则先处理包了。然而,在allowed链里保留--state ESTABLISHED,RELATED规则还是有一些原因的,比如,方便某些人想剪切此功能,粘贴到其他地方。

INPUT链里,我们会把从$INET_IFACE进入的任何TCP包发往tcp_packets链,类似地,把UDP包发往udp_packets链,把 ICMP包发往icmp_packets链。一般说来,防火墙碰到的最多的包是TCP包,其次是 UDP包,最后是ICMP包。但要注意,这只是一般情况,对您可能不适用。相同的规则因为顺序不同,或说逻辑不同,效率会有很大的差别。假如规则集写得不好,即使只有100条规则,而且有100mbit的网卡,就算是Pentium III的机子也会吃不消的。所以您自己写规则集时一定要注意这一点。

这里有一条被注释掉了规则,万一在我们的防火墙外部有一些Microsoft网络,我们能够启用他来解除日志过多的烦恼。Microsoft的客户机有个坏习惯,就是向地址224.0.0.0/8发送大量的多播包。因此我们要有这条规则来阻塞那些包,以免我们的日志被他们填满。还记得吗?udp_packets链里也有两条类似的规则。忘了的话,就到处理UDP的链看看吧。

在其他的包被INPUT链的策略处理之前,我们会把他们记录下来,以便查找可能的问题或bug:他可能就是我们不想允许他进入的那种包,也可能是对我们做了什么坏事的用户,还可能是防火墙的问题,如我们阻塞了应该被放行的包。我们要了解任何的情况,这样问题才能得以解决。我们每分钟最多记录3个包,因为我们可不想让日志里记载的都是废话。为了容易辨别包的来源,我们还对任何的记录配置了前缀。

任何没被上面的规则处理的包都会被策略DROP掉。策略的配置在本章的小节缺省策略的配置里,距离我们已很远喽。


7.2.8. FORWARD链

在本例中,FORWARD链包含的规则很少。首先,我们会把任何的包发往bad_tcp_packets 链。此链我们前面提到过多次,他能够被多条链调用,其实他也就是为这个目的而设计的。

之后就是FORWARD链的主要规则了。第一个允许任何来自$LAN_IFACE的数据通过,没有任何限制,也就是说,我们的LAN可自由地访问Internet。第二个允许ESTABLISHEDRELATED状态的包能通过防火墙。换句话说,就是任何对我们的内网发出的连接的回应都能够返回局域网。为了使我们的内网能访问Internet,这些规则是必须的,因为我们在前面已把FORWARD链的策略设为DROP了。这样配置规则也是很聪明的,因为他在确保局域网能够访问Internet的同时阻止了Internet对局域网的访问。

最后我们也有一个处理日志的规则,用来记录没被上面任何规则匹配的包。这样的包很可能是形态不正常的或是其他问题,比如可能是黑客攻击。这个规则和INPUT链中的那个类似,只是前缀不同,这里用的是:"IPT FORWARD packet died: "。前缀主要用来分离日志的记录,便于我们查找包的来源和包头的一些信息。


7.2.9. OUTPUT链

除了我几乎没有人把防火墙还当作工作站来使用,但正因为这样,我允许几乎任何从防火墙的IP(包括 LOCALHOST_IP$LAN_IP$STATIC_IP )出发的数据,而阻塞其他情况。因为其他任何情况都可能被人以某种方式欺骗。最后的规则还是用来记录那些要被策略DROP掉的包。这样,我们就能够了解他们,继而能够对产生的问题(可能是具备威胁性的错误,或是用来进行欺骗的包)采取行动。


7.2.10. PREROUTING链

顾名思义,PREROUTING链(nat表的)是在路由之前做网络地址转换工作的。然后,包再经过路由,就会被送到filter表的INPUTFORWARD链。我们在这里讨论这个链的唯一原因是,我们觉得有责任再次指出您不应该在此链中做任何过滤。PREROUTING链只会匹配流的第一个包,也就是说,这个流的任何其他的包都不会被此链检查。事实上,在这个脚本中,我们根本没有用到PREROUTING 链。假如您想对一些包做DNAT操作,例如,您把web server放在了局域网内,这里就是您放置规则的地方。有关PREROUTING链的周详信息在章节表和链中。

Caution

千万注意,PREROUTING链只能做网络地址转换,不能被用来做任何过滤,因为每个流只有第一个包才会经过此链。


7.2.11. POSTROUTING链

我们最后的任务应该是构造网络地址转换,对吧?至少对我来说是的。我们在nat表的 POSTROUTING里只加入了一条规则,他会对任何从Internet接口(对我来说,这是eth0)发出的包进行NAT操作。在任何的例子脚本里,都有一些变量,他们要给以正确的配置。选项-t指定要在那个表里插入规则,这里是nat表。命令-A说明我们要把规则添加到 POSTROUTING链末尾。-o $INET_IFACE指定要匹配任何从接口INET_IFACE出去的包,这里我们使用的是eth0。最后,我们把target配置为SNAT。这样,任何匹配此规则的包都会由SNAT target处理,之后,他们的源地址就是Internet接口的地址了。不要忘了SNAT可是一定要有IP地址的,用

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!