Chinaunix

标题: linux iptables layer7 模块 中文howto [打印本页]

作者: KindGeorge    时间: 2005-04-19 08:32
标题: linux iptables layer7 模块 中文howto

因为l7对于处理器和内存很敏感,我们建议当您存在下列情况时才考虑使用l7
*你需要匹配一些使用未预先定义的协议端口(主要见于p2p文件共享应用)
*你相信一些有意义的通讯使用了非标准的端口(例如http协议使用1111端口)
layer7 filter howto
注意:linux 2.6.9/10和layer7会发生一个严重的内存泄露问题导致系统在几分钟之内down掉,看起来这好像是内核堆栈的问题,在2.6.11登台之前,还是用2.6.0-2.6.8.1的内核和L7 0.9.1一起工作吧
目录
1、介绍
2、你需要得到什么
3、内核补丁
4iptables补丁
5、协议定义
6、实务
1、介绍
L7是一个linux内核包分类器,和其他的分类器不同,l7不仅仅看上去是对协议的端口定义,他的表达式和应用层协议匹配,以此检验包使用的何种协议
因为l7对于处理器和内存很敏感,我们建议当您存在下列情况时才考虑使用l7
*你需要匹配一些使用未预先定义的协议端口(主要见于p2p文件共享应用)
*你相信一些有意义的通讯使用了非标准的端口(例如http协议使用1111端口)
符合以上两个问题的其中之一吗,好吧,l7项目中有三个组成部分,一个内核补丁,一个iptables补丁,一个协议定义文件,本文一下部分就来解释你如何处理他们。
2、你需要获取的:
*从kernel.org得到2.4或者2.6的内核源代码
*从netfilter.org得到iptables的源代码
*我们的Layer7 补丁包
*我们的协议定义包
3、内核补丁
针对专家的缩写版:应用我们的内核补丁,在netfilter中打开新的匹配选项。
从Layer 7 paches包中选择适当的内核补丁,并给linux内核打补丁(请阅读包里面的readme文件选择合适的文件)。或者根据你的需要设置其他内核版本。
打开EXPERIMENTAL(Device Drivers->Networking support->Networking Options->Network packet filtering),接下来打开connection tracking(Network packet filtering->IP:Netfilter Configuration->Connection tracking)。在同一屏,同样打开Connection tracking flow accounting 和IP tables support。
打开Layer 7 match support,你需要打开其他一些Netfilter选项,比较显而易见的如Ftp support。如果你还不太了解具体的选项含义,那么就打开所有的Layer 7 mach support
向平常一样编译并安装新内核(我们的代码会导致一个警告,不管它^_^),重启,并加载合适的内核。
如何给源代码树加载补丁。
下面给出一个一般适用于任意内核源码的方法。首先把下载得到的补丁源码解压
gunzip layer7-kernel-patch-v.X.Y.Z.patch.gz
bunzip2 layer7-kernel-patch-v.X.Y.Z.patch.bz2
接下来打补丁,在源码的根目录中:
patch -p1  /proc/net/layer7_numpackets ,你也可以通过使用更大的"buffer size for application layer data"参数重新编译内核来修改最大数据大小。
*也许这样很罕见,但是连接匹配不止一个模版也是可能的,模版按照你在iptables 中指定的顺序进行校验,如果匹配,则不再继续对连接进行校验,所以,更改规则的顺序可以改变校验的结果。
*有些时候,信息写入系统日志比显示在你工作的终端上更为重要,例如一些包含正则表达式未匹配或者tc报错的消息。一个有用的命令是"tail -f /var/log/messages"
转from
http://realeric.blogchina.com/blog/article_13439.1010771.html


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4543/showart_22067.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2