CN117201202A - 一种反射放大Flood攻击流量存储方法 - Google Patents
一种反射放大Flood攻击流量存储方法 Download PDFInfo
- Publication number
- CN117201202A CN117201202A CN202311469198.3A CN202311469198A CN117201202A CN 117201202 A CN117201202 A CN 117201202A CN 202311469198 A CN202311469198 A CN 202311469198A CN 117201202 A CN117201202 A CN 117201202A
- Authority
- CN
- China
- Prior art keywords
- message
- reply
- reflection
- attack
- messages
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000003321 amplification Effects 0.000 title claims abstract description 16
- 238000003199 nucleic acid amplification method Methods 0.000 title claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 description 15
- 238000004458 analytical method Methods 0.000 description 4
- 238000003745 diagnosis Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003012 network analysis Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的实施例提供了一种反射放大Flood攻击流量存储方法。所述方法包括worker线程接收到报文,查询会话哈希表和reply半表哈希表,根据查询结果将报文存储在存储列表中;若worker线程中处理时间达到预设的第三时间阈值或达到预设条件,则根据报文的长度将报文发送至对应长度范围的reflection线程;reflection线程接收到报文,若判断报文为反射攻击报文,则构建索引表;对同一目标的反射攻击报文进行磁盘存储,并将反射攻击报文对应的报文地址记录到所述索引表,释放反射攻击报文对应的存储列表空间。以此方式,可以通过多核并发无锁处理,整体性能随cpu个数增加而线性增长,实现多线程并发存储,提升存储性能,大幅节省存储空间。
Description
技术领域
本发明一般网络安全领域,并且更具体地,涉及一种反射放大Flood攻击流量存储方法。
背景技术
对于安全厂商而言,全流量存储回溯系统通常具有数据包采集、协议解码与分析、流量统计、故障诊断与性能管理等多种功能为一体的网络分析产品,能够提供高精度网络诊断分析,多层次展现网络通讯全景,有效地帮助网络管理者梳理网络应用。
反射放大Flood泛洪攻击是近年来最流行的DoS(Denial of Service,拒绝服务攻击)与DDoS(Distributed Denial of Service,分布式拒绝服务攻击)的方式之一,成为全球第三大的DDos攻击,简称反射放大攻击。反射放大攻击仍然是目前带宽消耗型DDoS 攻击的主力军,众多知名大流量DDoS 攻击事件中,都有反射放大攻击身影。
反射放大攻击的一大特点就是攻击源为可用的服务器,随着科技的发展,反射放大DDoS的攻击报文也变得多种多样,攻击者可能向不同攻击源发送各种长度的请求报文来攻击目标,使得反射放大攻击更难被识别出攻击类型。当反射泛洪攻击时,全流量存储回溯系统会因为海量的攻击而导致需要存储的内容突然骤增,而存储相对消耗性能,通常情况下全流量存储回溯系统会预先申请好足够的报文存储结构体(mbuf)来处理报文,若存储不及时导致可用mbuf无法及时释放,使得系统来不及处理正常的报文存储;另外其过大的流量易产生负载不均衡的问题。除存储外,全流量存储系统还要进行流量分析,攻击报文较多的情况下很容易导致索引性能变慢。
发明内容
根据本发明的实施例,提供了一种反射放大Flood攻击流量存储方法。本方法通过多核并发无锁处理,整体性能随cpu个数增加而线性增长,实现多线程并发存储,提升存储性能,大幅节省存储空间。
反射放大Flood攻击流量存储方法,包括:主线程配置若干个worker线程和reflection线程;所述reflection线程的数量为所述worker线程的1/2,且对应设置所述reflection线程所处理报文的长度范围;
所述worker线程接收到报文,查询会话哈希表和reply半表哈希表,根据查询结果将所述报文存储在存储列表中;
若所述worker线程中处理时间达到预设的第三时间阈值或达到预设条件,则根据所述worker线程的存储列表中报文的长度,将报文发送至对应长度范围的reflection线程;
所述reflection线程接收到报文,若判断所述报文为反射攻击报文,则构建索引表;对所述reply半表的存储列表中同一目标的反射攻击报文进行磁盘存储,并将所述反射攻击报文对应的报文地址记录到所述索引表,释放所述反射攻击报文对应的存储列表空间。
进一步地,所述查询会话哈希表和reply半表哈希表,根据查询结果将所述报文存储在存储列表中,包括:
若所述报文所属会话在所述会话哈希表中,则对所述报文进行正常流量存储,否则判断是否所述报文是否为reply报文;
若所述报文为reply报文,则查询reply半表,判断所述reply半表中是否存在所述reply报文对应的表项;若所述报文不是reply报文,则新建会话表项,对所述报文进行存储;
若所述reply半表中存在所述reply报文对应的表项,则将所述reply报文存入所述表项对应的存储列表中;若所述reply半表中不存在所述reply报文对应的表项,则在所述reply半表中新建所述reply报文对应的表项,记录所述reply报文的应用类型,将所述reply报文存入所述表项对应的存储列表中,并将关键码值映射到所述reply半表哈希表中。
进一步地,所述将所述reply报文存入所述表项对应的存储列表中,包括:
若未到达预设的第一时间阈值,则将所述reply报文存入reply半表中对应表项的通用存储列表中;
若达到预设的第一时间阈值,则将所述reply报文存入reply半表中对应表项的基于长度的存储列表中。
进一步地,若所述reply半表在预设的第二时间阈值内未收到报文,则将所述reply半表中表项的存储列表中的报文移交至reflection线程处理,删除所述reply半表中的表项,并将所述表项对应的关键码值从所述reply半表哈希表中移除。
进一步地,所述预设条件为:
所述worker线程中的reply半表中表项的存储列表的吞吐量占比超过预设的占比阈值;或
所述worker线程中任一reply半表中表项的存储列表中报文数量超过预设的第一数量阈值;或
所述worker线程中所有reply半表项的存储列表中挂载的报文总数量超过预设的第二数量阈值。
进一步地,所述方法还包括:
若所述worker线程与所述reflection线程处理的reply半表项的存储列表中挂载的报文数量之和超过预设的第三数量阈值,则将所述worker线程处理的reply半表项的存储列表中的报文移动到对应reflection线程处理的reply半表项的存储列表,并释放所述worker线程中对应存储列表的存储空间。
进一步地,所述判断所述报文为反射攻击报文,包括:
若所述报文的应用类型与已知的反射攻击存在关联关系,则所述报文为反射攻击报文;
若所述报文为tcp协议类型的reply报文,则所述报文是ack攻击报文,由ack攻击模块处理;
若所述报文为非tcp协议类型,且应用类型与已知的反射攻击不存在关联关系,则判断攻击者的IP地址是否为真实地址,若攻击者的IP地址为真实地址,则所述报文为反射攻击报文;否则所述报文为ack攻击报文,由ack攻击模块处理。
进一步地,所述索引表包括关键码值;所述关键码值中的关键码key为被攻击设备IP地址和攻击报文长度;所述关键码值中的关键值value为攻击的应用类型和对应的攻击报文列表。
进一步地,所述对所述reply半表的存储列表中同一目标的反射攻击报文进行磁盘存储,包括:
若在磁盘中存在与所述报文相同类型且相同长度的报文,则仅在磁盘中存储所述报文的首包报文的首部信息,所述报文的剩余信息仅存储data信息以及与所述首包报文的首部信息不同的diff信息;
对于源IP地址相同的报文,若存储空间超过第一阈值,则存储报文的索引信息与报文的data diff信息;若存储空间超过第二阈值,则只存储报文的索引信息;
对于源IP地址不相同的报文,当存储空间超过第一阈值时,若为reply半表首包,则存储报文的索引信息与完整的报文信息;否则存储索引信息、报文的首部diff信息与data diff信息;当存储空间超过第二阈值时,若为reply半表首包,则存储报文的索引信息与replay半表首包的首部完整信息;否则,仅存储索引信息;
其中,所述第二阈值大于第一阈值。
进一步地,所述主线程还包括一个总索引线程;所述总索引线程接收所述reflection线程定期发送的所述索引表中的索引信息,汇总每种应用类型对应当前周期内收到的所有攻击,生成汇总结果应当理解,发明内容部分中所描述的内容并非旨在限定本发明的实施例的关键或重要特征,亦非用于限制本发明的范围。本发明的其它特征将通过以下的描述变得容易理解。
附图说明
结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1示出了根据本发明的实施例的反射放大Flood攻击流量存储方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本发明保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本发明的实施例中,反射放大Flood攻击流量存储方法中,主线程初始化配置若干个worker线程和reflection线程;所述reflection线程的数量为所述worker线程的1/2,且对应设置所述reflection线程所处理报文的长度范围。并且,还需要配置一个总索引线程。
泛洪攻击通常是flood形式,故而靠包大、量大的形式让被攻击服务器达到吞吐上限而拒绝服务。此种情况通常发包以大包(1500B以上)形式,即最大包的形式存在,故而只要报文长度大于1500的报文,均由此线程处理,初始化过程申请不会浪费。且len=1500的报文,为报文最大长度,其他长度的报文也可存储,只是稍有浪费。泛洪反射攻击还有一种形式,就是故意小包(64B)发送ack攻击让机器频繁处理,这时对攻击方而言消耗资源少,靠量多达到让被攻击服务器达到吞吐上限而拒绝服务,达到攻击目的。其他场景未知攻击报文长度,且并不算特别常见,初始化即申请可能造成内存浪费,故而reflection2、reflection3、…、refletionN/2的线程为使用中申请内存,并且在攻击结束后释放内存,以节省内存空间。
在本实施例中,假设当前共有N个worker线程负责从网卡接收镜像报文,进行全流量存储分析处理。为避免出现大量反射攻击时负载不均衡,且出现报文激增导致因处理不及时导致报文无法及时释放,同时设计N/2个reflection线程专门处理反射攻击报文的存储,所述N/2个reflection线程选择与worker线程相对应的另一个numa内运行。每个reflecton线程创建固定长度r_mbuf的内存池。再设计1个总索引线程处理反射攻击报文的总体索引处理。
基于反射报文长度的线程分发处理机制的总体思路是:worker线程收到反射报文后,会在触发条件时基于报文的长度,将反射报文列表交给对应的1/2 reflection线程,在处理完存储与索引初步处理后,再将其交予总的索引处理线程。
worker线程、reflection线程、总索引线程三者的功能配置与N:N/2:1的映射关系,最后由总索引线程处理,全程无锁处理,总体性能随cpu个数增加而线性增长。
图1示出了本发明实施例的反射放大Flood攻击流量存储方法的流程图。
该方法包括:
S101、所述worker线程接收到报文,查询会话哈希表和reply半表哈希表,根据查询结果将所述报文存储在存储列表中。
所述会话哈希表用于查找会话表。会话表由多个会话组成,即完整的报文五元组(sip,dip,sport,dport,protocal),记录报文两个方向的各种信息,包括双向的报文存储列表。通过会话表存储属于正常的报文存储流程。
所述reply半表哈希表用于查找reply半表;reply半表中只有reply报文,记录的信息只有应用类型、攻击类型以及单向的存储报文的列表。Reply半表是worker线程专用于处理反射攻击报文的存储处理表。
由于所述会话表和reply半表均为表格,故均配有对应的哈希表进行查找。
在本实施例中,查询所述会话哈希表和reply半表哈希表,根据查询结果将所述报文存储在存储列表中,包括:
若所述报文所属会话在所述会话哈希表中,则对所述报文进行正常流量存储,否则判断是否所述报文是否为reply报文。
具体地,正常流量存储,即新建会话表项A-Sess-item,基于会话表项将流量存储到磁盘空间。
若所述报文为reply报文,则查询reply半表,判断所述reply半表中是否存在所述reply报文对应的表项;若所述报文不是reply报文,则新建会话表项,对所述报文进行存储。
若所述reply半表中存在所述reply报文对应的表项,则将所述reply报文存入所述表项对应的存储列表中,即将完整报文mbuf挂入到simple_half_sess->mbuf_list上;若所述reply半表中不存在所述reply报文对应的表项,则在所述reply半表中新建所述reply报文对应的表项simple_half_sess,记录所述reply报文的应用类型,将所述reply报文存入所述表项对应的存储列表中,并将关键码值映射到所述reply半表哈希表中。
worker线程仅需构建每核简单局部reply半表项,并与会话表共享使用同一每核局部的会话哈希表,reply半表表项仅包含应用类型与ack报文列表。
在本实施例中,新建所述reply报文对应的表项是构建基于时间的reply半表项目,即独立资源的A-half_reply_item。在新建reply报文对应的表项时,需要设置基于时间的第一时间阈值和第二时间阈值。将第一时间阈值作为将所述reply报文存入reply半表中对应表项的通用存储列表的时间界限。将第二时间阈值作为将所述reply半表中表项的存储列表中的报文移交至reflection线程处理的时间界限。所述第一时间阈值小于第二时间阈值。
在本实施例中,所述将所述reply报文存入所述表项对应的存储列表中,包括:
若未到达预设的第一时间阈值,则将所述reply报文存入reply半表中对应表项的通用存储列表中,即A-half_reply_item->mbuf_list=mbuf;若达到预设的第一时间阈值,则将所述reply报文存入reply半表中对应表项的基于长度len的存储列表中,即A-half_reply_item->mbuf_list_lenx=mbuf。通过将reply报文区分存储,能够提升移交至reflection线程的效率。
进一步地,若所述reply半表在预设的第二时间阈值内未收到报文,则将所述reply半表中表项的存储列表中的报文移交至reflection线程处理,删除所述reply半表中的表项,并将所述表项对应的关键码值从所述reply半表哈希表中移除。
S102、若所述worker线程中处理时间达到预设的第三时间阈值或达到预设条件,则根据所述worker线程的存储列表中报文的长度len,将报文发送至对应长度范围的reflection线程。
在本实施例中,所述第三时间阈值作为所述worker线程处理超时的界限,即当述worker线程中处理时间达到预设的第三时间阈值时,根据所述worker线程的存储列表中报文的长度,将报文发送至对应长度范围的reflection线程。
在本实施例中,若达到预设条件,则根据所述worker线程的存储列表中报文的长度,将报文发送至对应长度范围的reflection线程。
在本实施例中,预设条件包括以下三个,若满足其中一个即达到预设条件。
1)所述worker线程中的reply半表中表项的存储列表的吞吐量占比超过预设的占比阈值;例如worker线程所有simple_half_sess的mbuf吞吐量占比worker线程总流量的1/3以上。
2)所述worker线程中任一reply半表中表项的存储列表中报文数量超过预设的第一数量阈值;
3)所述worker线程中所有reply半表项的存储列表中挂载的报文总数量超过预设的第二数量阈值。
进一步地,若所述worker线程与所述reflection线程处理的reply半表项的存储列表中挂载的报文数量之和超过预设的第三数量阈值,则将所述worker线程处理的reply半表项的存储列表中的报文移动到对应reflection线程处理的reply半表项的存储列表,并释放所述worker线程中对应存储列表的存储空间。
下述通过一实施例来进一步阐述worker线程与reflection线程的报文处理的关系。
以1.1.1.1遭受的攻击而言,它遭受的2.2.2.2,3.3.3.3,4.4.4.4的多个泛洪反射攻击(len=666,len=1518),那么处理对于同一会话而言,可能出现同一会话交给多个不同的reflection线程处理。例如:1.1.1.1遭受的攻击分别被3个worker线程收到;每个会话reply半表分为:
worker1:2.2.2.2->1.1.1.1
Worker2:3.3.3.3->1.1.1.1
Worker3:4.4.4.4->1.1.1.1
每个reply半表中都记录了两次攻击,长度为666和1518。但由于同一个会话的报文并不是被同一reflection线程处理,而是基于len被处理,例如666B的报文列表,均被reflection2线程处理;1518B的均被reflection1线程处理。这样做的优势是索引快,可以迅速将同一攻击的报文迅速索引,同一次反射flood攻击中的len是相同的,可通过此方式迅速找到遭受攻击的源ip地址链接,并根据报文内容迅速定位。
S103、所述reflection线程接收到报文,若判断所述报文为反射攻击报文,则构建索引表;对所述reply半表的存储列表中同一目标的反射攻击报文进行磁盘存储,并将所述反射攻击报文对应的报文地址记录到所述索引表,释放所述反射攻击报文对应的存储列表空间。
在本实施例中,每个reflection线程分别处理固定长度的报文。构造一个(dip,len,reflection线程id)的查询表,基本上每个reflection线程只处理一个len长度的报文,按照顺序和负载均衡的方式分配线程。具体方式为:
初始化:len的分配原则,初始化时B1创建len=1518存储池,专门应对大流量的flood;BN创建len=64B存储池,专门应对小流量的flood;其他情况基于负载均衡,在使用过程中创建。
使用中:
1.假设当前报文len=1518B,则直接分配给B1reflection线程;
2.假设当前报文len=64B,则直接分配给BNreflection线程;
3.如果均不是,则是根据len选择reflection线程(按照负载均衡原则),具体如下:
(1)如果出现lenX,那么查询lenX是否有映射的refection线程id处理,如果无,则将其分配给当前最空闲的reflection线程(如果多个空闲,则分配序号最靠前的),假设id为idY,并将(len1,reflection_idY)计入到映射表中,同时创建基于lenX的存储池。
(2)在reflection线程Y的存储表中,再基于(dip,len)查找存储表项,进行后续处理。
在本实施例中,所述判断所述报文为反射攻击报文,包括:
若所述报文的应用类型与已知的反射攻击存在关联关系,则所述报文为反射攻击报文。例如,如果UDP端口为123,则为ntp反射攻击;如果UDP端口11211,则为Memcache反射攻击。
若所述报文为tcp协议类型的reply报文,则所述报文是ack攻击报文,由ack攻击模块处理;
若所述报文为非tcp协议类型,且应用类型与已知的反射攻击不存在关联关系,则判断攻击者的IP地址是否为真实地址,若攻击者的IP地址为真实地址,则所述报文为反射攻击报文;否则所述报文为ack攻击报文,由ack攻击模块处理。
通过上述能够判断出收到的reply报文的ip地址是否是真实地址,即是A伪造的ip地址,还是A通过反射服务器来进行攻击,发送攻击到受害者,还是真实的ip为服务器。因为由于tcp协议需要三次握手,故而这样会导致不会出现reply情况的伪造ip地址,不会是反射类型的攻击;对于tcp协议的reply报文,一并认为是ack攻击,交给ack模块处理。
反射攻击的一大特点就是攻击报文由于是服务器反射,服务器由于格式固定,故而通常同一类攻击的报文长度都一样,故而使用len这个特征构造索引表。
在一些实施例中,以被攻击设备的dip与攻击报文长度len为(key,value)构建info表,并根据info表构建索引表。其中,value为各种攻击应用类型以及对应的攻击报文列表。
在本实施例中,所述索引表包括关键码值;所述关键码值中的关键码key为被攻击设备IP地址和攻击报文长度;所述关键码值中的关键值value为攻击的应用类型和对应的攻击报文列表。key选择dip和len作为特征,其中dip表示这个长度的报文属于哪类应用的反射攻击;len表示长度。value: (应用类型1:应用类型1的攻击报文列表,应用类型2:应用类型2的攻击报文列表,…,应用类型N:应用类型N的攻击报文列表)。
与恶意攻击程序发出的flood报文(普通的ack攻击)不同,flood报文因为攻击ip均为合法的反射服务器ip,使得被攻击设备在收到flood攻击时,大多数场景其报文长度均是一样的,本实施例基于如上原理,reflection线程在处理过程中通过判断是否为反射攻击、并按照key:(被攻击设备ip地址,攻击报文长度),value: (应用类型1:应用1的攻击报文列表,应用类型2:应用类型2的攻击报文列表,…,应用类型N:应用类型N的攻击报文列表)方式来进行设计。选择设计报文长度进行选核,以及key值的设计,即使同一应用的不同长度的报文攻击可能被分到多reflection线程,甚至同一ip地址发来的不同长度的攻击也可能被分到多个线程处理),但是这样设计可以把同一时刻的反射攻击交予同一reflection线程处理,从而更好地判断出攻击类型,更快捷的获得同一类型此次的所有攻击报文)。
在本实施例中,对所述reply半表的存储列表中同一目标的反射攻击报文进行磁盘存储,包括:
若在磁盘中存在与所述报文相同类型且相同长度的报文,则仅在磁盘中存储所述报文的首包报文的首部信息,所述报文的剩余信息仅存储data信息以及与所述首包报文的首部信息不同的diff信息;这样可以节省大幅存储空间。相同长度的报文,同一攻击len,报文的data长度相同。
对于源IP地址相同的报文,若存储空间超过第一阈值,则存储报文的索引信息与报文的data diff信息;若存储空间超过第二阈值,则只存储报文的索引信息。源IP地址相同的报文,报文的ttl相同。
对于源IP地址不相同的报文,当存储空间超过第一阈值时,若为reply半表首包,则存储报文的索引信息与完整的报文信息;否则存储索引信息、报文的首部diff信息与data diff信息;若存储空间超过第二阈值,则存储报文的索引信息与replay半表首包的首部完整信息;
其中,所述第二阈值大于第一阈值。
下面通过一具体实施例来进一步阐述报文进行磁盘存储过程。
1.1.1.1->4.4.4.4(len=1500) 800个包 类别=ntp list reply
3.3.3.3->4.4.4.4(len=1500) 400个包 类别=ntp list reply
2.2.2.2->4.4.4.4(len=1500) 600个包 类别=ntp list reply
对于同一dip地址4.4.4.4的攻击报文,仅收到的第一个报文即1.1.1.1->4.4.4.4列表中第一个包,通过磁盘存储完整信息,其他的则存储报文首部和data的diff信息。后续的情况:
(1)若磁盘空间没有超过第一阈值:
对于源ip地址相同的情况:存储完整data信息与索引;
对于源ip地址不同的情况,存储首部diff、完整data信息,与索引信息
(2)若磁盘空间超过第一阈值:
对于源ip地址相同的情况:只存储data diff信息 与索引信息;
对于源ip地址不同的情况,reply半表首包存储完整报文;其余只存储首部diff、data diff与索引信息。
(3)磁盘空间超过第二阈值:
无论源ip地址相同还是不同,除reply半表首包完整首部(不存储data),其余均只存储索引信息,不存储任何报文信息。
对报文进行磁盘存储,同时将报文地址记录到索引表,释放mbuf空间,使多个reflection线程同时处理数据报文存储,大幅提升存储性能。
在本实施例的一些可选的实现方式中,所述主线程还包括一个总索引线程;所述总索引线程接收所述reflection线程定期发送的所述索引表中的索引信息,汇总每种应用类型对应当前周期内收到的所有攻击,生成汇总结果,形成攻击报告,建立基于被攻击ip地址的索引表,并可视化展示给用户。
根据本发明的实施例,本发明通过多核并发无锁处理,整体性能随cpu个数增加而线性增长;多线程并发存储,提升存储性能;更快识别出反射攻击,并可将同一次发出的攻击同时识别出来;基于被攻击ip地址,单独建立攻击索引表,提升dip检索性能和分析回溯功能;并能够大幅节省存储空间。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种反射放大Flood攻击流量存储方法,其特征在于,包括:主线程配置若干个worker线程和reflection线程;所述reflection线程的数量为所述worker线程的1/2,且对应设置所述reflection线程所处理报文的长度范围;
所述worker线程接收到报文,查询会话哈希表和reply半表哈希表,根据查询结果将所述报文存储在存储列表中;
若所述worker线程中处理时间达到预设的第三时间阈值或达到预设条件,则根据所述worker线程的存储列表中报文的长度,将报文发送至对应长度范围的reflection线程;
所述reflection线程接收到报文,若判断所述报文为反射攻击报文,则构建索引表;对所述reply半表的存储列表中同一目标的反射攻击报文进行磁盘存储,并将所述反射攻击报文对应的报文地址记录到所述索引表,释放所述反射攻击报文对应的存储列表空间。
2.根据权利要求1所述的方法,其特征在于,所述查询会话哈希表和reply半表哈希表,根据查询结果将所述报文存储在存储列表中,包括:
若所述报文所属会话在所述会话哈希表中,则对所述报文进行正常流量存储,否则判断是否所述报文是否为reply报文;
若所述报文为reply报文,则查询reply半表,判断所述reply半表中是否存在所述reply报文对应的表项;若所述报文不是reply报文,则新建会话表项,对所述报文进行存储;
若所述reply半表中存在所述reply报文对应的表项,则将所述reply报文存入所述表项对应的存储列表中;若所述reply半表中不存在所述reply报文对应的表项,则在所述reply半表中新建所述reply报文对应的表项,记录所述reply报文的应用类型,将所述reply报文存入所述表项对应的存储列表中,并将关键码值映射到所述reply半表哈希表中。
3.根据权利要求2所述的方法,其特征在于,所述将所述reply报文存入所述表项对应的存储列表中,包括:
若未到达预设的第一时间阈值,则将所述reply报文存入reply半表中对应表项的通用存储列表中;
若达到预设的第一时间阈值,则将所述reply报文存入reply半表中对应表项的基于长度的存储列表中。
4.根据权利要求3所述的方法,其特征在于,若所述reply半表在预设的第二时间阈值内未收到报文,则将所述reply半表中表项的存储列表中的报文移交至reflection线程处理,删除所述reply半表中的表项,并将所述表项对应的关键码值从所述reply半表哈希表中移除。
5.根据权利要求1所述的方法,其特征在于,所述预设条件为:
所述worker线程中的reply半表中表项的存储列表的吞吐量占比超过预设的占比阈值;或
所述worker线程中任一reply半表中表项的存储列表中报文数量超过预设的第一数量阈值;或
所述worker线程中所有reply半表项的存储列表中挂载的报文总数量超过预设的第二数量阈值。
6.根据权利要求1所述的方法,其特征在于,还包括:
若所述worker线程与所述reflection线程处理的reply半表项的存储列表中挂载的报文数量之和超过预设的第三数量阈值,则将所述worker线程处理的reply半表项的存储列表中的报文移动到对应reflection线程处理的reply半表项的存储列表,并释放所述worker线程中对应存储列表的存储空间。
7.根据权利要求1所述的方法,其特征在于,所述判断所述报文为反射攻击报文,包括:
若所述报文的应用类型与已知的反射攻击存在关联关系,则所述报文为反射攻击报文;
若所述报文为tcp协议类型的reply报文,则所述报文是ack攻击报文,由ack攻击模块处理;
若所述报文为非tcp协议类型,且应用类型与已知的反射攻击不存在关联关系,则判断攻击者的IP地址是否为真实地址,若攻击者的IP地址为真实地址,则所述报文为反射攻击报文;否则所述报文为ack攻击报文,由ack攻击模块处理。
8.根据权利要求1所述的方法,其特征在于,所述索引表包括关键码值;所述关键码值中的关键码key为被攻击设备IP地址和攻击报文长度;所述关键码值中的关键值value为攻击的应用类型和对应的攻击报文列表。
9.根据权利要求1所述的方法,其特征在于,对所述reply半表的存储列表中同一目标的反射攻击报文进行磁盘存储,包括:
若在磁盘中存在与所述报文相同类型且相同长度的报文,则仅在磁盘中存储所述报文的首包报文的首部信息,所述报文的剩余信息仅存储data信息以及与所述首包报文的首部信息不同的diff信息;
对于源IP地址相同的报文,若存储空间超过第一阈值,则存储报文的索引信息与报文的data diff信息;若存储空间超过第二阈值,则只存储报文的索引信息;
对于源IP地址不相同的报文,当存储空间超过第一阈值时,若为reply半表首包,则存储报文的索引信息与完整的报文信息;否则存储索引信息、报文的首部diff信息与datadiff信息;当存储空间超过第二阈值时,若为reply半表首包,则存储报文的索引信息与replay半表首包的首部完整信息;否则,仅存储索引信息;
其中,所述第二阈值大于第一阈值。
10.根据权利要求1所述的方法,其特征在于,所述主线程还包括一个总索引线程;所述总索引线程接收所述reflection线程定期发送的所述索引表中的索引信息,汇总每种应用类型对应当前周期内收到的所有攻击,生成汇总结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311469198.3A CN117201202B (zh) | 2023-11-07 | 2023-11-07 | 一种反射放大Flood攻击流量存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311469198.3A CN117201202B (zh) | 2023-11-07 | 2023-11-07 | 一种反射放大Flood攻击流量存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117201202A true CN117201202A (zh) | 2023-12-08 |
CN117201202B CN117201202B (zh) | 2024-01-02 |
Family
ID=88992826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311469198.3A Active CN117201202B (zh) | 2023-11-07 | 2023-11-07 | 一种反射放大Flood攻击流量存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117201202B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246057A (zh) * | 2017-07-10 | 2019-01-18 | 东软集团股份有限公司 | 报文转发方法、装置、转发系统、存储介质及电子设备 |
CN110071939A (zh) * | 2019-05-05 | 2019-07-30 | 江苏亨通工控安全研究院有限公司 | 针对传统ddos防火墙syn flood防护在工业网络中的改进方法 |
US20190281084A1 (en) * | 2017-11-02 | 2019-09-12 | International Business Machines Corporation | Service overload attack protection based on selective packet transmission |
CN113672397A (zh) * | 2021-10-25 | 2021-11-19 | 北京金睛云华科技有限公司 | 一种全流量存储方法、系统和设备 |
-
2023
- 2023-11-07 CN CN202311469198.3A patent/CN117201202B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109246057A (zh) * | 2017-07-10 | 2019-01-18 | 东软集团股份有限公司 | 报文转发方法、装置、转发系统、存储介质及电子设备 |
US20190281084A1 (en) * | 2017-11-02 | 2019-09-12 | International Business Machines Corporation | Service overload attack protection based on selective packet transmission |
CN110071939A (zh) * | 2019-05-05 | 2019-07-30 | 江苏亨通工控安全研究院有限公司 | 针对传统ddos防火墙syn flood防护在工业网络中的改进方法 |
CN113672397A (zh) * | 2021-10-25 | 2021-11-19 | 北京金睛云华科技有限公司 | 一种全流量存储方法、系统和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117201202B (zh) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7315892B2 (en) | In-kernel content-aware service differentiation | |
CN101094236B (zh) | 地址解析协议报文处理方法及通讯系统及转发平面处理器 | |
US8325607B2 (en) | Rate controlling of packets destined for the route processor | |
US7580351B2 (en) | Dynamically controlling the rate and internal priority of packets destined for the control plane of a routing device | |
US7020783B2 (en) | Method and system for overcoming denial of service attacks | |
CN111385235B (zh) | 一种基于动态变换的DDoS攻击防御系统和方法 | |
CN106972985B (zh) | 加速dpi设备数据处理与转发的方法和dpi设备 | |
EP1592197A2 (en) | Network amplification attack mitigation | |
CN107666473B (zh) | 一种攻击检测的方法及控制器 | |
CN1410905A (zh) | 一种全分布式的集群网络服务器系统 | |
CN111371920A (zh) | Dns前端解析方法及系统 | |
WO2020037781A1 (zh) | 一种实现服务器防攻击方法及装置 | |
WO2023125380A1 (zh) | 一种数据管理的方法及相应装置 | |
CN110913010B (zh) | 一种sip业务集群系统及实现方法 | |
US7552206B2 (en) | Throttling service connections based on network paths | |
US8601094B2 (en) | Method and computer program product utilizing multiple UDP data packets to transfer a quantity of data otherwise in excess of a single UDP packet | |
CN117201202B (zh) | 一种反射放大Flood攻击流量存储方法 | |
CN112714102A (zh) | 一种多核异构平台下SYN Flood攻击防御方法 | |
CN101383785B (zh) | 一种面向sip应用的业务流管理方法 | |
CN113114636A (zh) | 受控主机的进程流量审计方法与系统 | |
CN108377211B (zh) | 基于报文内容感知的动态规则链式递归触发方法及其系统 | |
Sanjeetha et al. | Mitigation of controller induced DDoS attack on primary server in high traffic scenarios of software defined networks | |
CN114793199A (zh) | 一种报文处理方法、装置及网络设备 | |
Gilfeather et al. | Connection-less TCP | |
CN115314297A (zh) | 一种doss攻击防御方法、装置、设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |