设置路由器门限值 预防DDoS攻击
本文提出了一种以服务器为中心的预防服务器遭受分布式“拒绝服务”(DDoS)攻击的方法,它对上游路由器向服务器发送的分组数据的速率进行限制,使之对服务器的访问数据量不会超过设计限值。
一、预防DDoS攻击原理
在分布式“拒绝服务”(DDoS)的攻击过程中,一群恶意的主机或被恶意主机感染的主机将向受攻击的服务器发送大量的数据。在这种情况下,靠近网络边缘的网络节点将会变得资源枯竭。原因有二:一是靠近服务器的节点通常在设计时只要求处理少量的用户数据; 二是由于数据在网络核心区的聚集使处于边缘的节点会接收更多的数据。此外,服务器系统本身也很容易受到攻击,在极度超载的情况下会瘫痪。
DDoS攻击被视为一种资源管理问题。本文的目的就是要保护服务器系统在全局性网络中不会收到过量的服务请求。当然,这种机制也可以很容易地变为对网络节点的保护。为此,必须采取一种预防性措施:在攻击性数据包聚集到使服务器瘫痪之前,在传送路径上的路由器中对流量进行调节,避免攻击的发生。具体实现机制是要在与服务器有数级距离的上游路由器上设置门限值,只有在这个门限值以内的数据量可以通过路由器,而其他数据将被放弃或路由至其他路由器。
这种防御系统中的一个主要因素是各个路由点输出“适当”的数据量。“适当”必须视当时的需求分配而定,因此服务器与网络之间要进行动态协商。本文中的协商方法由服务器(S)发起,如果服务器在低于设计容量(Us)的情况下运行,则不需要设置门限值;如果服务器的负载(Ls)超过了设计容量,则可以在服务器的上游设置门限值来进行自我保护。此后,如果当前的门限值不能使S的负载低于Us,则应降低门限值;反之,如果Ls
很显然,不可能要求保留所有网络服务器的状态信息,因为这样会造成状态信息爆炸。但按需求选择保护机制是可行的,这一观点是基于DDoS攻击是一种个别现象而非普遍情况的假设。在任何时间段内,我们认定只有少数的网络受到攻击,大部分网络在“健康”状态下运行。此外,恶意攻击者通常选择那些访问用户最多的“主要站点”攻击,这些站点就可以利用以下的网络结构来保证自身的安全。
二、系统的模式
本文提及的所有数据量和服务器负载量的单位均为 kbps。系统网络拓扑图如图1所示。本文给出了网络模型G=(V,E),其中V代表一系列节点,E表示边缘。所有的叶状节点均为主机和数据来源。内部节点为路由器,路由器不会产生数据但可以接收来自主机的数据或转发来自其他路由器的数据。R表示内部路由节点,所有的路由器均假设是可以信任的。主机H=V-R,被分为普通的正常用户Hg和恶意用户Ha,E是网络链路模型,默认为双向。
叶形节点V被当作目标服务器S。正常用户以[0,rg]的速度将数据包发送到S。恶意攻击者则以[0,ra]的速度向S发送数据包,从原则上讲可以根据用户通常如何访问S(假设rg
当S受到攻击时,它会启动前面谈到的门限值防护机制。为了便于表示,假设一个超载的服务器仍然能够启动防护机制,因此没有必要在每台路由器上均设置门限值。R(k)表示与S相距k层的路由器或短于k层的路由器,但它们均直接与主机相连。
图中的方块节点表示主机,圆形节点代表路由器。最左侧的主机为目标服务器S,R(3)中的路由器为图中绿色的部分,请注意R(3)中最下层的路由器与S只相隔两层,之所以将其包括在内是因为它与主机直接相连。
三、门限值算法
在图1的例子中,令每台主机上的数字(S除外)减去当前主机向S发送数据的速率。设Ls=18且Us=22,发往S的负载超出了Us,因此将在S处启动门限值。算法运行结束之后,S确定门限值为6.25并将此速率定制到R(3)的各个路由器中。在图1中路由器上方的数字表示到达S的数据速率,下方括号中的数字表示数据传递的速率(经过调节后的)。经过调节后S处的负载限制到了20.53,R(3)中经过调节的速率是服务器负载的公平值。
目前为止仅讨论了如何使用基本的门限值算法,R(k)将随k的增加而快速增加。因此如果某些路径没有受到攻击,则这些路径上的路由器资源就会造成浪费。如果位于S和R(k)之间的路由器可以监视通向S的分组数据速率,则可以在不影响性能的前提下使情况得到改善。
图2为图1中在S和R(3)之间引入了监视路由器后的方式。请注意,图中R(3)所属的三个路由器的门限值被取消,因为在这些路径上并没有任何攻击。
四、考核测量标准
性能测量的一个基本指标是门限值能在多大程度上防DDoS攻击。除了基本指标,还必须考虑安装这一机制的成本。因此,可采用下述评估标准:
1.服务器中普通用户的数量;
2.保护S时需要介入的路由器数量;
3.针对用户需求变化的应变能力。
一般来讲,我们认为攻击者比普通用户的攻击性更强。但是某个恶意的攻击能使其他大量的主机参与到恶意攻击中来,虽然每个主机看上去像是一般的普通用户,但它们加在一起仍然会造成DDoS攻击。从本质上说,防御此类攻击比较困难。
在实际布置此类防护机制时必须遵守几点要求。首先,必须保证门限值的可靠性,否则,机制本身就可能成为攻击点。为了保证可靠性,门限值消息在被边缘路由器接纳到网络中时,必须先进行验证。第二,必须保证这些消息能够安全地从发起点到达目的点。由于门限值消息的发送量很小,其鉴权和传输优先性应该可以接受,而且,由于控制方法必须收到反馈,服务器可能会在瞬时超载,为了确保该调节机制仍能运行,可以使用协处理器或帮助设备。第三,门限值保护机制可能不会在整个网络中得到支持,但只要受攻击的路由上有一台路由器支持此机制就行。
原作者:薛华 李祥和