第 26 卷第 9 期
2009 年 9 月
计算机应用研究
Application Research of Computers
Vol. 26
Sep. 2009
基于虚电路的拒绝服务攻击防御研究非
陈麟林宏刚胡勇2
. (1.成都信息工程学院计算机系统与网络安全研究所,成都 610225; 2. 四川大学信息安全研究所,成都 61∞64)
摘 要:设计了一种基于虚电路的拒绝服务保护基体系结构;介绍了基于虚电路的资源分配算法;在基于服务
元网络体系结构的虚电路结构原型系统中实现了所提出的资源分自己算法。与其他算法相比,该算法能有效对抗
来自网络的恶意授权实体的拒绝服务攻击。
关键词:拒绝服务;虚电路;资源分自己;恶意授权实体
中图分类号 文献标志码 A 文章编号 1001-3695(2009)09-3499-03
doi: 10. 3969/j. issn. 1001-
Research of denial of service attack defense based on virtual circuit
CHEN Lin 1 , LlN Hong白gangl , HU Y ong2
( 1. Security Institute of Co叩U趾r & Network , Chengdu University of Information Technology , Chengdu 610225 , China; 2. Inst山阳 oflnfom础'
tion SecuT抑 , Sichuan Un阴阳ty , Chengdu 610064 , Chiria)
Abstract;ηlÎs paper designed a denial of service protection base architecture based on virtual circuit. And presented re-
source allocation algorithm based on virtual circuit. Realized the resource allocation algorithm in the prototype system of the
virtual circuit architecture based on service unit network architecture. Compared with other algorithms , the algorithm can ef-
fectively fight the denial of service attacks from malicious authorized entities in the networks.
Key words; denial of service; virtual circuit; resource allocation; malicious authorized entities
近几年来,在诸多的网络攻击中,拒绝服务攻击成为影响
网络可用性的突出问题。全球每年由于拒绝服务攻击而造成
的经济损失高达数百亿美元川。比如, 2(削年 2 月, Yahoo 、
Buy. com 、eBay 、Amazon ,CNN 等多家大型网站遭受分布式拒绝
服务攻击而关闭数小时,同时整个网络速度降低了 26% ,造成
高达 10 亿美元的经济损失。为此,国内外对拒绝服务攻击的
防御进行了深入研究。
1 相关研究工作
Tuomas Aura 等人[2] 在对拒绝服务进行深入研究后,将拒
绝服务分成两种类型:第一种是由于过度分配或长时间占用共
享资源、而导致的拒绝服务,如进程(包括恶意进程和合法进
程)从共享资源池中获取大量资源并占为己有,不允许其他进
程使用;第二种是由于资源被破坏而导致的拒绝服务,如恶意
进程将资源、从共享资源池中删除,从而导致资源不可用,但恶
意进程并没有获得资源本身。第二种拒绝服务通常可以通过
访问控制、完整性保护等机制予以避免,而第一种拒绝服务攻
击的防御相对比较困难。为此,国内外主要围绕如何进行合理
的资源分配以避免拒绝服务进行研究C
Yu 等人[3]认为一种有效的拒绝服务解决方案必须基于资
源分配的控制。 Jonathan K. Millen[41 提出了拒绝服务保护基
( denial of service protection base , DPB) 的概念, DPB 负责控制
资源的分配。 Zheng 等人[5] 提出了一种有效的实现 DPB 的算
法,但所提出的资源分配算法仅仅基于进程标志和运行进程的
用户标志进行资源分配,对于主机系统而言,问题不是很明显,
但在网络环境中,存在以下两个方面的问题 ;a) 由于进程(如
IP 进程)通常为多个实体(有可能是授权实体,也可能是非授
权实体)提供服务,如果进程请求的资源大量用于为非授权实
体提供服务,那么当授权实体请求提供服务时,进程会由于得
不到相应的资源而元法为授权实体提供服务,从而导致拒绝服
务的发生卢)即便是授权实体也有恶意授权实体和非恶意授
权实体之分,如果进程请求的资源大量用于为恶意授权实体提
供服务,那么当非恶意授权实体请求提供服务时,进程同样会
由于得不到相应的资源而无法为非恶意授权实体提供服务,从
而导致拒绝服务的发生。针对情况 a) ,文献[6]提出了解决办
法:接入路由器对请求接入的源节点进行身份鉴别,源节点只
有鉴别通过之后,才能接入网络,保证只有授权实体才能接入
网络。本文针对情况的,设计了一种基于虚电路的拒绝服务
保护基体系结构和资源分配算法,避免了来自恶意授权实体的
拒绝服务攻击。
2 关于虚电路
计算机网络通常被划分成资源、子网和通信子网,其中通信
子网的内部结构主要有数据报和虚电路结构两种[7] 。在虚电
路结构中,为了进行数据的传输,网络的源节点和目标节点之
间先要建立一条逻辑通路,因为这条逻辑电路不是物理的实际
电路,所以称之为虚电路。源、节点和目标节点在同一时间可能
存在多条虚电路和多个节点连接。两个节点之间也可以同时
存在多条虚电路为不同的进程服务,这些虚电路的实际路径可
能相同,也可能不同,不同的虚电路通过虚电路号进行区分。
在每个被传送的数据分组中不仅要有分组序号、校验和等控制
信息,还要有它要通过的虚电路的号码,以区别于其他虚电路
收稿日期; 2008-12-04; 修回日期 2009-01-31 基金项目;四川省科技攻关计划资助项目 (2008GG∞07)
作者简介:陈麟 (1973-) ,男,重庆人,副教授,博士,主要研究方向为网络安全(to_chenlin@ 263. net) ;林宏刚(1976-) ,男,四川人,博士,主要研
究方向为网络安全;胡勇 (1973-) ,男,四川人,副研究员,博士,主要研究方向为网络安全.
.3500. 计算机应用研究 第 26 卷
的数据分组。
3 基于虚电路的拒绝服务防御方案
基于虚电路的拒绝服务保护基体系结构如图 1 所示。进
程在请求资源时,它要将进程标志 idp 、是否是网络通信进程的
标志 ifnet、虚电路标志 id町、请求资源的类型 a 及请求资源的数
量 n, 发送给资源分配监视器。资源分配监视器根据资源分配
策略(resource allocation policy , RAP) 、资源分配表(resource al-
location table , RA T) 和虚电路表 (v川ual circuit table , VCT) 决
定该资源分配请求是否被接受。虚电路的相关信息存储在
VCT 中, RAP 不能将信息写入 VCT , VCT 的更新工作由虚电路
建立、维护、删除模块负责。
虚电路表 (VCT)
图 1 基于虚电路的拒绝服务保护基体系结构
3. 1 基于虚电路的资源分配算法
设 maxtotal (α)表示能够被分配给所有进程的资源 Pa 的数
量,m血.p (α)表示能够分配给单个进程的资源儿的数量,maxu
忡 , b) 表示能够分配给用户 b 的资源 Pa 的数量, m以, (α , b) 表
示能够分配给虚电路 b 的资源 Pa 的数量, m缸s_node (a , s) 表示
能分配给源节点 s 的资源 ρ儿α 的数量, cu叫lC叽r叭t叫0
分配给所有进程的资源pιa 的数量, cur乌p(归α , b川)表示当前已经分
配给进程 b 的资源p乱a 的数量, c阳ur凡.(归a , b的)表示当前己经分配给
用户 b 的资源 pιa 的数量 , CUTv ( α , b) 表示当前已经分配给虚电
路 b 的资源 ρa 的数量, curs_node ( a , s) 表示当前已经分配给源节
点 s 的资源ρa 的数量。
资源监视器执行的资源分配算法描述如下:
input: idp, ifnet , idvc ,a , nr
variable: 陀sult
begin:
F etch maxtota1 ( a) from RAP
Fetch maxp(a) from RAP
if (ifnet) then
Fetch maxy ( a , idvo ) from RAP
F etch max, node ( a , source ( idvo )) from RAP
endif
if (curtotal (a) + n, > m缸total(a)) then
result " deny
else
if(cUfp(a , idp) +n, >maxp(a)) then
result " deny
else
( id" ) ) )
if(cUfU(a ,owner(idp)) +n, >maxu(a ,owner(idp))) then
result = deny
else
if ( ifnet) then
if ( CUf y ( a , idvo ) + n, > maxy ( a , idvo )) then
result = deny
else
if( cur,_node ( a , SOUfce ( id vo )) + n, > max, node ( a ,回urce
result = deny
else
result = accept
endif
endif
endif
endif
endif
endif
end
output: result
上面介绍的算法描述中:
a)语句"Fetch maxtotal(a) from RAP"的作用是从资源分配
策略中读取资源儿能分配给所有进程的数量。
b)语句"Fetch maxp (a) from RAP" 的作用是从资源分配
策略中读取资源 Pa 能分配给单个进程的数量。
c)语句"if (ifnet) then" 的作用是判断是否是网络通信进
程。
d)语句"Fetch max, (a , id",) from RAP"的作用是从资源分
配策略中读取能分配给标志为 id町的虚电路的资源、 Pa 的数量。
e)语句"Fetch m缸口时.c α , source( id",)) from RAP" 的作用
是从资源分配策略中读取能分配给标志为 id町的虚电路对应
源节点的资源ι 的数量;
f)语句 "if ( curtota1 (α) + n, > maxp ( α)) then" 的作用是判
断当前已经分配给所有进程的资源儿的数量与进程请求分配
的资源矶的数量之和是否大于从资源分配策略中读取的资源
儿能分配给所有进程的数量。
g)语句 "if( curp ( a , idp ) + n, > m缸.p ( α)) then"的作用是判
断当前已经分配给请求资源分配进程的资源 Pa 的数量与进程
请求分配的资源 Pa 的数量之和是否大于从资源分配策略中读
取的资源儿能分配给单个进程的数量。
h) 语句"江( cur. (α , owner (idp )) + n, > max. (a , owner
(idp )) then" 的作用是判断当前已经分配给运行请求资源分配
进程的用户的资源仇的数量与进程请求分配的资源仇的数
量之和是否大于从资源分配策略中读取的能分配给运行请求
资源分配进程的用户的资源A 的数量。
i)语句 "if (cur, (α , id",,) + n, > m盹(α , id,,)) then" 的作用
是判断当前已经分配给标志为 id悦的虚电路的资源比的数量
与进程请求分配的资源、仇的数量之和是否大于从资源分配策
略中读取的能分配给标志为 id町的虚电路的资源、儿的数量。
j)语句" if ( cur,_node ( a , source ( id"" )) + n, > max, node 忡,
source( id",,) )"的作用是判断当前分配给请求中标志为 id"" 的
虚电路对应源节点的资源仇的数量与进程请求分配的资源仇
的数量之和是否大于从资源分配策略中读取的能分配给标志
为 id",的虚电路对应源节点的资源 Pa 的数量。
基于虚电路的资源分配策略
定义资源分配策略是-个五元组(M, P, U , V, 8) 。其
中 :M= < 叫 , m2 , … , m/) 是一个向量,表示系统中每种资源能
分配给所有进程的数量;P= <队 , P2 , … ,P/ )是一个向量,表示
系统中每种资源能分配给单个进程的数量;U是一个 lxk 的
矩阵,其中 k 是系统的用户数,矩阵 U的元素 Ua . b (a 运 l , b~k)
表示用户 b 能分配资源 Pa 的数量;V是一个 lxq 的矩阵 , q 是
系统的虚电路数,矩阵元素 Va • b ( α ~l , b 罢王 q) 表示虚电路 b 能分
配资源仇的数量;8是一个 1 Xz 的矩阵 ,z 是系统的源节点数,
矩阵元素 ( α剖 , b~z)表示源节点 b 能分配资源Pa 的数量。
资源分配监视器根据资源分配策略、资源分配表和虚电路
表决定进程的资源分配请求是被拒绝,还是接受。以下几种情
况之一发生时,资源分配监视器将拒绝进程的资源分配请求:
第 9 期 陈 麟,等:基于虚电路的拒绝服务攻击防御研究 • 3501 •
a)某进程请求分配某种资源 Pa 的数量与巳经分配给所有
进程的资源 Pa 的数量之和大于允许分配给所有进程的资源 Pa
的数量。
b)某进程请求分配某种资源儿的数量与已经分配给该进
程的资源仇的数量之和大于允许分配给该进程的资源仇的
数量。
c)某进程请求分配某种资源 Pa 的数量与已经分配给该进
程用户的资源仇的数量之和大于允许分配给该进程用户的资
源 P. 的数量。
的如果请求某种资源仇的进程是网络通信进程,该进程
请求分配资源仇的数量与已经分配给某条虚电路的资源 ρa
的数量之和大于允许分配给该虚电路的资源ρa 的数量。
e)如果请求某种资源 Pa 的进程是网络通信进程,该进程
请求分配资源 Pa 的数量与已经分配给某个授权实体的资源、仇
的数量之和大于允许分配给该授权实体的资源、仇的数量。
资源分配表和虚电路表
资源分配表用于存放己分配资源的相关信息。资源分配
表的每一行包括五个域,表示成< idp , Tid ,U id ,V id , nr ) 。其中: idp
域表示进程的标志 ; Tid域表示资源的标志 ; Uid域表示进程用户
的标志 ;Vid域表示虚电路的标志 ;n, 域表示已分配资源的数量。
虚电路表用于存放虚电路的相关信息。虚电路表的每一
行包括五个域,表示成< Sid , in_vid , in_if , out_Vid , out_证〉。其中:
Sid域表示源节点的标志 ;in_Vid域表示人虚电路标志 ;in_if 域表
示人接口 ;out_Vid域表示出虚电路标志 ;out_if域表示出接口。
根据资源分配表和虚电路表,可以计算出当前已经分配给
所有进程的资源A 的数量 cur '0,.1 ( a ) 、当前已经分配给进程 idp
的资源、儿的数量 curp 忡 , idp )) 、当前已经分配给用户 owner
(idp ) 的资源 Pa 的数量 CUfu (α , owner( idp ) )、当前已经分配给
虚电路 id",的资源 Pa 的数量 curv (a , idvc ) 、当前已经分配给源
节点 source ( id", )的资源 Pa 的数量 cur山de (a , SOUfCe( id,J )。
函数 owner:ID→UID 的定义域 ID 是进程标志的集合,值
域 UID 是运行该进程的用户标志集合。通过函数 owner ,可以
求出指定进程的用户,如通过式(1)可以求出标志为 idp 的进
程的用户标志为 uid
owner( idp ) = uid ( 1 )
函数 source: VID→SID 的定义域 VID 是虚电路标志的集
合,值域 SID 是源节点标志集合。通过函数 source ,可以求出
指定虚电路的源节点(即发起建立该虚电路的节点) ,如通过
式(2)可以求出标志为 iι的虚电路的源节点的标志为 sid
source ( idvc ) = sid (2)
资源分配策略的执行
资源分配监视器执行函数 φ:IDp , B , ID"R , N→ 1 deny , ac-
ceptl ,
φ( idp , ifnet , id衍, α , n,) =
{dm 如果 reques仲fnet , idvc ,a , n,)应当被拒绝
accept 如果 request( idp ,ifnet , id", ,a , n,) 应当被接受
(3)
函数 φ 的定义域 IDp 是由所有进程的标志构成的集合;
B = 10 , 11 ;ID,是由所有虚电路标志构成的集合;R 是由所有
资源构成的集合 ,R= IPa1a=I , 2 , … , 11 川是大于 O 的整数集
合;函数 φ 的值域是集合 1 deny , accept 1 ,其中 deny 表示拒绝
进程的资源分配请求,accept 表示接受进程的资源分配请求。
进程资源分配请求 request ( idp , ifnet , id町, α , n,) 中的虚电
路标志 iι是进程从它接收到的数据分组头中提取的虚电路
标志。虚电路标志是建立虚电路时确定的。
4 算法在Linux 操作系统中的实现
本文在基于服务元网络体系结构的虚电路结构的原型系
统[8] (圈 2) 中实现了基于虚电路的资源分配算法。图 2 中,与
客户机节点和服务器节点紧邻的路由器称为接入路由器,其他
路由器称为传输路由器。在客户机节点、接入路由器节点、传
输路由器节点以及服务器节点中的虚电路维护模块负责在客
户机节点和服务器节点之间建立、维护和撤销虚电路,并负责
更新虚电路表。在服务器节点中的资源分配监视器模块实现
了基于虚电路的资源分配算法。
匡豆豆耳』至亟圈,传输路由器 医~ß~~~îlBI
图2 原型系统体系结构
通过对 Linux 操作系统核心中与网络通信有关的系统调用
的服务函数进行修改,实现了基于虚电路的资源分配。以 send
( )和 recv( )两个系统调用为例,在 send( )和 recv( )两个系统
调用的服务函数 sys_vc_send( )和 sys_vc_rcv( )中,当需要进行
法_buff 缓存结构分配时,则执行式(3) 所示的资源分配函数。
如果执行的结果为 accept ,则为 sys_vc_send( )或 sys_vc_rcv( )
函数分配其所需的 sk_buff缓存结构;否则,返回失败。
为了测试所实现的资源分配算法,本文使用了五台高性能
的 PC 机作为客户机节点。每台客户机节点上的合法用户首
先与服务器节点建立起虚电路,然后同时运行针对服务器节点
的洪水攻击程序。测试结果表明,所实现的算法能有效对抗来
自恶意授权实体的拒绝服务攻击。
5 结束语
给出了基于虚电路的拒绝服务保护基体系结构,描述了基
于虚电路的资源分配算法。在 Linux 操作系统下面,通过修改
与网络通信有关的系统调用的服务函数,实现了基于虚电路的
资源分配。与其他只适应于主机系统的资源分配算法相比,基
于虚电路的资源、分配算法能有效对抗网络环境中由恶意授权
实体发起的拒绝服务攻击。
参考文献:
[1] MIRKOVIC J , MARTIN J , PEIHER P. A taxonomy of DDoS attacks
and DDoS defense mechanisms [ J ]. ACM Sigcomm Computer
Comm , 2∞4 ,34(2) :39-53
[2] AURA T , NlKANDER P , LEIWO J. DOS-resistant authentication
with client puzzles [ M]. Berlin: Springer , 2∞1 :170-177.
[3] YU C F , GUGOR V D. A specification and verification method for
preventing denial of service [ J]. IEEE Trans on Software Engi-
neering , 1990 ,16(6): 581-592.
[ 4 ] MILLEN J K. A resource allocation model for denial of service [ C] / /
Proc of IEEE Symposium on Security and Privacy. Oakiand , CA:
IEEE Computer Society , 1992: 137-147.
[5] LEIWO J , ZHENG Yu-liang. A method to implement a denial of
se凹ice protection base [ C ] / /Proc of the 2nd Australian Confenence
on Information Security and Privacy. London: Springer-Verlag , 1997:
90-101.
[6] 肖邦乐.基于虚电路的微通信元构架的安全机制研究 [D]. 成
都:电子科技大学, 2∞5.
[7] 曾华桑,高雨.论高速接入网技术[ J] 计算机应用, 2∞6 , 26
(8): 1751-1755.
[8] 鲁坷,左玲,曾家智.微通信元网络系统的软件架构 [J] 计算
机科学, 2006 , 33(7) :20-22.