IPtables之五:加载layer7匹配应用层数据包

简介:

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

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

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

 

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

1.layer7补丁

2.协议匹配包

3.iptables的源码

4.linux的内核源码

 

 

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

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

wps_clip_image-6706

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

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    #确保已经安装开发环境

打开网络相关支持

wps_clip_image-24246

网络选项

wps_clip_image-23633

网络数据包过滤框架

wps_clip_image-9986

核心配置

wps_clip_image-19862

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

wps_clip_image-4689

保存后开始编译内核

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

安装模块

[root@localhost linux]# make modules_install

安装新内核

[root@localhost linux]# make install

重启选择新安装的内核

wps_clip_image-30059

 

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 51CTO博客,原文链接:http://blog.51cto.com/lustlost/947909,如需转载请自行联系原作者

相关文章
|
编解码 数据安全/隐私保护
SATA系列专题之二: 2.1 Link layer链路层8b/10b编码解析
8b/10b编码是目前高速串行通信中经常用到的一种编码方式,直观的理解就是把8bit数据编码成10bit来传输。
|
网络协议 Linux 网络安全
【TCP/IP】【调试】丢包、流不通、错包等问题查证手段系列之三——Netfilter hook函数
【TCP/IP】【调试】丢包、流不通、错包等问题查证手段系列之三——Netfilter hook函数
124 0
【TCP/IP】【调试】丢包、流不通、错包等问题查证手段系列之三——Netfilter hook函数
|
网络协议 网络架构 虚拟化
带你读《从实践中学习TCP/IP协议》之二:网络访问层
传统TCP/IP协议的学习过程漫长而又枯燥乏味。针对这种现状,本书主要结合理论,并通过实际动手实践,带领读者掌握TCP/IP的相关知识。本书结合了Wireshark和netwox工具对TCP/IP协议进行讲解。其中,netwox工具提供了大量模块,允许用户手动创建各种协议的数据包,而Wireshark工具则可以捕获数据包,直观地展现用户创建的数据包。