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

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

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
。这几乎是唯一的改变,也是必需的改变。

可还是有一些问题要考虑。现在,我们不能再在INPUT链依据某些条件,比如--in-interface $LAN_IFACE --dst $INET_IP来进行过滤(译者注:因为这时已无固定的INET_IP)。这强迫我们只能基于Internet接口进行包的过滤,在这种情况下,内网必须访问那个可变的 Internet的IP。这会出现一些问题,有个例子能够说明这一点,就是我们在防火墙上运行HTTP服务。假如我们访问这个网站(其中,主页包含了一个指向HTTP服务器的静态连接,这可能是某个动态的DNS解决方案),问题就暴露了。经过NAT操作的机子会向DNS查询HTTP服务器的IP,然后再试着访问这个IP。万一我们是基于接口和IP做的过滤,这台机子就不能访问到HTTP了,因为INPUT链会 DROP掉这个包(译者注:还是因为Internet接口的IP不固定)。在某种情况下,这也会发生在您有静态IP的时候,但在那种情况下,我们能够增加一条规则,以检查LAN接口的包是否是发往INET_IP的,若是,则ACCEPT

假如您看过以前的内容,得到或写一个能够获取动态IP的脚本可能会是个解决问题的好办法。比如,我们能够写一个脚本,他紧随着Internet连接的启动而运行,而且他能从命令ifconfig的输出中提取IP,再把这个IP赋给某个变量。较好的办法是使用一些程式自带的脚本,如 pppd带的脚本ip-up。也有一些网站,如linuxguruz.org,提供了很多有用的脚本,您能够在附录其他资源和链接找到他的链接。

Note

这个脚本比rc.firewall.txt的安全性要差一点。我明确地建议您尽可能使用后者,因为前者的开放性大了点,所以外部攻击的威胁就大了。

更有一种方法可获得IP,就是在脚本里加上类似这样的语句:

INET_IP=`ifconfig $INET_IFACE | grep inet | cut -d : -f 2 | 

cut -d ' ' -f 1`

    

上面这句话的作用是从ifconfig的输出里提取接口$INET_IFACE的IP,再赋给$INET_IP。更好的办法是使用脚本 retreiveip.txt。但要注意,这个方法可能会引起一些不正常的情况,比如使防火墙和内网之间已有的连接停止。下面就说明一下最常见的问题。

  1. 假如这个脚本的代码是在另一个脚本内运行的,而那个脚本又是由PPP daemon启动的,就会因为NEW not SYN rules(具体信息查看未配置SYN的NEW状态包)的原因而挂起所以当前活动的连接。假如您删掉那个规则,可能会没有事,但还是不保险。

  2. 假如您不想改变已有的规则,而又要添加或删除规则,还要不损害已有的规则,这就没法做了。比如,您又想阻塞任何局域网里的机子访问防火墙,又想让他们能控制防火墙上的PPP daemon,假如不删除那个用来阻塞的规则,怎么能完成这样的事?

  3. 事情可能也不必这么复杂,就像上面说的,这会导致一些安全问题。但假如这个脚本能保持简单,维持规则的顺序和发现问题都是很容易的。


8.5. rc.UTIN.firewall.txt

脚本rc.UTIN.firewall.txt适用于这样的情况:我们不信任任何和防火墙连接的网络,包括内网。我们只允许内网使用POP3HTTPFTP。至于从Internet来的连接,权限和其他脚本相同。

此脚本需要以下功能模块。

  • CONFIG_NETFILTER

  • CONFIG_IP_NF_CONNTRACK

  • CONFIG_IP_NF_IPTABLES

  • CONFIG_IP_NF_MATCH_LIMIT

  • CONFIG_IP_NF_MATCH_STATE

  • CONFIG_IP_NF_FILTER

  • CONFIG_IP_NF_NAT

  • CONFIG_IP_NF_TARGET_LOG

这个脚本遵循的原则是不要相信任何人,包括我们自己的员工。这是个令人悲痛的现实,大部分破坏和攻击确实是来自我们内部的。这个脚本只是在加强防火墙方面给了您一个例子。他和 rc.firewall.txt并没有太多的不同,只是少了一些允许通行的规则。


8.6. rc.test-iptables.txt

这个脚本用来测试iptables里任何的链。当然,这要根据您的配置情况做些操作,如打开ip_forwarding或是配置masquerading,等等。只要您的安装了基本的 iptables,就能够使用他。其实这个脚本只使用了LOG,以便能记录任何的ping请求和应答。通过这种方式,我们就能够了解哪些链被穿越了连同被穿越的顺序。使用方法如下,先运行这个脚本,再发布一个ping命令,如:

ping -c 1 host.on.the.internet



    

然后用命令tail -n 0 -f /var/log/messages就可看到用了哪些链连同是什么顺序,除非记录因某些原因被替换了。

Note

此脚本仅仅是为测试而写的。也就是说,不要使用类似这样的规则,他记录某一类包的任何信息,这会很快地占满您的日志分区,而且他会成为一个有效的DoS攻击。他还可能导致在最初的DoS攻击之后,无法记录真正的攻击信息。

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