LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3221|回复: 15

iptables能实现对tcp payload中的特定内容进行过滤吗?

[复制链接]
发表于 2007-7-24 02:29:40 | 显示全部楼层 |阅读模式
特定内容如下:
P#RPEM|@XlPBHph0QpHTTP/1.1 200 OK
Server: CB'S WEB SERVER
Data:WED,18 JUN 2003 00:25:09 GMT
Content-Type:text/html
Accept-Ranges:bytes
Content-Length:343

<html>
<META http-equiv="refresh" content="1;URL=http://192.168.3.1:3333/">
<body>
Redirecting to http://192.168.3.1:3333/....
</body>
</html>

附件为wireshark的抓包,实际上就是想过滤掉第8个TCP包。已经翻看了Oskar Andreasson的Iptables Tutorial 1.2.2,似乎没有提供这种功能。除此之外,我似乎也提取不出别的特征了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2007-7-24 08:17:56 | 显示全部楼层
string模块
或L7-filter模块
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-24 09:35:48 | 显示全部楼层
big thanks again~orphen
昨晚上翻看《linux server hacker》,看到上面也说到用--string了。不过我看Iptables Tutorial 1.2.2似乎并没有提到这种match呀~我用的是fedora7~
回复 支持 反对

使用道具 举报

发表于 2007-7-24 14:18:50 | 显示全部楼层
需要自己编译模块
包括内核模块和iptables的模块
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-25 19:34:51 | 显示全部楼层
faint~~~折腾了好一阵子,写了好几种rule,都没办法能把第8个TCP(FIN)包给filter掉...
orphen可否给出一些提示?
回复 支持 反对

使用道具 举报

发表于 2007-7-26 06:36:57 | 显示全部楼层
你抓一下包就知道了,FIN标志并不是单独出现的,是FIN,ACK一起的。
类似的还有3次握手的第二个包,SYN,ACK,还有PUSH,ACK
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-26 08:31:44 | 显示全部楼层
你看一下这里吧~这就是我整个的想法~
现在就是想提取出这个TCP SEG的特征。最明显的就是payload中有“redireting to http://192.168.3.1:3333",还有一个就是tcp flag中同时包含FIN,PSH,ACK,后者其实并不能算是特征。
我现在郁闷的就是根据上面两个特征写的rules,仍然过滤不掉,还是会转向认证页面。

iptables -A INPUT -p tcp --sport 80 -m --algo kmp string --string "Redireting" -j DROP

iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,ACK -j DROP
回复 支持 反对

使用道具 举报

发表于 2007-7-26 09:50:59 | 显示全部楼层
不好意思,没看到第一楼的

不是很明白你的网络,为什么会在DNS Query后,向202.108.22.5发起连接?
还有如果直接DROP掉192.168.3.1:3333的包不可以么?

另外,最好把整个iptables的规则全列出来我看看

PS.我很少使用string模块的,因为性能实在不怎么样。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-26 11:26:21 | 显示全部楼层
1、我本来就是要连接202.108.22.5(www.baidu.com)的,自然要连接它呀
2、可以DROP掉192.168.3.1:3333的包,但是在此之前它已经把我与baidu建立好的连接给FIN了,这样子就算我把它所有的包给DROP掉,也没什么意思了
3,整个iptables我晚一会放上来
回复 支持 反对

使用道具 举报

发表于 2007-7-26 16:25:09 | 显示全部楼层
哦~
之前都没有仔细的分析那个block.pcap,不好意思。
192.168.3.1应该是你的网关吧?
他伪造了一个数据包(也就是第8个)返回给你,来欺骗你的主机使之断开连接。
而且我认为第三个包也是192.168.3.1伪造的。原因是TTL为64。
我认为你的网关做了重定向的透明代理,REDIRECT。不过因为DNS的数据包的TTL为62,所以我认为他仅仅作了WEB代理,类似于SQUID。你最好抓一下其他网络连接的数据包看一下,看看他的REDIRECT是不是进针对80端口的TCP协议。毕竟他还是进行了NAT转换的。

你是想要绕过这个web代理认证吧?我认为有点麻烦,你最好能提供你所在网络的更多信息。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表