没有合适的资源?快使用搜索试试~ 我知道了~
首页教你如何实现LINUX下的数据包过滤
资源详情
资源评论
资源推荐
定义
iptables/netlter
的匹配模块
分类: 人阅读评论收藏举报
本文档的 归 所有,使用 发布,可以自由拷贝,转载,转载时请保持文
档的完整性,严禁用于任何商业用途。
!"#$%&
来源#''%&()%&
%前言
中的 提供了一个防火墙框架,具有很好的扩展性,除了自带的模块之外,用
户可以根据自己的需求定义新的防火墙模块加入其中,而编程过程也不是很复杂,只要依
葫芦画瓢即可,可在原来的类似功能的模块基础上修改即可,甚至对各函数是如何调用,
一些内部结构是如何定义的都不用详细了解,本文即介绍如何编写自定义的匹配模块。
*
匹配$&#是防火墙规则策略中的条件部分,匹配结果返回 匹配失败或 匹配成功,
从而确定数据包是否符合策略。在具体实现时分为两部分,内核部分和用户空间部分:在
内核中是以 的扩展模块实现,定义该模块并将其挂接到 的匹配链表中后,
在内核进行匹配检测时自动根据匹配名称查找该模块而调用相应的匹配函数,完成真正的
匹配功能;在用户空间,匹配模块是作为 $( 的一个扩展动态库来实现,只是一个用
户接口,不完成实际匹配功能,完成接收用户输入并将匹配数据结构传递到内核的功能,
该库的名称有限制,必须为 (!% ,其中“+是该匹配的名字,通
常匹配名称是用小写。
%内核模块
*
匹配在 % 内核和在 %, 内核中的函数参数略有区别,两者不兼容,但只要简单修改后即
可相互移植,主体部分不需要改变,本文以 %, 内核的模块为例。
*
为方便说明,还是通过举例来进行说明,要进行匹配的对象是一个 - 地址段,但该段中可
能有一些 - 不符合匹配条件,形成地址“洞”,这种情况是经常在实际应用中出现,对一个
地址段中的几个 - 地址要进行特别处理。
*
在内核中已经自带了 '.''!$)%& 模块用来匹配地址段,我们可以以此模
块为基础来进行修改,加入地址“洞”的处理。
*
首先要定义要进行匹配的数据结构,用来描述匹配条件,以 !$)%# 头文件为基础修
改为:
'/&''!.'!$)#%#/'
0!-1!-2345675!6
0!-1!-2345675!6
0-2345!82***'/9$&# &-$ /'
0-2345!:81***'/9$&# $-$ /'
0-2345!82!-4;***'/4)$#&/'
0-2345!:81!-4;***'/4)$#&/'
093<!6758!4=9*******'/定义一个匹配中最多的 ->洞”的个数/'
*
&!$)#?
*'/-& .@%/'
*!!!A$!B
*!!# C93<!6758!4=9DB*'/- 洞地址/'
EB
*
&!$)#!
?
* &!$)# &B
* &!$)# B
*'/F$) $(./'
*!G!$) B
EB
0'/!-1!-2345675!6/'
然后是定义内核模块处理,最主要的是定义一个 !$&# 匹配结构,该结构在 &'
'!.'!$( %# 中定义:
*
&!$&#
?
* & !#$ B
*& &#$$C-1!F=41-74!93<439554DB
*'/2$ F385$ /#H
**********&$$&%/'
*'/3) &#$) &%A$ # @#$
**********$ ( A ) (!&!( $
********** (!!$!@$(%/'
*/$&#& & !(/ (A
******& &!.&/A
******& &!.&/A
******& ./$&#A
****** A
******/#B
*'/$@# $# %/'
*'/8#$ %/'
*/&#&& &#$/$($A
****& &!/A
****./$&#A
**** )$&# A
**** )#!$ B
*'/$@## %/'
*./ ./$&#A )$&# B
*'/8# 16-8!97:=5%/'
* &/B
EB
*
该结构中有以下几个参数:
& !#$ :用来挂接到匹配链表,必须初始化为?4=A4=E;
$:该匹配名称的名称,必须是唯一的;
$&# 函数:该函数是最主要函数,完成对数据包的匹配条件检查,返回 表示匹配成功,
表示失败;
&#& 函数:用于对用户层传入的数据进行合法性检查,如匹配数据长度是否正确,
是否是在正确的表中使用等;
函数:用于释放该匹配中动态分配的资源,在规则删除时会调用;
&/:指向模块本身。
*
本例中的匹配结构定义如下:
$& &!$&#$)#!$&#H
?
*% H?4=A4=EA
*%$HI$)#IA
*%$&#HJ$&#A
*%&#&HJ&#&A
*% H4=A
*%H16-8!97:=5
EB
*
$&# 函数是匹配的核心函数,返回 表示数据符合匹配条件, 表示不匹配,函数定义
为:
*/$&#& & !(/ (A
******& &!.&/A
******& &!.&/A
******& ./$&#A
****** A
******/#B
在 $&# 函数参数为:
(:数据包
:数据进入的网卡
数据发出的网卡
$&#:匹配条件信息的指针
:碎片数据偏移量
#:将数据立即丢弃
*
剩余13页未读,继续阅读
FQHQFTH
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论4