默认 netfilter/iptables 体系的不足,以基于网络层的数据包过滤机制为主,同时提供少量的传输层、数据链路层的过滤功能,难以判断数据包对应于何种应用程序(如QQ、迅雷),通过为Linux内核、iptables添加相应的补丁文件,重新编译安装后提供基于应用层(第7层)的扩展功能

通过独立的 l7-protocols 协议包提供对各种应用层数据的特征识别定义,便于更新整体实现过程。
添加内核补丁,重新编译内核,并以新内核引导系统
添加iptables补丁,重新编译安装iptables
安装l7-protocols协议定义包
使用iptables命令设置应用层过滤规则
使用的软件包列表
Linux内核源码包:linux-2.6.28.10.tar.bz2
iptables源码包:iptables-1.4.6.tar.bz2
layer7补丁源码包:netfilter-layer7-v2.21.tar.gz
协议定义包:l7-protocols-2009-05-28.tar.gz
--------重新编译新内核-------------
释放内核源码包,并合并补丁
[root@localhost ~]# tar zxvf netfilter-layer7-v2.21.tar.gz -C /usr/src/
[root@localhost ~]# tar jxvf linux-2.6.28.10.tar.bz2 -C /usr/src/
[root@localhost ~]# cd /usr/src/linux-2.6.28.10
[root@localhost linux-2.6.28.10]# patch -p1 <
../netfilter-layer7-v2.21/kernel-2.6.25-2.6.28-layer7-2.21.patch
---------配置内核编译参数------------
复制当前系统使用的内核配置文件,以此作为基础
当前系统的内核配置文件:/boot/config-2.6.18-8.el5
源码目录的默认配置文件名:.config
进入源码目录,执行“make menuconfig”命令
在配置界面中的操作
方向键用于定位功能项、菜单项
菜单项 <Select>、<Exit>、<Help>
空格键用于选择配置类型
对不同功能的配置选择
[   ]:空选时表示不需要在新内核中使用该功能
[ M ]:表示将此项功能编译为模块,以便在需要时加载  Module
[ * ]:将此项功能直接编入新内核,作为新内核的一部分需要配置哪些内核编译参数
Code Netfilter Configuration 网络过滤代码配置
将“Netfilter connection tracking support”编为模块
将以下应用层过滤支持的功能也编译为模块:
"layer7" match support、"string" match support
"time" match support、"connlimit" match support"
其他功能模块根据实际需要酌情添加
“iprange” address range match support
“state” match support、"mac" address match support
IP: Netfilter Configuration IP包过滤功能配置
将“IPv4 connection tracking support (require for NAT)”功能编为模块
将“Full NAT”部分的“MASQUERADE target support”、“REDIRECT target support”等功能也编译为模块
编译内核的模块文件、执行程序
执行 make 命令即可
安装编译好的模块文件
执行 make modules_install 命令
模块文件将安装到 /lib/modules/2.6.28.10/ 目录
安装编译好的内核执行程序
执行 make install 命令
内核执行程序将复制为 /boot/vmlinuz-2.6.28.10
修改grub.conf配置,重启并以新内核进入系统
---------重新编译安装iptables工具--------------
先卸载原有的iptables软件包
可以根据提示的依赖关系卸载相关的各软件包
或者忽略依赖关系卸载几个主要的软件包即可
rpm -e iptables iptables-ipv6 iptstate --nodeps
合并补丁,并编译安装新的iptables工具
[root@localhost ~]# tar jxvf iptables-1.4.6.tar.bz2 -C /usr/src/
[root@localhost ~]# cd /usr/src/iptables-1.4.6/
[root@localhost iptables-1.4.6]# cp
/usr/src/netfilter-layer7-v2.21/iptables-1.4.1.1-for-kernel-2.6.20forward/
libxt_layer7.*  extensions/
[root@localhost iptables-1.4.6]# ./configure  --prefix=/
--with-ksource=/usr/src/linux-2.6.28.10
[root@localhost iptables-1.4.6]# make
[root@localhost iptables-1.4.6]# make install
---------安装l7-protocols协议定义包 -------------
解包后直接执行“make install”命令即可
[root@localhost ~]# tar zxvf l7-protocols-2009-05-28.tar.gz
[root@localhost ~]# cd l7-protocols-2009-05-28
[root@localhost ~]l7-protocols-2009-05-28]# make install
----------设置使用应用层过滤规则-----------
layer7应用层协议匹配
匹配格式:-m layer7 --l7proto 协议名
协议定义文件位于:/etc/l7-protocols/protocols
支持以下常见应用层协议的过滤
qq:腾讯公司QQ程序的通讯协议
msnmessenger:微软公司MSN程序的通讯协议
msn-filetransfer:MSN程序的文件传输协议
bittorrent:BT下载类软件使用的通讯协议
xunlei:迅雷下载工具使用的通讯协议
edonkey:电驴下载工具使用的通讯协议
其他各种应用层协议:ftp、http、dns、imap、pop3……
------------规则示例:过滤使用qq协议的转发数据包-------
iptables -A FORWARD -m layer7 --l7proto qq -j DROP
时间匹配
匹配格式:-m time --timestart 起始时间 --timestop 结束时间 --wekdays 每周的哪些天
时间以24小时制表示,例如 18:00
每周的哪些天以对应的英文缩写表示,例如周一至周日分别为 Mon、Tue、Wed、Thu、Fri、Sat、Sun
并发连接数匹配
匹配格式:-m connlimit --connlimit-above 上限数
字符串匹配
匹配格式:-m string --string “字串” --algo 算法
算法指的是用于比对数据包中字符串的特定方法,可以为 bm 或 kmp ,其中任一种均可
--------实验案例:Layer7应用层过滤策略---------------
需求描述
重新编译Linux内核,添加l7-filter应用层过滤补丁
重新编译iptables,添加l7-filter应用层过滤补丁
设置过滤规则,禁止使用QQ、MSN等聊天工具
设置过滤规则,禁止使用BT、电驴等下载工具
实现思路
重新编译内核
重新编译iptables
使用新的iptables程序设置应用层过滤策略
注意事项
注意选择的layer7补丁文件要与内核、iptables的版本相匹配
关于iptables -m state出现invalid argument的解决方法
不是内核bug也不是iptables的原因,问题出在了新内核的配置上。在2.6.20之后的内核,在netfilter的配置以前在ipv4 netfilter configuration中的相当一部分移到了core netfilter configuration中,在core netfilter configuration中配置了state的match之后,另外必须在ip: netfilter configuration中的conntract也选上,否则就会出现本文标题中的invalid argument错误。这个问题,困扰了我很久,最终在国外的一个maillist上找到了原因。这个问题多出现在内核升级之后,对于很多发行版本,由于把所有的feature都编译成了模块,所以不会出现此问题。希望可以帮到大家。

转载于:https://blog.51cto.com/zhangjianjian/645658

使用layer7应用层过滤功能相关推荐

  1. [计算机网络]十三、配置iptables防火墙(SNAT和DNAT的策略及应用、使用layer7应用层过滤功能)

    目录 1.iptables和firewalld 1.1.GUI和CLI 1.2.查看内核和系统的版本 1.3.IP tables和netfilter的关系 ​编辑 1.4.NAT概述 2.SNAT策略 ...

  2. centos6.5下系统编译定制iptables防火墙扩展layer7应用层访问控制功能及应用限制QQ2016上网...

    iptables防火墙扩展之layer7应用层访问控制 概述: iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以基于网络层的数据包过滤机制为主,同 ...

  3. linux系统之编译内核实现iptables应用层过滤

    温馨提示: 之前己经介绍了Linux防火墙iptables的原理及命令用法,在前面说过iptables防火墙是工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙.以基于网络层的 ...

  4. 过滤功能失效 Google Base成“虚拟×××”

    本周早些时候,一个技术性缺陷使得Google新推出的Google Base 临时成为了一个巨大的虚拟×××. 上周推出的Google Base 标志着Google介入了免费个人分类广告和用户创建内容领 ...

  5. html 表格过滤功能,简单的带排序和过滤功能的jQuery表格插件

    smart-table是一款简单实用的带排序和过滤功能的jQuery表格插件.该jQuery表格插件通过简单的设置就可以生成表格排序.表格字段过滤功能,甚至可以实现表格分页显示,使用非常方便. 使用方 ...

  6. java实现筛选_教你用Java web实现多条件过滤功能

    生活中,当你闲暇之余浏览资讯的时候,当你搜索资料但繁杂信息夹杂时候,你就会想,如何更为准确的定位需求信息.今天就为你带来: 分页查询 需求分析:在列表页面中,显示指定条数的数据,通过翻页按钮完成首页/ ...

  7. Guava中针对集合的 filter和过滤功能

    Guava中针对集合的 filter和过滤功能 博客分类:  JAVA相关 在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子: Java代码   ...

  8. ALV标准过滤功能失效

    1, 问题描述 ALV显示时,使用标准的ALV工具栏上的过滤功能,发现不起作用,如下,对Change Indicator列过滤失效,不能正确显示过滤结果. 2, 问题解决 失效的原因其实就是,alv中 ...

  9. SpringCloud-使用路由网关的服务过滤功能-拦截登录前是否有token为例

    场景 SpringCloud-使用路由网关统一访问接口(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102733 ...

最新文章

  1. 基因组序列及注释数据下载
  2. linux系统文件分类,Linux系统文件概念和文件类型
  3. 看完这篇 HTTPS,和面试官扯皮就没问题了
  4. 深度优化LNMP之PHP
  5. Java数据库接口JDBC入门基础讲座_JDBC基础教程之连接
  6. 设计模式之模板方法模式(Template)
  7. 需求分析说明书和需求规格说明书
  8. 点击换图 秀米的svg_能换色的.svg图片怎么用?看这篇就够了!
  9. 如何根据日期+数字生成流水号
  10. 网卡参数设置建议与各个网卡参数含义详解
  11. [CTF]-NepCTF2022
  12. 【外挂对抗总结】小游戏H5小程序网页游戏分析
  13. 高级php工程师需要掌握的知识点
  14. 线上AI僚机,告诉你对方喜好,手把手教你如何正确约会
  15. SMB服务搭建与访问
  16. 网规:第4章 网络安全-4.8企业网络安全隔离
  17. 洞悉物联网发展1000问之软银孙正义的最新三大投资秘诀是什么?
  18. java 反射 参数 注解_Java编程之反射中的注解详解
  19. Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试
  20. NC文件笔记(2020-09-14)

热门文章

  1. VTK:PolyData之DataSetSurfaceFilter
  2. C++morse code 摩尔斯电码算法(附完整源码)
  3. QT的QScrollArea类的使用
  4. QT的QMultiSampleAntiAliasing类的使用
  5. python 修改模板对象的属性_django小技巧之html模板中调用对象属性或对象的方法...
  6. python考试报名官网安徽_今年优选:芜湖python
  7. flex 换主轴后子元素占满_css flex justify-content属性,子元素在主轴上的对齐方式。...
  8. 4.PromQL快速入门
  9. maven之build resources resource 详细介绍
  10. SSh结合Easyui实现Datagrid的分页显示