ros是个非常好用的路由设备,我用它实现了公司的带宽管理,有效保障了视频会议和业务应用的带宽。但是ros没有完善的应用管理功能,一直想用ros实现禁止qq的功能,网上查了查,内容很乱,于是自己动手抓包试验。我用的是qq2013,qq登录时向服务器发出登录包,在ros中用layer7-protocols过滤器可以定义登录包特征。
add name=qqlogin regexp="\\x02..\\x08\\x25.+\\x03\$"
如下图:
有了包特征,只要丢弃这些qq登录包就达到了禁止qq的目的,这需要在foward chain上做两条过滤规则。
add action=drop chain=forward comment="Forbidden QQ login" layer7-protocol=qqlogin protocol=tcp
add action=drop chain=forward layer7-protocol=qqlogin protocol=udp
如下图:
附上qq登录包的数据截图:
02打头,03结尾,34 51是客户端版本号,08 25应该表示登录,7c 4e据说是通讯序列号, 86 06 xx xx是qq号的十六进制形式。这个可用win7自带的计算器进行换算。
在此基础上,控制某些ip可以使用qq,或者让某些qq号可以登录。就很容易实现了。
2014-7-13 章向忠