具体实施方式
本发明实施例提供一种分布式拒绝服务检测防御方法和网络设备,该网络设备可以为主机,也可以为路由器等,该方法包括:
统计单位时间内到达数据包的个数N,比较所述N和预置的阀值;
当所述N不大于所述预置的阀值,获取所述该单位时间内到达N个数据包的联合熵,根据至少两个单位时间内数据包的联合熵获取联合熵的平均值,根据所述单位时间内的联合熵和所述联合熵的平均值获取联合熵的波动范围;
当所述N大于所述预置的阀值,获取所述该单位时间内到达N个数据包的联合熵,比较所述该单位时间内到达N个数据包联合熵对所述联合熵的平均值的偏离是否大于所述联合熵的波动范围,如果是,则确定发生攻击。
该技术方案能够基于数据包两个或两个以上的参量的联合熵来检测DDoS攻击,避免了当攻击者通过单属性(只有一个参量)信息熵伪造源IP地址进行攻击时,检测DDoS攻击漏报率高的缺点,从而提高了检测DDoS攻击的准确率。为了更清楚的理解上述技术方案,下面结合附图详细描述本发明提供的实施例。
在实施例一中以数据包的源IP地址和跳数为参量来计算联合熵和条件熵,进行DDoS攻击的检测和防御,实践中,也可以利用数据其它有关联的参量,如:利用源IP地址、源端口、目的IP地址、目的端口、数据包的大小和跳数中的任意两个或两个以上的参量来计算联合熵和条件熵,以进行DDoS攻击的检测和防御。
参见图1所示,该分布式拒绝服务检测防御方法具体包括步骤:
101、统计单位时间内到达数据包的个数N,比较该单位时间内到达数据包的个数N和预置阀值
该单位时间可以是预置的时间,该阀值
根据客户需要或系统预先设置的,如在正常状态下单位时间内到达的数据包个数一般为X,则阀值
可以为X或为X附近的值。
如果单位时间内到达数据包的个数N小于或等于阀值
则继续步骤102,如果单位时间内到达数据包的个数N大于阀值
步骤103。
102、当单位时间内到达数据包的个数N小于或等于阀值
提取所述单位时间内到达的N个数据包中的每个数据包中的源IP地址和TTL(生存时间,Time To Live)值,根据TTL值计算跳数;
根据每个数据包的源IP地址和跳数计算所述到达的N个数据包的联合熵,以及根据至少两个这样单位时间内到达数据包的联合熵计算联合熵H的平均值Hn,然后根据这至少两个联合熵和联合熵平均值计算所述联合熵的波动范围Δh,即得到每个联合熵与联合熵的平均值的差值,这至少两个差值的平均值为所述联合熵的波动范围Δh;
其中,需要说明的是,所述的联合熵的平均值可根据不同时间段内数据包的联合熵不断更新,由此,所述的联合熵波动范围也可不断更新;
其中:联合熵为上述单位时间内到达的N个数据包中的两个或两个以上的参量同时发生的不确定性的量度,根据源IP地址和跳数计算联合熵H;联合熵为:
其中:y
i为第一个参量(如:源IP地址)的第i种取值,x
i为数据包的第二个参量(如:跳数)第i种取值,P(x
i,y
i)为所述第一个参量和所述第二个参量(如:源IP地址和跳数)分别取值为x
i和y
i的概率,n为y
i、x
i所有可能取值组合的数目,如:i的值从1到4,那么n的值为4。如果x
i为数据包的第i种跳数值,那么y
i为源IP地址的第i种取值;如果x
i为源IP地址的第i种取值,那么y
i为数据包的第i种跳数值。
103、当所述N大于所述预置的阀值,获取该单位时间内到达N个数据包的联合熵,比较该单位时间内到达N个数据包联合熵对所述联合熵的平均值的偏离是否大于所述联合熵的波动范围,即比较|H-Hn|和Δh;如果是,则确定发生攻击。进入步骤104;如果否,即:|H-Hn|≤Δh,则再进入步骤102。
其中,需要说明的是,在单位时间内达到的数据包当大于所述预置的阀值,为确定是否发生攻击所需要的联合熵的平均值可以是该方法中前述步骤中获得的所述联合熵平均值,当小于所述预置的阀值时,所需要的联合熵的平均值可以是上次该方法循环中所获得的联合熵平均值;
104、对联合熵相对于所述联合熵平均值的偏离大于所述联合熵的波动范围的单位时间内到达的数据包,过滤该单位时间内到达的数据包所对应的用户,或者对所述用户限流。
如果该单位时间内到达的数据包对应多个用户,则对这多个用户均进行限流或过滤。
计算条件熵和丢包率,并以此进行丢包,即对该数据包对应的用户进行限流,或者过滤该数据包对应的用户;
其中:对该数据包对应的用户进行限流,具体包括:限制该数据包IP对应的用户发送数据包的个数(或大小)或者过滤该数据包对应的用户。限制该数据包对应的用户发送数据包的个数,又具体包括:
根据不同跳数下源IP地址的条件熵计算得到不同跳数数据包的丢包率Dh,其中:条件熵为一个参量一定情况下另一参量不确定性的量度,条件熵为: y代表数据包的跳数值,xi代表某个源IP地址,P(xi|y)为特定跳数下某源地址出现的条件概率;
根据丢包率Dh对不同跳数的数据包进行丢包。
数据包的丢包率: 其中: 而
其中:i为所有数据包中跳数的第i种取值,Dhi为跳数为i对应的数据包的丢包率,dh为某类跳数数据包对应的条件熵变化率,H(X|y)为正在检测数据包的条件熵,Hc(X|y)为正常的数据包对应的条件熵,y代表特定的跳数值,xi代表某个源IP地址,P(xi|y)为该特定跳数下某源IP地址出现的条件概率。
实施例二,统计单位时间内到达数据包的个数N,比较单位时间内到达数据包的个数N和预置的阀值
然后收集数据包的源IP地址、数据包的跳数、数据包的大小,根据源IP地址、数据包的跳数、数据包的大小来计算该N个数据包的联合熵,此时联合熵为:
其中:y
i为源IP地址的第i种取值,x
i为数据包的跳数第i种取值,z
i为数据包的大小的第i种取值,P(x
i,y
i,z
i)为源IP地址、数据包的大小和跳数分别取值为x
i、y
i和z
i的概率,n为x
i、y
i、z
i所有可能取值组合的数目。条件熵为:
y代表数据包的跳数值,x
i代表某个源IP地址,z
i为某种数据包的大小P(x
i|y,z)为该跳数下某源地址和该种数据包的大小出现的条件概率。然后根据实施例一的方法确定是否发生攻击,如果确定发生攻击,则限制该IP对应的用户发送数据包的个数(或大小)或者过滤该IP对应的用户。
上述实施例一和实施例二能够基于数据包的不同参量(如:源IP地址和跳数)的联合熵来检测DDoS攻击,避免了攻击者伪造单属性造成漏报率高的缺点,从而提高了检测DDoS攻击的准确率,而且通过条件熵来确定丢包率,提高过滤进行DDoS攻击用户及异常流量的效率。
下面描述结合上述方法的应用实施例:
在一段时间内捕获正常流量下的数据包,获取IP报头内的属性信息(本实例中使用源IP地址和TTL差值即跳数)。经过学习计算,得到基于源地址和跳数的联合熵平均值为Hn(X,Y)=11,波动偏差(10.2~11.4)为Δh=1.2。
在检测阶段观察该到达的N个数据包的流量并且计算所要检测数据包的联合熵。在10.0-15.5秒内,得到该到达的N个数据包的联合熵H(X,Y)在(8.3,9.3)内波动。根据DDoS攻击的检测条件,
|H(X,Y)-Hn(X,Y)|≥MIN(|H(X,Y)-Hn(X,Y)|)=1.7>Δh
所以,判断10.0-15.5秒内发生DDoS攻击。
当检测到DDoS攻击发生时,采用条件熵的过滤方法对DDoS流进行限流,根据所述数据包条件熵与条件熵平均值的差值的大小将用户分为不同等级,对变化大的条件熵数据包对应的用户大幅度限流,对变化小的条件熵条件熵对应的用户小幅度限流。
条件熵H(X |y)表示特定跳数下的源地址分布特性:
其中,y代表特定的跳数值,xi代表某个源IP地址,P(xi|y)为特定跳数下某源IP地址出现的条件概率。DDoS攻击过滤依据是通过检测条件熵的变化发现特定跳数下源地址随机分布特性的变化,作为是否丢弃数据包或者丢弃多少数据包的依据。
限流幅度可根据条件熵变化比例进行量化。如果正常条件下的条件熵表示为Hc(X|y),正在检测数据包的条件熵表示为H(X|y),那么具有某类跳数数据包对应的条件熵变化率为:
假设观察数据包中包含n种跳数y={y
1,y
2,...,y
n},每种跳数对应条件熵变化率为
对上述条件熵变化率做如下归一化处理,作为跳数y
i对应的丢包率:
本发明实施例还提供一种网络设备,如图2所示,该网络设备包括:
统计比较单元201,用于统计单位时间内到达数据包的个数N,比较所述N和预置的阀值;
学习单元202,用于根据统计比较单元201的比较结果,当所述N不大于所述预置的阀值,获取所述该单位时间内到达N个数据包的联合熵,根据至少两个单位时间内数据包的联合熵获取联合熵的平均值,根据所述单位时间内的联合熵和所述联合熵的平均值获取联合熵的波动范围;
检测单元203,用于根据统计比较单元201的比较结果,当所述N大于所述预置的阀值,获取所述该单位时间内到达N个数据包的联合熵,比较所述该单位时间内到达N个数据包联合熵对所述联合熵的平均值的偏离是否大于所述联合熵的波动范围,如果是,则确定发生攻击。
该联合熵、联合熵平均值和波动范围的计算同实施例一。
所述学习单元202,如图3所示,包括:
参量提取单元2021,参量提取单元,用于分别提取所述单位时间内收集的每个数据包的两个或两个以上的参量;
联合熵计算单元2022,用于根据所述单位时间内收集每个数据包的两个或两个以上的参量计算所述单位时间内到达N个数据包的联合熵。计算方法同实施例一。
该网络设备还可以包括防御单元204,如图2所示,用于在确定发生攻击后,相对于所述联合熵平均值的偏离大于所述联合熵的波动范围的单位时间内到达的数据包,过滤该单位时间内到达的数据包所对应的用户,或者对所述用户限流。
所述防御单元204,如图4所示,包括限流单元2041,用于限制用户发送数据包的个数或大小。
该限流单元2041,如图4所示,包括:
丢包率计算单元20411,用于根据第一个参量不同取值下第二个参量的条件熵计算得到第一个参量取值不同时的数据包的丢包率Dh;条件熵和丢包率计算方法同实施例一。
丢包单元20412,用于根据所述丢包率计算单元20411得到的丢包率对第一参量取值不同时的数据包进行丢包。
上述各实施例中的第一参量和第二参量分别为源IP地址和跳数,或第一参量和第二参量分别为跳数和源IP地址。也可以为数据包其他的参量,也可以利用两个以上参量来计算联合熵及条件熵。利用数据包两个或两个以上的参量的联合熵来检测DDoS攻击,和利用条件熵来过滤用户或对用户进行限流,从而提高了检测DDoS攻击的准确率和提高了防御攻击的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory:ROM)或随机存储记忆体(Random Access Memory:RAM)等。
以上对本发明实施例所提供的分布式拒绝服务检测防御方法及网络设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。