- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
怎样写L7-filter 的模板文件
L7-filter为我们实现了可以从应用层实现过滤的功能,它的实现原理仍然是基于特征的关键字匹配。但是它不是简单的匹配某个单字和词,它使用了更高级“正则”来进行匹配。正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。L7-filter在默认情况下,将同一个连接中的10个数据包或者2KB的数据包内容放在缓存中。并将缓存中的内容作为一段普通的文本,用模板文件中的正则去搜索,如果发现有正则匹配的内容,就会在netfilter中将这几个数据包DROP掉或者给数据包打上标记。以上就是L7-filter的实现原理模板文件格式文件的名字必须和匹配的协议要相同。 (如果你要匹配的协议是“ftp”, 那你的文件名必须是 “ftp.pat”) 文件的内容格式如下:第一行是协议的名字,要和文件名相同。第二行是这个协议正则表达式定义。正则表达式l7-filter 使用 Version 8 正则表达式。 使用这个版本的正则有很多限制,只能使用一些基本的正则表达式。例如, 你不能使用范围限制 (foo{3}), 字符分类 ([[:punct:]]) 或者向后引用。另外, 我们加入了perl-style hex
来匹配 \xHH 这样的16进制值。(例如匹配一个tab, 则使用 \x09).如果要匹配以下的字符,应当这样:\x24 == $ (only matters if its the last character)
\x28 == (
\x29 == )
\x2a == *
\x2b == +
\x2e == .
\x3f == ?
\x5b == [
\x5c == \
\x5e == ^ (only matters if its the first character)
\x7c == |
l7-filter 对大小写不敏感。l7-filter 对网络数据包当然一段普通的字符串来进行处理,所以对网络数据包中的\x00这样的为零的值是视而不见的,因为00代表没有,所以你不能匹配数据包中为null的字符。例如:一个包中的数据部分为4字节,但是这4字节的内容的某一个或者多个字节的值可能为零。这样的话,在l7-filter看来,这个数据包的长度有可能是0,也可能是1,也可能是2或者3或者4。例子:[\x09-\x0d -~] == 可打印字符, 包括空白字符 whitespace[\x09-\x0d ] == 任何空白字符[!-~] == non-whitespace printable characters
怎样写一个好的模板一个模板既不要写得太详细,也不要写得太宽泛。太精细了,会导致效率降低,太宽泛了会导致误杀其它网络协议。模板 bear 没有写得比较精确. 这样的话,凡是连接中包含有bear 的都会被匹配到。如,一个HTTP 请求 也会被匹配到。具体写模板的方法一、首先便是抓包了。用Ethereal抓包,观察数据包的内容的特征和规律。以下以的数据包为例:我们看它数据包的数据内容部分(不管IP层,只看应用层),对比每一个数据包的内容,就可以发现一个规律,每一个包的第一个字节是02(16进制值),最后一个字节是03(16进制值)。有了这个规律,我们就可以用正则表达式来表达它了。二、正则表达式的相关知识。只讲最基本,如果不明白的,可以查一些相关的资料。^代表首字符,$代表末字符,.代表任意一个字符,.?代表零个或者一个字符,.+代表一个或者任意多个字符,\是代表转义字符(\x02这个表示匹配16进制的02值)。三、结合以上知识,因为QQ包的第一个字节是16进制02,所以正则是^\x02,最后一个字节是16进制03,正则是\x03$,在L7-filter的缓存中的数据包中可能有任意个字节,再将两个正则结合起来就应当是^\x02.+ \x03$四、最后写一个pat文件,文件名就叫.pat,文件的内容如下:^\x02.+ \x03$
再将.pat放入/etc/l7-protocols这个目录中。执行iptables命令:iptables -t mangle -A POSTROUTING -m layer7 --l7proto ??-j DROP
即可成功阻止的通讯。另一个迅雷的模板例子:启动迅雷,双击种子文件开始下载后,通过种子文件推算出文件的直接的下载地址。然后直接到下载地址进行下载。再次连接资源服务器,相当于bt服务器:,IP是 1向服务器发送tcp查询请求。28 00 00 0
原创力文档


文档评论(0)