Chinaunix

标题: 疑问:发现string过滤的奇怪现象 [打印本页]

作者: genious588    时间: 2008-01-16 15:44
标题: 疑问:发现string过滤的奇怪现象
大家好:
          环境:以前做的策略是禁止192.168.0.12-192.168.0.188 上163的网站,经过测试是好用的!
                   iptables -A URL -p tcp -m iprange --src-range 192.168.0.12-192.168.0.188 -m time --timestart 07:12 --timestop 17:56 --days Sun,Mon,Tue,Wed,Thu,Fri,Sat -m string --string "www.163.com" -j DROP

                   现在想先禁止所有的网站,然后打开www.163.com
                   iptables -A URL -p tcp -m iprange --src-range 192.168.0.12-192.168.0.188  -j DROP
                   iptables -I  URL -p tcp -m iprange --src-range 192.168.0.12-192.168.0.188 -m time --timestart 07:12 --timestop 17:56 --days Sun,Mon,Tue,Wed,Thu,Fri,Sat -m string --string "www.163.com" -j ACCEPT

结果发现:                                                注:我的URL链是在FORWARD上的,我的ip:192.168.0.178
Chain URL (1 references)
pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 192.168.0.12-192.168.0.179 TIME from 7:12 to 17:56 on all days STRING match "www.163.com"
    2    96 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 192.168.0.12-192.168.0.188 TIME from 7:12 to 17:56 on all days

我上了www.163.com,但没上去,
我的本意是想上去163,而其他的网站上不去,但发现匹配的是第二的规则,第一个规则没起任何作用!
不知道为什么,请高手指点!
作者: genious588    时间: 2008-01-17 11:03
大家没有什么见解吗?
作者: platinum    时间: 2008-01-17 11:34
现在想先禁止所有的网站,然后打开www.163.com

逻辑顺序错误
另外,你这样的做法即使顺序对了也不行,因为,还是逻辑问题 :wink:
作者: genious588    时间: 2008-01-17 12:07
原帖由 platinum 于 2008-1-17 11:34 发表

逻辑顺序错误
另外,你这样的做法即使顺序对了也不行,因为,还是逻辑问题 :wink:



什么逻辑顺序?请斑竹再详细的说明一下!
作者: platinum    时间: 2008-01-17 12:31
先禁止后怎么再允许?
先把人打死,怎么再让某活着的过去?
这些基础问题任何相关手册里都有说过
作者: genious588    时间: 2008-01-17 13:53
谢谢斑竹,在下还有一事不明?
这个道理我也知道,但是想一想我们做iptables的时候不也可以先把连先drop掉,然后精确匹配做打开操作吗?!!不知道这个想法和斑竹的说法有冲突吗?
作者: ssffzz1    时间: 2008-01-17 16:08
恰恰相反。
更详细具体的规则通常要放前面。记住规则是顺序匹配的,并且一经匹配后续规则不再匹配。
第一条规则把所有的都DROP了,后面的应用匹配不到。
作者: platinum    时间: 2008-01-17 22:05
原帖由 genious588 于 2008-1-17 13:53 发表
这个道理我也知道,但是想一想我们做iptables的时候不也可以先把连先drop掉,然后精确匹配做打开操作吗?!!

  1. if (你说的是 iptables -P INPUT DROP 这句话吗?)
  2. {
  3.     if (你不了解 -P、-A、-I 的具体功能吧?)
  4.         建议你看看基础点的文档
  5. }
  6. else
  7.     谁是这么做的你告诉我
复制代码

作者: genious588    时间: 2008-01-18 13:41
原帖由 ssffzz1 于 2008-1-17 16:08 发表
恰恰相反。
更详细具体的规则通常要放前面。记住规则是顺序匹配的,并且一经匹配后续规则不再匹配。
第一条规则把所有的都DROP了,后面的应用匹配不到。



谢谢!请看看我前面写的
   iptables -I  URL -p tcp -m iprange --src-range 192.168.0.12-192.168.0.188 -m time --timestart 07:12 --timestop 17:56 --days Sun,Mon,Tue,Wed,Thu,Fri,Sat -m string --string "www.163.com" -j ACCE
我就是-I啊!它应该不匹配下面的了!但是-A的数据还有增加!
作者: genious588    时间: 2008-01-18 13:45
原帖由 platinum 于 2008-1-17 22:05 发表


if (你说的是 iptables -P INPUT DROP 这句话吗?)
{
    if (你不了解 -P、-A、-I 的具体功能吧?)
        建议你看看基础点的文档
}
else
    谁是这么做的你告诉我



首先,谢谢斑竹,我知道肯定是我弄错了,但是不知道什么原因,你说的iptables -P INPUT DROP,对我就是把默认策略全drop
请看:
$IPTABLES -P INPUT  DROP                                            
$IPTABLES -P FORWARD  DROP                                          
$IPTABLES -P OUTPUT  ACCEPT  

我自己定义了很多连,想在INPUT里操作就操作,想在FORWARD操作就操作,并且都好用!
作者: platinum    时间: 2008-01-18 14:32
if (你说的是 iptables -P INPUT DROP 这句话吗?)
{
    if (你不了解 -P、-A、-I 的具体功能吧?)
        建议你看看基础点的文档

}
else
    谁是这么做的你告诉我

作者: 刘世伟    时间: 2008-01-19 09:24
iptables不会对应用层的包进行重组, 所以iptables看到的包,都是零零碎碎的。
即使访问 163.com 也不能保证所有的包里面都含有163.com的字符串。 会有些包不被匹配。


而封闭163,只要封掉几个包就行了。 即使大部分包漏过去,也不影响封闭。

要想封闭url,最好用http_proxy配合iptables作透明代理,然后在squid里封闭url




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2