此篇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 #确保已经安装开发环境
打开网络相关支持