使用Cisco IOS FPM彻底禁用QQ
2012-01-02 21:17
519 查看
一、概述
在不受限制或没有特别设置的情况下,QQ使用UDP数据包进行通信,协议端口缺省为4000和8000,当被常规的ACL过滤后,QQ会采用基于TCP的80和443端口进行通信,因此不能仅根据网络报文端口准确识别QQ流量,而传统的ACL在功能上也有很大的限制,无法禁止这种采用公知端口的私有协议通信。或者过滤QQ登录服务器的IP地址,但腾讯公司的服务器很多,并且每增加一台都需要及时获取到它的IP,然后加到ACL里,所以这也不是一个有效的办法。
由此可见,要彻底禁止QQ的话,需要做两件事情:
1. 根据QQ应用协议数据流特征来识别其所属协议类型,即找出其应用协议的特征码。
2. 使用更为灵活的包过滤工具匹配QQ数据包,并执行过滤操作。
Cisco推出的灵活包匹配(FPM)为高级用户提供了部署已知攻击向量(通过过滤数据包阻止网络攻击)的基于网络阻塞的方法。FPM作为更全面和定制的包过滤器,是下一代访问控制列表(ACL)模式匹配工具,此技术提供了在包的任意比特、任意深度进行匹配的能力。它消除了以前有限包检查的具体字段的限制。
二、抓取QQ应用协议特征码
1. UDP数据包打开Wireshark抓包工具,然后运行QQ进行登录,很快Wireshark就抓到协议为UDP和OICQ的数据包。
首先定位到IP协议头,看到头长度为20byte,后面UDP头长度8个byte,其中包括端口号4000和8000,之后就是QQ信息的数据字段了,开始1个byte为0x02,是OICQ包的flag,后面2个byte:0x262f标识QQ的版本号,表示我的QQ版本是2011正式版;接着2个byte的是命令字段,用于QQ登录的命令取值为0xba。所以,我们把offset(偏移量)为28的协议flag:0x02和offset为31的命令值:0xba定义为特征码。
2. TCP数据包
不管是使用HTTP还是SSL协议,QQ消息里都有flag+版本字段:0x02262f,用于登录的消息字段是前面相邻的0x0059,所以把特征码定义为0x005902,offset 40。
三、设置FPM
class-map type access-control udp_pktsmatch start l3-start offset 9 size 1 eq 17
定义所有UDP数据包:IP头中的协议字段值为17
class-map type access-control tcp_pkts
match start l3-start offset 9 size 1 eq 6
定义所有TCP数据包:IP头中的协议字段值为6
class-map type access-control match-all qq_udp
match start l3-start offset 28 size 1 eq 0x02
match start l3-start offset 31 size 2 eq 0x00ba
定义QQ登录UDP数据包的特征码
class-map type access-control match-all qq_tcp
match start l3-start offset 40 size 3 eq 0x005902
定义QQ登录TCP数据包的特征码
policy-map type access-control drop_qq_udp
class qq_udp
log
drop
设置丢弃QQ登录UDP数据包的策略,当匹配特征码时记录日志并丢弃。
policy-map type access-control drop_qq_tcp
class qq_tcp
log
drop
设置丢弃QQ登录TCP数据包的策略,当匹配特征码时记录日志并丢弃。
policy-map type access-control drop_qq
class udp_pkts
service-policy drop_qq_udp
class tcp_pkts
service-policy drop_qq_tcp
设置策略,分别对UDP数据包和TCP数据包应用丢弃策略。
interface GigabitEthernet 0/1
service-policy type access-control input drop_qq
将此策略应用到路由器内部接口上。
本文出自 “bit流” 博客,请务必保留此出处http://bitflow.blog.51cto.com/4231115/756489
相关文章推荐
- Cisco IOS禁用QQ实例
- Arch下使用bbswitch彻底禁用双显卡笔记本的独立显卡
- 腾讯彻底阻止在linux上使用QQ
- 彻底禁用ECSHOP缓存
- Android中使用RadioButton实现QQ底部图片切换
- 超简单的使用drawerlayout实现QQ的侧拉面板效果
- Android ExpandableListView简单使用(一)之仿QQ添加分组功能
- 内部使用的测试证书生成(彻底解决IE浏览器 SCRIPT7002: XMLHttpRequest: network error 0x2ef3)
- 腾讯2009年6月26日全部服务器地址。给企业需要封QQ或开QQ的新丁使用
- 使用js,Jquery 禁用浏览器的back 和 next 按钮:
- 如何使用ISA2006封锁QQ上网
- 【VMWARE】使用VMware中主机和虚拟机不能互相复制文件的彻底解决办法
- 脚本,控制台,网络面板已被禁用,firefox插件firebug使用问题
- Mac OS使用brew安装Nginx、MySQL、PHP-FPM的LAMP开发环境
- Ubuntu系统下使用qq
- 解锁IE主页“使用空白页”按钮被禁用
- MyCnCart和OpenCart之使用个人QQ或QQ企业邮箱的SMTP服务发送邮件
- 彻底明确Android中AIDL及其使用
- 使用python UIAutomation从QQ2017(v8.9)群界面获取所有群成员详细资料,
- android开发教程之使用listview显示qq联系人列表