Chinaunix

标题: iptables 命令string [打印本页]

作者: lanmine    时间: 2005-11-17 18:00
标题: iptables 命令string
iptables 版本1.3.4
内核2.6.14.2

iptables -A FORWARD -m string --string "www.qd.sd.cn" -j DROP

这个命令返回"you should add --algo"

iptables -A FORWARD -m string --algo --string "www.qd.sd.cn" -j DROP

加了之后,返回往往www.qd.sd.cn bad argument

看了一些iptables 资料,包括写string 的语法,没发现有用--algo的阿。
why?
作者: 枫影谁用了    时间: 2005-11-17 18:29
原帖由 lanmine 于 2005-11-17 18:00 发表
iptables 版本1.3.4
内核2.6.14.2

iptables -A FORWARD -m string --string "www.qd.sd.cn" -j DROP

这个命令返回"you should add --algo"

iptables -A FORWARD -m string --algo  ...


呵呵!你的2.6内核支持string??????????难道是我。。。。。

为何不直接用
iptables -A FORWARD -d www.qd.sd.cn -j DROP
呢???
作者: 小虎牙    时间: 2005-11-17 18:34
iptables -m string --help
作者: lanmine    时间: 2005-11-17 18:39
标题: 支持吧
2.6.14.2支持吧,在make menuconfig里netfilter下有ipt_string这个选项,我没有注意以前版本的内核是否有ipt_string选项,从这个内核选项来判断是支持的吧,而且,
iptables -m string --help 执行结果没问题。
提示以下选项:
--string
--algo
--

我原来用iptables 1.2 发现不行,升级到1.3.4,难道要装那个extension包?


www.qd.sd.cn”只是随便写的,可以换,呵呵,www.qd.sd.cn青岛信息港,正常的网站。

[ 本帖最后由 lanmine 于 2005-11-17 18:41 编辑 ]
作者: 枫影谁用了    时间: 2005-11-17 18:42
原帖由 lanmine 于 2005-11-17 18:39 发表
2.6.14.2支持吧,在make menuconfig里netfilter下有ipt_string这个选项,我没有注意以前版本的内核是否有ipt_string选项,从这个内核选项来判断是支持的吧,而且,
iptables -m string --help 执行结果没问题。
...



呵呵!起码我在2.6.13上是没有的!2.6.14有没有就不知道了!
作者: lanmine    时间: 2005-11-29 10:46
标题: en
初步验证成功,我在这里post了好几次都没回复成功,后来一想是不是这个网页里含有青岛信息港域名字符串,而我的linux里,是这么写的:
iptables -I FORWARD -m string --algo bm --string "青岛信息港域名" -j REJECT

看返回包信息,ip port unreachable,与我访问xxx青岛信息港返回信息一样,索性改成:


iptables -I FORWARD -m string --algo bm --string "www.palyboy.com" -j REJECT

看看成功不.
作者: iamshiyu    时间: 2006-12-11 16:13
升级了内核到2.6.18,而且把iptables也升级到1.3.6了。
按照6楼的方法使用string参数倒是成功了,但是请教新模块的参数的用法哪里有介绍?

[ 本帖最后由 iamshiyu 于 2006-12-11 16:17 编辑 ]
作者: iamshiyu    时间: 2006-12-13 16:15
看了一下iptables.8里面的参数说明,发现algo参数有两个选项bm|kmp,另外string模块自2.6.14以后就都支持了……
关于bm和kmp,是两种查找字符串的算法,简单介绍如下:
KMP的主要思想是:每当一趟匹配过程中出现字符比较不等时,不需回溯主串S的指针,而是利用已经得到的“部分匹配”结果将模式串向右“滑动”尽可能远的一段距离后,继续进行比较。
模式串到底向右滑动多少,在KMP算法中是用一个数组来存储的。针对模式串中的每个索引j,都将有一个对应的值。此值的含义为模式串中位置从0到j-1构成的串中所出现的首尾相同的子串的最大长度加1。

BM算法
Boyer Moore Exact Pattern Matching Algorithms 精确字符串匹配算法
1977年,Robert Boyer和L.Moore发表了一种新的精确字符串匹配算法,这种算法在逻辑上相对于现有的算法有了很大的超越.它对要搜索的字符串实施逆序字符比较,而且有一种找到了不匹配就不需要对整个字符串进行搜索的方法.这种算法还有最初在PDP-10汇编器上实现的奇迹.
计算机硬件相对于那个时代已经有了巨大的发展,但是基础的逻辑仍然处在一种非常迥异的状况中.现代个人电脑已经有能力处理非常大的文本,而且有足够的内存空间来处理那些文本而不要求任何形式的碎瓦片方案(tiling scheme).个人电脑的能力也能很好的实现Boyer Moore精确字符串匹配算法。
这种算法的用途包括采用递归方式搜索文件中的病毒字符串,在数据库中搜索关键字或数据,文本和单词的处理,还有其他要求非常高速地处理大量数据的场合。




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