一种基于netfilter的包过滤器的实现方法技术

技术编号:30322892 阅读:12 留言:0更新日期:2021-10-09 23:49
本发明专利技术公开了一种基于netfilter的包过滤器的实现方法,包括以下步骤:加载数据包过滤模块到Linux内核中,挂载HOOK函数;用户态通过proc文件系统向内核态添加过滤规则;Linux内核netfilter的HOOK模块接收网络数据包;过滤模块进行规则匹配,丢弃匹配成功的数据包,放行匹配失败的数据包。本发明专利技术能对通过网关的任意包的指定字节进行精准过滤,对二层三层和应用层数据包都能进行过滤,过滤规则具有灵活性,增加通信过程中的安全性,以此达到更好的保护效果;适用于各种需要过滤数据包的网关系统中,也适用于各种需要过滤数据包的测试系统中。中。中。

【技术实现步骤摘要】
一种基于netfilter的包过滤器的实现方法


[0001]本专利技术涉及数据包过滤
,具体是一种基于netfilter的包过滤器的实现方法。

技术介绍

[0002]在数据通信领域,经常要对数据包进行过滤,以实现特定的功能或安全特性。目前Iptable防火墙可以对通过系统的数据包的指定字节进行过滤,但却只能过滤三层数据包,对二层数据包没有办法。Ebtable防火墙可以过滤二层数据包,但却做不到针对指定字节进行精准过滤。但是这两种方法都无法做到对任意包的任意字节进行过滤。

技术实现思路

[0003]本专利技术的目的在于提供一种基于netfilter的包过滤器的实现方法,对经过系统的数据包进行针对性的过滤,理论上可以对任意数据包的任意字节进行过滤;过滤规则通过proc文件系统进行增加或删除,以尾队列的形式存储在linux内核模块中,以解决上述
技术介绍
中提出的问题。
[0004]为实现上述目的,本专利技术提供如下技术方案:
[0005]一种基于netfilter的包过滤器的实现方法,包括以下步骤:
[0006]S1:加载数据包过滤模块到Linux内核中,挂载HOOK函数。
[0007]S2:用户态通过proc文件系统向内核态添加过滤规则。
[0008]S3:Linux内核netfilter的HOOK模块接收网络数据包。
[0009]S4:过滤模块进行规则匹配,丢弃匹配成功的数据包,放行匹配失败的数据包。
[0010]作为本专利技术的进一步方案:S1中的注册点为NF_BR_PRE_ROUTING。
[0011]作为本专利技术的进一步方案:S2中过滤规则由一个或多个三元组组成,每个三元组包括字节偏移、类型和值;
[0012]字节偏移:要过滤字节相对数据包第一个字节的位置偏移;
[0013]类型:匹配字节的类型,一个字节或两个字节或四个字节;
[0014]值:匹配字节的值。
[0015]作为本专利技术的进一步方案:每个三元组通过“,”间隔,每个规则之间通过“;”间隔。
[0016]作为本专利技术的进一步方案:匹配规则在内核态中以尾队列的方式存储,每个规则是尾队列的一个元素,每个元素又是另一个尾队列,其元素是三元组。
[0017]作为本专利技术的再进一步方案:步骤S4中遍历尾队列,将数据包与每个规则进行匹配,匹配成功就丢弃该数据包,否则就放行数据包。
[0018]与现有技术相比,本专利技术的优点是:
[0019]1.专利技术对任意数据包的任意字节都能进行精准的过滤;对二层三层和应用层数据包都能进行过滤;过滤规则具有灵活性。
[0020]2.本专利技术提供的一种基于netfilter的包过滤器的实现方法,适用于各种需要过
滤数据包的网关系统中;也适用于各种需要过滤数据包的测试系统中。
附图说明
[0021]图1为一种基于netfilter的包过滤器的实现方法中内核态过滤规则存储数据结构。
[0022]图2为一种基于netfilter的包过滤器的实现方法的工作过程图。
具体实施方式
[0023]下面结合具体实施方式对本专利的技术方案作进一步详细地说明。
[0024]请参阅图1

2,一种基于netfilter的包过滤器的实现方法,包括下述步骤:
[0025]S1:加载数据包过滤模块到Linux内核中,挂载HOOK函数。
[0026]S2:用户态通过proc文件系统向内核态添加过滤规则。
[0027]S3:Linux内核netfilter的HOOK模块接收网络数据包。
[0028]S4:过滤模块进行规则匹配,丢弃匹配成功的数据包,放行匹配失败的数据包。
[0029]S01中的注册点为NF_BR_PRE_ROUTING。
[0030]S02中过滤规则由一个或多个三元组组成,每个三元组包括字节偏移、类型和值;
[0031]字节偏移:要过滤字节相对数据包第一个字节的位置偏移;
[0032]类型:匹配字节的类型,一个字节或两个字节或四个字节;
[0033]值:匹配字节的值。
[0034]每个三元组通过“,”间隔,每个规则之间通过“;”间隔。
[0035]匹配规则在内核态中以尾队列的方式存储,每个规则是尾队列的一个元素,每个元素又是另一个尾队列,其元素是三元组,如附图1所示。
[0036]步骤S04中遍历尾队列,将数据包与每个规则进行匹配,匹配成功就丢弃该数据包,否则就放行数据包。
[0037]例如添加以下规则可以过滤DHCP request包:
[0038]“1220x0800,2310x11,3440x00440043,4210x01”[0039]其含义如下:
[0040]“1220x0800”:IPv4协议
[0041]“2310x11”:UDP协议
[0042]“3440x00440043”:源端口68,目的端口67
[0043]“4210x01”:DHCP Message type:Boot Request
[0044]这个规则仅过滤DHCP request包,对DHCP discover,DHCP offer和DHCP ack包仍然是放行的。
[0045]本专利技术提供的一种基于netfilter的包过滤器的实现方法,能对通过网关的任意包的指定字节进行精准过滤,增加通信过程中的安全性,以此达到更好的保护效果。
[0046]上面对本专利的较佳实施方式作了详细说明,但是本专利并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本专利宗旨的前提下作出各种变化。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于netfilter的包过滤器的实现方法,其特征在于,包括以下步骤:S1:加载数据包过滤模块到Linux内核中,挂载HOOK函数;S2:用户态通过proc文件系统向内核态添加过滤规则;S3:Linux内核netfilter的HOOK模块接收网络数据包;S4:过滤模块进行规则匹配,丢弃匹配成功的数据包,放行匹配失败的数据包。2.根据权利要求1所述的一种基于netfilter的包过滤器的实现方法,其特征在于,所述步骤S1中的注册点为NF_BR_PRE_ROUTING。3.根据权利要求1所述的一种基于netfilter的包过滤器的实现方法,其特征在于,所述步骤S2中过滤规则由一个或多个三元组组成,每个三元组包括字节偏移、类型和值,其中:字节偏移:要过滤字节...

【专利技术属性】
技术研发人员:杨振力
申请(专利权)人:芯河半导体科技无锡有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1