[转帖]Linux 防火墙 IPtables 全攻略 IPtables之五:加载layer7匹配应用层数据包_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3435 | 回复: 0   主题: [转帖]Linux 防火墙 IPtables 全攻略 IPtables之五:加载layer7匹配应用层数据包        下一篇 
Leon
注册用户
等级:少校
经验:1436
发帖:116
精华:7
注册:2013-1-4
状态:离线
发送短消息息给Leon 加好友    发送短消息息给Leon 发消息
发表于: IP:您无权察看 2013-1-10 9:55:24 | [全部帖] [楼主帖] 楼主

此篇iptables-layer7部分距离上篇博文有一段时间了,主要是这两天双休日宅在寝室,寝室又木有空调,一想到添加layer7功能要添加内核模块、重新编译内核、那漫长的等待。。。就感到烦躁不已啊。。。于是就偷懒了两天。。。

这里再废话一下,大家有立志于学习linux的童鞋可以关注下http://mageedu.blog.51cto.com/  自己看,强大不需要解释

不扯这些了。。。进入正题。

要让iptables实现应用层的过虑,首先要给内核和应用层的iptables定义工具分别打上layer7的补丁,使之能实现实现应用层不同应用数据包的特征匹配。

所以其一要重新给内核打补丁,并在重新编译内核的时候加载layer7相关的模块。

其二,卸载应用层的规则定义工具iptables,并下载iptables的源代码重新编译安装
这就实现了在内核层和用户层支持了layer7模块,而要实现实际应用中不同应用层协议的规则匹配,还需要下载安装规则定义包

总结以上,要想在iptables中添加layer7层过虑模块,需要以下的东东

1.layer7补丁

2.协议匹配包

3.iptables的源码

4.linux的内核源码

接下来,开始具体实现过程

先查看下我当前的内核版本(centos6.2的系统)

北京联动北方科技有限公司

先去官网下载最和我版本号最接近的内核源码

http://www.kernel.org/


我下载的是linux-2.6.32.59的包,各位具体可以按照自己实际情况下载对应的源码包

iptables源代码

ftp://ftp.netfilter.org/pub/iptables/


layer7补丁和匹配规则,注意补丁包

http://sourceforge.net/


这几个包我打包成一个提供给大家下载(内核源码比较大,有需要的还是自行下载吧)

首先先给linux内核添加layer7补丁(layer7补丁有2个,一个是内核补丁,另一个是用户空间的iptables程序的补丁),重新编译内核

step1:打内核补丁,重新编译内核

解包内核源代码

[root@localhost ~]# tar -xf linux-2.6.32.59.tar.bz2 -C /usr/src/


cd过去

[root@localhost ~]# cd !$


创建软连接

[root@localhost src]# ln -sv linux-2.6.32.59/ linux
"linux" -> "linux-2.6.32.59/"


解压补丁包

[root@localhost ~]# tar -xf netfilter-layer7-v2.22.tar.gz -C /usr/src/


给内核源码打上补丁

[root@localhost src]# cd /usr/src/ linux
[root@localhost src]# patch -p1 < /usr/src/netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch


配置内核编译文件(我使用了原来安装系统的.config配置文件为蓝本进行修改)

[root@localhost linux]# cp /boot/config-2.6.32-220.el6.i686 .config
[root@localhost linux]# make menuconfig    #确保已经安装开发环境


打开网络相关支持

北京联动北方科技有限公司

网络选项

北京联动北方科技有限公司

网络数据包过滤框架

北京联动北方科技有限公司

核心配置

北京联动北方科技有限公司

主要要勾选这一项,打开layer7模块支持

北京联动北方科技有限公司

保存后开始编译内核

[root@localhost linux]# make  #打开手机喝茶慢等。。。


安装模块

[root@localhost linux]# make modules_install


安装新内核

[root@localhost linux]# make install


重启选择新安装的内核

北京联动北方科技有限公司

step2:打iptables补丁,重新编译iptables

先卸载原来的iptables

[root@localhost ~]# rpm -e iptables iptables-ipv6 –nodeps #注意iptables可能依赖于其它的包,不要把其它依赖关系的包给卸载了


解压iptables源码包

[root@localhost ~]# tar xf iptables-1.4.9.tar.bz2 -C /usr/src/


给源码包打上layer7模块的补丁,复制netfilter-layer7下关于iptables下的文件到iptables源码文件夹下的extensions下

[root@localhost ~]# cp /usr/src/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/* /usr/src/iptables-1.4.9/extensions/


配置编译配置文件

[root@localhost iptables-1.4.9]# ./configure --prefix=/usr --with-ksource=/usr/src/linux


编译安装

[root@localhost iptables-1.4.9]# make && make install


step3:安装layer7的规则定义包

[root@localhost ~]# tar xf l7-protocols-2009-05-28.tar.gz
[root@localhost l7-protocols-2009-05-28]# make install


它会在/etc下创建l7-protocols文件夹,里面放置了layer7的配置文件和规则定义文件,在用iptables定义layer7规则的时候,就会调用这里的配置文件

数据包规则定义文件在/etc/l7-protocols/protocols下,有实力也可以自己编写规则放在这里,然后用iptables直接调用就可以了

OK,至此就都完成了,其实也就重新编译一下内核,重新编译安装iptables,最后安装layer7规则定义

再安装layer7支持模块后,就可以根据已有的规则来定义

假设主机是网关,可以禁止QQ,迅雷等应用程序访问互联网

[root@localhost ~]# iptables -A FORWARD -m layer7 --l7proto xunlei -j DROP
[root@localhost ~]# iptables -A FORWARD -m layer7 --l7proto qq -j DROP
(好吧,我承认禁止人家qq是很不道德的。。。不过搭配速率控制的模块,可以限制别人迅雷的下载速度,这个还是比较好用的)


本文出自 “lustlost-迷失在欲望之中” 博客,请务必保留此出处http://lustlost.blog.51cto.com/2600869/947909




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论