IPtables如何加载layer7匹配应用层数据包

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

打开网络相关支持

时间: 2024-10-28 21:48:09

IPtables如何加载layer7匹配应用层数据包的相关文章

内核模块加载-netfilter钩子拦截数据包获取数据包源MAC地址

问题描述 netfilter钩子拦截数据包获取数据包源MAC地址 本人大学生,最近在研究arp防火墙,想实现主机拦截从本机出去发送的所有数据包,获取其源mac地址,以防止主机欺骗.在网上大量调研后采用了netfilter钩子来实现截获数据包,但是在加载内核模块时出现了问题.因为之前没有接触过网络和内核,只能在几天的时间里自学了一下.所以问题比较多.现在贴出我的程序和makefile文件请大神帮忙解答!!小弟感谢不尽,这次开发对我真的很重要哈,但毕竟本人能力有限,先谢谢大家了! #include#

动态生成方法通过加载XML,将数据添加进LIST

动态生成方法通过加载XML,将数据添加进LIST  //解决乱码的问题... System.useCodepage = true; //定义doc_xml为XML类: var doc_xml:XML = new XML(); //忽略空格. doc_xml.ignoreWhite = true; doc_xml.onLoad = _root.xmlload; //初次加载文件为"renming.xml"... _root.doc_xml.load("renming.xml&q

extjs在动态加载的时候,数据冲掉了

问题描述 extjs在动态加载的时候,数据冲掉了 leftRender:function(p){ var ii=0; for(var i=0;i<3;i++){ var panel = Ext.create( 'Ext.panel.Panel', { id: 'temp_id_'+i, title: 'temp_title_'+i, border: false, layout: 'fit', listeners: { beforerender: function (p2, animate, eO

visual studio-vs2013没能加载项目中的数据,显示是该项目需要用户输入。

问题描述 vs2013没能加载项目中的数据,显示是该项目需要用户输入. vs2013不能加载内容 解决方案 可能你打开的项目是.net 3.5的,你没有安装.net framework.或者缺少第三方的组件.

Knockout应用开发指南 第六章:加载或保存JSON数据

原文:Knockout应用开发指南 第六章:加载或保存JSON数据 加载或保存JSON数据 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地存储需要序列化数据),交换数据最方便的就是使用JSON格式 – 大多数的Ajax应用程序也是使用这种格式.   加载或保存数据 Knockout不限制你用任何技术加载和保存数据.你可以使用任何技术和服务器来交互.用的最多的是使用jQuery的Ajax帮助,例如:getJSON,post和ajax.你

Bootstrap Table表格一直加载(load)不了数据的快速解决方法_javascript技巧

bootstrap-table是一个基于Bootstrap风格的强大的表格插件神器,官网:http://bootstrap-table.wenzhixin.net.cn/zh-cn/ 这里列出遇到的一个小问题:Bootstrap Table表格一直加载不了数据. $("#button").click(function(){ var name=$("input[name='name']").val(); $('#table').bootstrapTable('load

Android自定义加载控件实现数据加载动画_Android

本文实例为大家分享了Android自定义加载控件,第一次小人跑动的加载效果眼前一亮,相比传统的PrograssBar高大上不止一点,于是走起,自定义了控件LoadingView去实现动态效果,可直接在xml中使用,具体实现如下 package com.*****.*****.widget; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.util.

.Net 以报表的形式加载SAP里面的数据

最近真是累,杂七杂八的事情一大堆,还好明天就放假了,终于可以好好的放松一下了,祝大家国庆中秋愉快! 感觉园子里面搞SAP的貌似不多,很少看到有新的SAP方面的文章出现... 这帮文章写的是在VS里面设计水晶报表,以报表的形式加载SAP里面的数据,涉及到以下几点知识: 1.通过"数据库专家"给水晶报表设置数据源以及各个字段. 2.程序中动态将数据传递给报表. 3..Net连接到SAP并调用RFC获取数据.   ConnSAPHelper.SAPHelper s = new ConnSAP

Ext动态加载多个对象数据

问题描述 小弟刚刚接触Ext,遇到一个问题,希望各位有经验的大虾能帮忙解决一下!小弟非常感谢首先我实现的是一个查看详情的功能!!!!前台,我通过一个查询按钮,进行请求后台获取到一个json对象(一个家庭详细信息(包括:家庭基本信息数据,以及2个外键表,一个是成员,一个是家庭经营项目))返回结果:{ success:true, data:{ id:'familyId', name:'familyName', arList:[{id:'arId1',name:'arName1'},{id:'arId