博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables实现7层过滤
阅读量:6655 次
发布时间:2019-06-25

本文共 2925 字,大约阅读时间需要 9 分钟。

简介:在Linux的防火墙体系Netfilter下有一个独立的模块L7 filter 。从字面上看Netfilter是对网络数据的过滤,L7 filter是基于数据流应用层内容的过滤。不过实际上 L7 filter的本职工作不是对数据流进行过滤而是对数据流进行分类。它使用模式匹配算法把进入设备的数据包应用层内容与事先定义好的协议规则进行比对,如果匹配成功就说明这个数据包属于某种协议。 

L7 filter是基于数据流工作的,建立在Netfilter connstrack功能之上。因为一个数据流或者说一个连接的所有数据都是属于同一个应用的,所以L7 filter没有必要对所有的数据包进行模式匹配,而只匹配一个流的前面几个数据包 (比如10个数据包)。当一个流的前面几个数据包包含了某种应用层协议的特征码时 (比如QQ,MSN,迅雷等),则这个数据流被L7 filter识别;当前面几个数据包的内容没有包含某种应用层协议的特征码时,则L7 filter放弃继续做模式匹配,这个数据流也就没有办法被识别。
总体步骤:
1、7层过滤首先需要内核支持,因此重新编译内核,给新内核加入Layer 7补丁;
2、卸载系统自带的iptables,先保存旧的的配置信息,新的可以引用;
3、安装Layer 7;
4、安装Layer 7协议;
所需要的源码包和补丁包:
linux-2.6.28.10.tar.gz    

下载地址:  http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.10.tar.gz

netfilter-layer7-v2.22.tar.gz
iptables-1.4.6.tar.bz2
l7-protocols-2009-05-28.tar.gz

以上的三个软件包,下载地址:

http://down.51cto.com/data/362187

步骤如下:

 
  1. 为内核打上l7filter的补丁: 
  2. #tar zxvf  linux-2.6.28.10.tar.gz  -C  /usr/src            
  3. 解压内核到/usr/src 
  4.  
  5. #tar zxvf  netfilter-layer7-v2.22.tar.gz  -C  /usr/src 
  6. 解压l7filter到/usr/srcc 
  7.  
  8. #cd /usr/src 
  9. #ln -sv  linux-2.6.28.10  linux 
  10. #cd /usr/src/linux/ 
  11. #patch -p1  <  ../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch 
  12. 为内核打上l7filter的补丁 
  13.  
  14. #cp /boot/config-2.6.18-164.el5  /usr/src/linux/.config 
  15. 为编译内核提供一个config模版 
  16.  
  17. #make  menuconfig 

进入图形化界面,配置内核参数,根据自身的需要进行适当的增删
但要让内核支持l7filter则以下选项必须选上:

 
  1. Networking support → Networking Options →Network packet filtering framework →Core Netfilter Configuration 
  2. <M>  Netfilter connection tracking support 
  3. <M>  “layer7” match support 
  4. <M>  “string” match support 
  5. <M>  “time”  match support 
  6. <M>  “iprange”  match support 
  7. <M>  “connlimit”  match support 
  8. <M>  “state”  match support 
  9. <M>  “conntrack”  connection  match support 
  10. <M>  “mac”  address  match support 
  11. <M>   "multiport" Multiple port match support 
  12.  
  13.  
  14. Networking support → Networking Options →Network packet filtering framework → IP: Netfilter Configuration 
  15. <M> IPv4 connection tracking support (required for NAT) 
  16. <M>   Full NAT 
  17.     <M>     MASQUERADE target support 
  18.     <M>     NETMAP target support 
  19.     <M>     REDIRECT target support  

#make
#make modules_install
#make install
内核编译完成后,重新启动操作系统,使用新的内核启动。
华丽的分割线

---------------------------------------------------------------------------------------------

使用新内核启动系统后:

到此,内核对l7filter的支持已经具备,接下来只需要重新编译安装iptbales,由于编译安装iptables后,并不会提供SysV风格的启动脚本,因此我们在卸载之前安装的那个iptables时,对其进行一下备份,将其保存在家目录中:
#cp /etc/init.d/iptables ~/iptables
#cp /etc/sysconfig/iptables-config ~/
#rpm -e iptables-ipv6  iptables  iptstate  --nodeps
卸载之前安装的iptables,因为其具有依赖性,所以这里使用"--nodeps"
#tar jxvf iptables-1.4.6.tar.bz2 –C  /usr/src
#cd /usr/src/iptables-1.4.6
#cp ../netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.*   ./extensions/
#./configure  --prefix=/usr  --with-ksource=/usr/src/linux
#make
#make install
安装l7filter协议
#tar zxvf l7-protocols-2009-05-28.tar.gz
#cd l7-protocols-2009-05-28
#make install
#mv ~/iptables  /etc/rc.d/init.d/

启动支持l7filter的iptables

#service iptables start

本文转自 向阳草米奇 51CTO博客,原文链接:http://blog.51cto.com/grass51/826283,如需转载请自行联系原作者
你可能感兴趣的文章
PATH、cp命令、mv、文档查看命令
查看>>
android app 用什么语言开发的
查看>>
struts2.0中struts.xml配置文件详解
查看>>
Java内部类和匿名类
查看>>
nv sdk: transparency with multisampling笔记
查看>>
傲天AC EAG误配置导致Portal推送失败案例
查看>>
自制简易linux系统
查看>>
我的友情链接
查看>>
诺基亚5130XM手机上网设置
查看>>
Mybatis-Plus 之BaseMapper 方法详解
查看>>
学H3C的认证要注意的几个事情
查看>>
【sql】连续出现至少3次的数 Consecutive Numbers
查看>>
交替取值判断第一个人能否赢过第二个人 Predict the Winner
查看>>
我的友情链接
查看>>
nginx安装lua/replace-filter-nginx-module
查看>>
图像模式识别 (二)
查看>>
iptables发布nfs服务器的配置及NFS简易配置
查看>>
NDK r7 的新特性
查看>>
安装SQLSERVER2008R2保持和SQL2000独立运行的安装过程
查看>>
Heartbeat+DRBD+mysql高可用方案
查看>>