取消
显示结果 
搜索替代 
您的意思是: 
cancel
4561
查看次数
10
有帮助
7
评论
ywanxin
Cisco Employee
Cisco Employee

最近浏览cisco网站,注意到了cisco ios 12.4.15T系列中推出了新的FPM技术。我先来简单的介绍一下cisco fpm技术。fpm技术在cisco iso 12.4.4T中已经推出,在cisco iso 12.4.4T之前,fpm能够检测IP包的前256byte中的最多32byte的数据,检测出与配置相符合的数据,你可以选择丢弃或者允许通过或者 log,当然还有其他功能,这里不一一细表。而在cisco iso 12.4.15T中cisco强化了fpm的功能,使其能检测整个IP数据包(最大1500byte)中最多256byte的数据。这实际上等于在 cisco router上安装了一个sniffer软件,然后通过配置决定什么数据能够被允许通过,什么数据要丢弃。
cisco的推出fpm技术的初衷是通过fpm技术来强化网络安全,封堵网络病毒及各种攻击。但是最近被用户的要求搞得头昏脑胀得我,突然想到是不是能用fpm来封堵pplive呢,于是我开始了长达1各星期的测试。
首先我要向编写pplive的程序员们表示最高的敬意,你们的水平的确非常高,pplive很难封堵,它通过各种方法,削尖了脑袋,通过各种方法来突破封堵。但凡事都有规律,有特征,既然pplive有特征,而fpm技术能抓住每个Ip包中的每一个bit,那我就有方法搞定你。
下面来说一下pplive的基本工作原理:
pplive是一款p2p的视频播放软件,当你选中一个节目的时候,pplive就向pplive server提出请求,从pplive server下载正在收看这个节目的用户的IP地址列表,下载后pplive软件便与这些用户建立udp或者是tcp连接,然后就是p2p了。
要封堵pplive最简单的方式就是阻止pplive从pplive server下载用户列表,没有用户的IP地址列表,就无法建立p2p连接。
pplive登陆pplive server有两种方式:
一.用udp 8000端口进行登陆
这种登陆方式最简单的封堵方法就是用access-list,方式如下:
access-list 199 deny udp any any eq 8000
int f0/0
ip access-group 199 in
但是,对这种方式我并不满意,因为除了pplive使用udp8000端口以外,还有好多程序使用udp800端口,比如说QQ。
使用sniffer软件反复分析,我找到了udp8000包的特征。
1.ip包长度 97byte
2.udp目的端口 8000
3.在ip包的第28位起包含4个byte的特征字段:E9030201
4.在ip包的第32位起包含4个byte的特征字段:98AB0102
变换成cisco的配置文件就是:
class-map type access-control match-all pplive-udp8000-request
match field UDP dest-port eq 8000
match field IP length eq 97
match start l3-start offset 28 size 4 eq 0xE9030201
match start l3-start offset 32 size 4 eq 0x98AB0102
注意:上面offset的数值要注意,如果是ip包中的第一个byte位,则offset为0,第二个byte位,则offset为1,offset是从0开始计数而不是1,这个问题我有教训,cisco网站上也没有写明,提醒一下大家。
OK,udp8000的请求包的问题解决了
二.使用tcp 80端口进行登陆,也就是用http登陆,并下载用户列表
解决这个问题我就头大了,因为用sniffer反复分析,从用户端向pplive server发送的http包基本没有数据净载就是没有payload,我无法取得数据包的特征。(应该是有的,但是我没有找到)
那好了,请求的包没有特征,那从pplive server回应的包有没有特征了。
还好是有的。
回应包的特征如下:
1.tcp源端口80
2.在ip包的第52位起包含2个byte的特征字段:E903
3.在ip包的第56位起包含4个byte的特征字段:98AB0102
变换成cisco的配置文件就是:
class-map type access-control match-all pplive-http-answer-I
match start l3-start offset 52 size 2 eq 0xE903
match start l3-start offset 56 size 4 eq 0x98AB0102
match field TCP source-port eq 80
配置完成后,我想应该是大功告成了,一测试,nnd,pplive还能照样工作。
于是在这两条policy工作的情况下我再次使用sniffer抓包,结果,发现在pplive server在原有格式http包被丢弃的情况下,修改了http的格式。
特征如下:
1.tcp源端口80
2.在ip包的第56位起包含2个byte的特征字段:E903
3.在ip包的第60位起包含4个byte的特征字段:98AB0102
变换成cisco的配置文件就是:
class-map type access-control match-all pplive-http-answer-II
match start l3-start offset 56 size 2 eq 0xE903
match start l3-start offset 60 size 4 eq 0x98AB0102
match field TCP source-port eq 80
所以我说pplive的程序员还是蛮牛的,PF。
再进行测试,选择10个不同栏目的节目,pplive均无法连接。基本成功,当然还有待一段时间的测试。
下面是完整的配置文件:
load protocol flash:ip.phdf
load protocol flash:tcp.phdf
load protocol flash:udp.phdf
class-map type stack match-all ip-tcp
match field IP protocol eq 0x6 next TCP
class-map type stack match-all ip-udp
match field IP protocol eq 0x11 next UDP
class-map type access-control match-all pplive-udp8000-request
match field UDP dest-port eq 8000
match field IP length eq 97
match start l3-start offset 28 size 4 eq 0xE9030201
match start l3-start offset 32 size 4 eq 0x98AB0102
class-map type access-control match-all pplive-http-answer-I
match start l3-start offset 52 size 2 eq 0xE903
match start l3-start offset 56 size 4 eq 0x98AB0102
match field TCP source-port eq 80
class-map type access-control match-all pplive-http-answer-II
match start l3-start offset 56 size 2 eq 0xE903
match start l3-start offset 60 size 4 eq 0x98AB0102
match field TCP source-port eq 80
!
policy-map type access-control fpm-udp-policy
class pplive-udp8000-request
log
drop
policy-map type access-control fpm-tcp-policy
class pplive-http-answer-I
log
drop
class pplive-http-answer-II
log
drop
policy-map type access-control fpm-output-policy
class ip-tcp
service-policy fpm-tcp-policy
policy-map type access-control fpm-input-policy
class ip-udp
service-policy fpm-udp-policy
interface FastEthernet0/0
description $FW_INSIDE$
ip address 172.24.43.100 255.255.255.0
no ip redirects
no ip unreachables
no ip proxy-arp
ip nat inside
ip virtual-reassembly
ip route-cache flow
ip tcp adjust-mss 1452
duplex auto
speed auto
no mop enabled
service-policy type access-control input fpm-input-policy
service-policy type access-control output fpm-output-policy

注:只有高级安全版、高级IP版和高级企业版的12.4.4T以上版本才能使用fpm,我的经验是最好现在不要用12.4.15T,因为这个版本刚刚推出bug很多,我在配置时死机好几次。我用的是高级企业版的12.4.9T5,硬件平台是cisco 1921。


评论
one-time
Level 13
Level 13
顶贴,感谢分享
sxsure001
Spotlight
Spotlight
谢谢分享 赞赞lollol:lol
suzhouxiaoniu
Spotlight
Spotlight
;P我来回答,老大,这个不是问答,是经验分享
cpmld-199
Community Member
谢谢楼主分享,学习了。
ywanxin
Cisco Employee
Cisco Employee
选错主题了
one-time
Level 13
Level 13
我就这样被设置为最佳答案了,荣幸荣幸;P
chen.jeff
Community Member
这个太好了,有用
入门指南

使用上面的搜索栏输入关键字、短语或问题,搜索问题的答案。

我们希望您在这里的旅程尽可能顺利,因此这里有一些链接可以帮助您快速熟悉思科社区:









快捷链接