防火墙【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实验

美国多IP站群VPS商家选择考虑因素和可选商家推荐

如今我们很多朋友做网站都比较多的采用站群模式,但是用站群模式我们很多人都知道要拆分到不同IP段。比如我们会选择不同的服务商,不同的机房,至少和我们每个服务器的IP地址差异化。于是,我们很多朋友会选择美国多IP站群VPS商家的产品。美国站群VPS主机商和我们普通的云服务器、VPS还是有区别的,比如站群服务器的IP分布情况,配置技术难度,以及我们成本是比普通的高,商家选择要靠谱的。我们在选择美国多IP...

俄罗斯vps主机推荐,怎么样俄罗斯vps俄罗斯vps速度怎么样?

俄罗斯vps速度怎么样?俄罗斯vps云主机节点是欧洲十大节点之一,地处俄罗斯首都莫斯科,网络带宽辐射周边欧洲大陆,10G专线连通德国法兰克福、法国巴黎、意大利米兰等,向外连接全球。俄罗斯vps云主机速度快吗、延迟多少?由于俄罗斯数据中心出口带宽充足,俄罗斯vps云主机到全球各地的延迟、速度相对来说都不错。今天,云服务器网(yuntue.com)小编介绍一下俄罗斯vps速度及俄罗斯vps主机推荐!俄...

Gcorelabs:美国GPU服务器,8路RTX2080Ti;2*Silver-4214/256G内存/1T SSD,1815欧/月

gcorelabs怎么样?gcorelabs是创建于2011年的俄罗斯一家IDC服务商,Gcorelabs提供优质的托管服务和VPS主机服务,Gcorelabs有一支强大的技术队伍,对主机的性能和稳定性要求非常高。Gcorelabs在 2017年收购了SkyparkCDN并提供全球CDN服务,目标是进入全球前五的网络服务商。G-Core Labs总部位于卢森堡,在莫斯科,明斯克和彼尔姆设有办事处。...

ddos硬件防火墙为你推荐
中国微信5曲目itunes229.254route支持ipad支持ipadiphonewifi苹果手机突然用不了Wi-Fi了360chrome360Chrome 世界之窗极速浏览器 ChromePlus迅雷快鸟迅雷快鸟这种强盗软件不违规吗?win7关闭135端口win7系统 怎么关闭135 445 端口 修改注册表 创建IP安全策略 也试过 就是关不了 还望高手指教micromediawww.macromedia.com 是什么网站
汉邦高科域名注册 俄罗斯vps 过期已备案域名 wordpress主机 5折 enzu 电影服务器 韩国空间 uk2 ev证书 日本bb瘦 江苏徐州移动 阿里dns 卡巴斯基试用版下载 移动王卡 月付空间 apachetomcat 阿里云宕机故障 国内云主机 最好的空间留言 更多