防火墙【doc】基于netfilter的Linux抗DDoS硬件防火墙的研究与设计

ddos硬件防火墙  时间:2021-04-29  阅读:()

基于netfilter的Linux抗DDoS硬件防火墙

的研究与设计

电子测量技

ELECTR0NI(

TECHNO【DGY

第3O卷第7期

2007年7月

基于netfilter的Linux抗DDo S硬件防火墙的

研究与设计

杨振许林英杨凤鸣

(1.天津大学计算机科学与技术系天津3OoO72

2.天津市公安局治安总队天津300000)

摘要:分布式拒绝服务攻击(DDoS)是一种攻击强度大,危害严重的攻击方式.netfilter是Linux2.4以后的内核中

采用的一个结构清晰,便于扩展的优秀的防火墙框架.本文介绍了如何运用netfilter提供的钩子函数实现一个硬件

防火墙来防御DEloS攻击.实验表明,该防火墙能一定程度上防御DEloS攻击,而且能够做到内核主动防御的防护效

果,所以运行效率非常高.

关键词:net filter;拒绝服务攻击;Linux内核模块开发;SYN代理;SYNco okie中图分类号:TP309.2文献标识码:A

Researchanddesigno fanti-DDo Shardware f'wewallinlinuxbas edonnetfilter

YangZhenXuL inyinYangF engming2

(1.ComputerDept.ofTianj inUniversity,Tianj in300072

2.PoliceofTianjin,Tianjin300000)

Abstract:Defenseagainstdistributeddenialo fservice(DD0 S)iSoneo fthehardestsecuritypr

oblemsontheIntemeL

NetfilteriS anexcellentfirewallframeworkthathasplainstructureto extendconveniently,andiS adoptedduringthe

Linuxkemel2.4andthe subsequentversions.Thisp aperintro ducesthedesigno fahardwarefirewallthatisrealizedbvnetfilterhookfunctions,anditdefendstheDDo S attack.Asitshownbyre searchresult,thekernellevelfirewallhasane ffic ientperformance,andcanworksactivelywhende fendingDE lo S attackKeywords:netfilter;Do S;mo duledevelopmentinLinuxkernel;SYNproxy;SYNco okieO引言

近年来L inu x得到了迅速发展,特别在网络安全领域

Linux被广泛的运用,其中就包括防火墙的设计和开发.

Linux2.4以后的内核都采用了一种称为netfilter架构的

防火墙机制,netfilter提供了一个抽象,通用化的框架,该

框架定义的一个子功能的实现就是包过滤子系统.net fiher比以前任何一版Linux内核的防火墙子系统都要

完善强大.本文就介绍了在netfiher基础之上Linux硬件

防火墙的设计与开发.

1原理

1.1 netfilter框架net fiher是L inux2.4以后版本内核提供的防火墙内

核级框架,IPv4协议栈为了实现对net fiher架构的支持,

在IPpacket在IPv4协议栈上的游历路线之中,仔细选择

了5个参考点.在这5个参考点上,各引入了一行对NF_

HOOK()宏函数的一个相应的调用.因此一个数据包在

通过netfilter框架时,它将经过如图1所示的流程.从图

中可以看到netfiher框架定义的5个钩子函数,分别为:

(1)NF-IPPRE_ROUTING

(2)NF_IP_

LOCAL_IN

(3)NF_IP_FORWARD

(4)NF_IPPOST_ROUTING

(5)NF_IP_LOCAL_OUT

+(1)——+(进入包路由)——+(3)——+(4)——+lf(2)(5)

\/(本地进程如wWw,TELNET等)

图1netfilter框架示意图

数据包从左边进入系统,进行IP校验以后,经过第一个钩子函数NF_IP_PRE_ROUTING(1)进行处理;然后进?

105?

第3O卷电子测量技术

入路由代码,其决定该数据包是需要转发还是发给本机;若该数据包是发给本机的,则该数据经过钩子函数NF—IP—LOCAL_IN(2)处理以后传递给上层协议;若该数据包应该被转发则它被NF_IP_FORWARD(3)处理;经过转发的数据包经过最后一个钩子函数NF_IP—POST_ROUTING

(4)处理以后,再传输到网络上.

本地产生的数据经钩子函数NF_IP—L()CAL—OUT

(5)处理后,进行路由选择处理.然后,经过NF_IP_POST』OUTING(4)处理,再发送到网络上.

1.2DoS攻击原理

Do S(DenialofService,拒绝服务攻击)是近年来非常

流行的网络攻击方式.它利用合理的服务请求来占用过多的服务资源,致使服务器超载,无法响应其它的请求.DDo S(DistributedDenialo fService,分布式拒绝服务)是拒绝服务DoS攻击的加强形式,攻击者可以控制大量分布于

Internet各处的傀儡机对目标发动DoS攻击.由于DDoS攻击通常运用洪水和欺骗攻击,使得攻击的特征难以被掌握,从而很难防范.本文所设计的硬件防火墙就是专门防御DDoS的.DD0S攻击中最常见的就是SYNFlood攻击,下面简要的讲述一下S YNF lo o d攻击的原理.

在TCP协议中,服务器接收到一个SYN连接请求就为请求的客户端分配缓冲区并建立一个半开连接,存储连接状态,直到三次握手完成或者超时而释放连接.而S YN攻击就是在短时间内伪造源IP地址向目的主机发送大量的S YN包,使服务器端存储大量的半开连接而资源耗尽,从而不能提供服务.

1.3 S YNproxy防御技术

防御S YNF lo o d攻击的方法有很多,但其中最有效最根本的方法就是S YNp r o xy(S YN代理)了,下面分步骤简述一下该技术的防御原理.

(1)防火墙截获外网客户端发向内网服务器所有S YN数据包.

Client一一一SYN一一一—Firewall

(2)代替内网服务器向外网发S YN/AC K数据包.

Client—一一一SYN/ACK(cookie)一一一Firewall

该步骤利用SYNco okie技术将SYN包改造成

S YN/AC K包发送给客户端,其中S YN/AC K包的S E Q(TCP包序列号)是根据源IP,目的IP,端口等信息用作者设计的算法算出来的,这个SEQ也就是所谓的cookie.由于SYNFlood攻击都是伪造的IP地址,所以向这些IP发送S YN/AC K不会返回AC K包,根据第三步可用看出这些伪造的I P发出的S YN包不能穿过防火墙到达服务器.

(3)接到外网的合法ACK包,防火墙向内网发送

S YN包.

Client一一一A(K一一一—Firewall一一一SYN一

一一—

S erver

?】 06?

并不是说所有接受的ACK包都是合法的,因为也存在ACK攻击.所以这里我们对防火墙截获的ACK包做

个认证,用步骤二中同样的算法算出cookie,然后同ACK包中的ACKSEQ比较来判断该ACK包,是否合法.如果是合法的AC K包则构造一个S YN包发给服务器.如果不是合法的ACK包,ACK包被丢弃.

(4)服务器应答S YN/AC K包t

Firewall-+一一一SYN/ACK一一--S erver

(5)防火墙应答ACK包

Firewall一一一ACK一一一—Server

防火墙收到服务器的S YN/A C K包,将其改造成

ACK包发给服务器.这样一个TCP连接建立成功.

(6)防火墙转发所有客户端与服务器端数据.

2防火墙实现

由于我们设计的是硬件防火墙而不是基于主机的防火墙,需要防火墙在客户端和服务器端之间转发数据.因此我们首先要将该防火墙的网络模式设置为桥模式,然后在防火墙中插入两块网卡,这两块网卡就成了桥接设备,

块网卡为包的入口,另一块为出口,数据通过两个网卡被转发.

2.1模块的设计

L inux2.6内核支持模块的运行,所以我们将防御策略

用代码在模块中实现并加载到内核运行,这样可以避免代码调试时需要重新编译内核.

我们在图1中的(1)NF—IP—PRE_R0UTING处的钩子函数中实现我们的防御代码,并将该钩子函数在模块中注册,这样流经防火墙的所有包首先要通过我们防御策略的检验才能通过.

下面是防火墙模块的代码框架:

#inc lude<linux/k erne 1.h>

#inc lude<linux/mo du l e.h>staticstructnLhook_opssyn_filter=

{//钩子结构定义

{NULL,NULL},my_firewall,//防火墙实现函数

THIS_

MODULE.

PF_

INET,

NF_IP—PRE_ROUTING,//在第一个钩子点调用

NFIP_

P RI_

FIRST,

};int ink(vo id)//初始化模块

{//登记钩子函数nf_

register_ho ok(&syn_filter):

}vo idcleanup(vo id)

{//注销钩子函数

杨振等:基于netfilter的Linux抗DDo S硬件防火墙的研究与设计第7期nffunregister_hook(~synfilter);

)module__

in it(init);//模块初始化moduleexit(cleanup)t//模块清空unsignedintmy_firewall()

{//防火墙代码实现函数)

2.2 SYNcookie算法

在整个防御策略的第二步也就是防火墙代替服务器

向客户端发送带有co okie的SYN/ACK包,我们运用了

SYNcookie技术.SYNcookie技术是指当防火墙收到一

个S YN报文后,不转发到服务器,而是利用连接的信息生

成一个co okie,并将这个co okie作为将要返回的SYN/

ACK包的初始序列号.当客户端返回一个ACK报文时,

根据报头信息计算cookie,与返回的确认序列号(初始的序

列号加1)的前24位进行对比,如果相同,则是一个正常连

接,然后构造S YN包发送至服务器.该技术实现的关键

之处在于cookie的计算,co okie的计算应该做到包含本次

连接的状态信息,而且攻击者不能伪造cookie.cookie的

计算算法如下:

(1)防火墙收到一个S YN包后,计算一个消息摘要mac:mac—MAC(A,忌);

MAC是密码学中的一个消息认证码函数,也就是满

足某种安全性质的带密钥的hash函数,它能够提供cookie

计算中需要的安全性.

A为客户和服务器双方的IP地址和端口号以及参数t

的串联组合:

A—SOURCE—IPIISoURCE—PORTlIDST—IPll

DST_PORTIIt

k为服务器独有的密钥;

时间参数t为32比特长的时间计数器,每64秒加1;

(2)生成cookie:c o o kie---~mac(0:24):表示取mac值的第0到24

比特位;

(3)设置将要返回的S YN+AC K报文的初始序列号,设置过程如下:i.高24位用cookie代替;jj.接下来的3比特位用客户要求的最大报文长度

MMS代替;jjj.最后5比特位为tmo d32.

客户端收到来自防火墙S YN/A C K包后,返回一个

ACK包,这个ACK包将带一个co okie(确认号为服务器发送过来的S YN/A C K包的初始序列号加l,所以不影响高24位),在服务器端重新计算cookie,与确认号的前24位比较,如果相同,则说明未被修改,连接合法.

2.3性能优化

由于计算cookie有一定的运算量,增加了防火墙CPU的负担,因此,在大规模S YNF lo o d攻击时如果单纯只用SYNcookie技术将很有可能导致防火墙因为CPU资源耗尽而不能正常工作.基于这点原因我们对以上的算法做了优化.

首先,并不是所有时侯都需要启动SYNcookie来进行对S YN包的筛选.我们通过检测单位时间内进入防火墙的包数来判断是否正在被攻击,在没有攻击的时候我们的防御策略根本不启动,这样可以提高无攻击情况下的网络

运行效率.

然后,在攻击发生时,我们利用TCP协议的重传机制对流入防火墙的S YN包进行一次过滤,使得真正需要用SYNcookie技术来处理的SYN包数大为减少,从而降低了防火墙的负担.

TCP协议的重传机制是指如果TCP连接的发起方在发出S YN包后一段时间内没有得到任何响应,它将接着发送第2次请求,也就是发送第2个S YN包,如果一段时间后仍然没有响应它将发送第3个SYN包.根据实验我们发现第2个SYN包和第1个SYN包的间隔时间为3S左右,第3个S YN包和第2个S YN包的间隔时间为6 S左右.

如果是S YNF lo o d攻击,S YN包是由攻击程序伪造I P地址发出的,攻击程序只管将S YN包发出而不会考虑是否得到服务器响应,因此在连接超时时,不会产生第2个S YN包或是第3个S YN包.根据这个原理,当流人防火墙的S YN包数多到一定程度时,我们启用丢包策略.我们将所有流人防火墙的S YN包做一个记录,放在"I P跟踪表"中,下次S YN包到达时我们通过检验源I P是否在"I P跟踪表"中来判断这个I P是否能重传S YN包;我们将能够返回ACK包,并通过SYNcookie算法检验合格的IP地址加入到"合法地址表",这样下次该IP请求连接时的SYN包可以直接通过,无需通过SYNco okie的检验.丢包防护策略的逻辑图如图2所示:

图2优化后的丢包策略逻辑图

?107?

第3O卷电子测量技术

3实验

收到几个新商家投稿(HostMem,无忧云,青云互联,TTcloud,亚洲云端,趣米云),一起发布排名不分先后

7月份已经过去了一半,炎热的夏季已经来临了,主机圈也开始了大量的夏季促销攻势,近期收到一些商家投稿信息,提供欧美或者亚洲地区主机产品,价格优惠,这里做一个汇总,方便大家参考,排名不分先后,以邮件顺序,少部分因为促销具有一定的时效性,价格已经恢复故暂未列出。HostMem部落曾经分享过一次Hostmem的信息,这是一家提供动态云和经典云的国人VPS商家,其中动态云硬件按小时计费,流量按需使用;而经典...

spinservers($89/月),圣何塞10Gbps带宽服务器,达拉斯10Gbps服务器

spinservers是Majestic Hosting Solutions LLC旗下站点,主要提供国外服务器租用和Hybrid Dedicated等产品的商家,数据中心包括美国达拉斯和圣何塞机房,机器一般10Gbps端口带宽,高配置硬件,支持使用PayPal、信用卡、支付宝或者微信等付款方式。目前,商家针对部分服务器提供优惠码,优惠后达拉斯机房服务器最低每月89美元起,圣何塞机房服务器最低每月...

iON Cloud:新加坡cn2 gia vps/1核/2G内存/25G SSD/250G流量/10M带宽,$35/月

iON Cloud怎么样?iON Cloud升级了新加坡CN2 VPS的带宽和流量最低配的原先带宽5M现在升级为10M,流量也从原先的150G升级为250G。注意,流量也仅计算出站方向。iON Cloud是Krypt旗下的云服务器品牌,成立于2019年,是美国老牌机房(1998~)krypt旗下的VPS云服务器品牌,主打国外VPS云服务器业务,均采用KVM架构,整体性能配置较高,云服务器产品质量靠...

ddos硬件防火墙为你推荐
工艺美术品设计专业有人在认真做事tracerouteping命令和traceroute(tracert )在功能上的区别有哪些?勒索病毒win7补丁怎么删除 防勒索病毒 打的补丁iexplore.exe应用程序错误iexplore.exe应用程序错误fusionchartsFusionCharts连接数据库你是怎么解决的,能告诉我吗?谢谢啦icloudiphone苹果6显示已停用请连接itunes什么意思google分析google分析里的数据包括搜索引擎爬虫的数据吗?迅雷雷鸟100+怒放手机是迅雷做的么?迅雷之前不是出了一款雷鸟手机么?ipad无法加入网络我的IPAD无法加入网络
com域名空间 日本vps 美国vps评测 cn域名备案 virpus burstnet wavecom rackspace 免费ftp空间 香港机房托管 回程路由 ev证书 谁的qq空间最好看 129邮箱 drupal安装 空间登录首页 web应用服务器 帽子云排名 中国电信测速网站 贵阳电信测速 更多