防范dns请求报文泛洪攻击的方法及设备的制作方法

文档序号:7694077阅读:250来源:国知局
专利名称:防范dns请求报文泛洪攻击的方法及设备的制作方法
技术领域
本发明涉及网络安全技术领域,尤其涉及一种防范DNS请求报文泛洪 (DNS Query Flood)攻击的方法及设备。
技术背景域名系统(Domain Name System, DNS )是一种用于TCP/IP应用程序的 分布式数据库,提供域名与IP地址之间的转换。通过域名系统,用户进行某 些应用时,可以直接使用便于记忆的、有意义的域名,而由网络中的DNS月l 务器将域名解析为正确的IP地址。图1为DNS客户端与DNS服务器交互过程示意图。如图1所示,DNS 客户端通过向DNS月良务器发送DNS请求报文(DNS Query )获取域名对应的 IP地址。DNS服务器在接收到DNS请求报文以后,根据请求的域名进行查找, 有时还需要向上级DNS服务器请求。DNS服务器在最终得到DNS客户端请 求的域名对应的IP地址后,发送DNS响应报文(DNS Reply)通知DNS客户 端,DNS客户端就可以向此IP地址请求网络服务了。另外,在设置了 DNS代理的情形下,DNS客户端并不直接向DNS服务 器发送DNS请求报文,而是将DNS请求报文发送到DNS代理,通过DNS代 理和DNS服务器的交互获取对应的IP地址。为便于描述,在本文中,将DNS 代理和DNS服务器统称为DNS服务端设备。DNS请求报文和DNS响应报文格式如图2所示,其中,16比特(bit) 的标志字段被划分为若干子字段,参照图3,各子字段的含义如下QR是lbit字段,0表示请求报文,l表示响应报文;opcode是4bit字段,通常值为0 (标准查询),其他值为1 (反向查询) 和2 (服务器状态请求);AA是lbit字段,表示"授权回答(authoritative answer)",其值为1时表 示该域名服务器是:l受权于该域的;TC是lbit字段,表示"可截断的(truncated)",其值为1时表示信息长 度超过报文长度限制;RD是lbit字段,表示"期望递归(recursion desired)"; RA是lbit字段,表示"可用递归,,; 随后3bit必须为0;rcode是4bit字段,通常值为0 (没有差错)和3 (名字差错)。 根据协议,DNS客户端可以使用TCP或者UDP协议与域名服务器通信。 使用TCP协议进行通信的交互过程为(1 ) DNS客户端向域名服务器发起TCP协议的三次握手(2)握手成功以后,TCP连接建立;(3 ) DNS客户端向域名服务器发送DNS查询报文;(4) 域名服务器向DNS客户端回应;(5) 断开TCP连接。使用UDP协议进行通信时,DNS客户端直接向域名服务器发送DNS查 询请求,域名服务器根据请求内容做出回应。根据DNS使用承载协议(TCP/UDP )的不同,DNS请求才艮文泛洪攻击的 方式也分为两种(一) 基于TCP协议的攻击典型的攻击方式为SYN泛洪攻击。攻击者通过伪造大量的不同源IP地址 的TCPSYN报文,向服务器发起连接。服务器收到此才艮文后用SYN/ACK应 答,而此应答发出去后,不会收到ACK报文,这样便形成了一个TCP半连接。 如果攻击者发送大量这样的SYN报文,会在被攻击主机上出现大量的半连接, 消耗尽其资源,使正常的用户无法访问。针对这种攻击,目前较常见的做法是检查TCP的cookie值来判断其合法 性,最终达到对非法请求丢弃、合法请求回应的精确防范。(二) 基于UDP协议的攻击由于域名查询的过程比较耗时,攻击者通过向域名服务器发送大量DNS 请求报文,将正常用户的DNS请求报文淹没,并使域名服务器无法正常工作 而拒绝服务。采用UDP协议的DNS攻击是一种UDP泛洪攻击,由于UDP并不是面向 连接的,报文相对独立,没有相关性,因此对于这种攻击目前没有做到精确过 滤。目前较常见的攻击防范做法是检测发往特定IP或特定域(该IP/域就是 被保护的主机/域)的UDP报文的速率,如果速率超过域值则判定受到攻击, 丢弃所有UDP纟艮文。采用UDP方式的DNS攻击,目前的防范方法无法做到精确过滤当设备 检测到攻击存在时直接丟弃后续收到的所有UDP报文,这会导致被攻击报文 淹没的合法用户请求也无法得到处理,最终对所有合法用户拒绝服务。 发明内容本发明所要解决的技术问题是提供一种防范DNS请求报文泛洪攻击的方 法及设备,以丢弃非法的UDP承载的DNS请求,并使合法的UDP承载的DNS 请求能够得到回应。为解决上述技术问题,本发明提供技术方案如下一种防范DNS请求报文泛洪攻击的方法,包括DNS服务端接收DNS客户端发送的UDP承载的DNS请求报文;DNS服务端向DNS客户端发送DNS响应报文,并将所述DNS响应报文 中的TC和AA标志位置1;DNS服务端在预设时间内接收到DNS客户端发送的TCP SYN报文时, 通过TCP cookie方式检测DNS客户端的合法性。上述的方法,其中,还包括DNS服务端在预设时间内没有接收到DNS 客户端发送的TCPSYN报文时,直接确定该DNS客户端非法。上述的方法,其中,所述通过TCP cookie方式检测DNS客户端的合法性 具体包括DNS服务端向DNS客户端回应SYN/ACK报文,并将cookie填充 在所述SYN/ACK报文的seq域中;DNS服务端接收到DNS客户端回应的ACK 净艮文以后,检查所述回应的ACK报文中seq域的值是否为cookie+1,若是, 确定该DNS客户端合法,否则,确定该DNS客户端非法。上述的方法,其中,还包括DNS服务端在确定DNS客户端非法时,丢 弃该DNS客户端后续发送的所有报文。上述的方法,其中,所述DNS服务端为DNS服务器或者DNS代理。一种DNS服务端设备,包括第一 UDP模块,用于接收DNS客户端发送的UDP承载的DNS请求报文, 向DNS客户端发送DNS响应报文,并将所述DNS响应报文中的TC和AA 标志j立置1;第一TCP模块,用于接收DNS客户端发送的TCPSYN报文,向DNS客 户端回应SYN/ACK报文,并将cookie填充在所述SYN/ACK报文的seq域中, 以及接收DNS客户端回应的ACK报文;第一判断模块,用于检查所述回应的ACK报文中seq域的值是否为 cookie+l,若是,确定该DNS客户端合法,否则,确定该DNS客户端非法。一种DNS客户端设备,包括第二UDP模块,用于采用UDP协议发送DNS请求报文,并接收DNS服 务端发送的DNS响应报文;第二判断模块,用于检查所述DNS响应报文中的TC和AA标志位是否 为1,在确定所述TC和AA标志位为1时,发送重新请求消息到第二TCP模 块;第二TCP模块,用于在接收到所述重新请求消息时,采用TCP协议重新 进行请求,发送TCP的SYN报文,以及在接收到DNS服务端发送的SYN/ACK 报文时,回应TCPACK报文,并将cookie+l填充在所述TCP ACK报文的seq 域中。一种防范DNS请求报文泛洪攻击的方法,包括 DNS客户端采用UDP协议发送DNS请求报文;DNS服务端接收到所述DNS请求报文后,向DNS客户端发送DNS响应 报文,并将所述DNS响应报文中的TC和AA标志位置1;DNS客户端接收到TC和AA标志位为1的DNS响应报文以后,采用TCP 协议重新进行请求,发送TCP的SYN报文;DNS服务端在预设时间内接收到DNS客户端发送的TCP SYN报文时, 通过TCP cookie方式检测DNS客户端的合法性。与现有技术相比,本发明的有益效果是当采用UDP承载的DNS请求报文泛洪攻击发生时,相对于其他UDP泛洪攻击检测技术,本发明能有效的鉴别DNS请求的合法性,减少或者避免DNS服务器受到攻击,并确保合法的DNS请求能够得到回应。


图1为现有技术中DNS客户端与DNS服务器交互过程示意图; 图2为现有技术中DNS请求报文和DNS响应报文格式示意图; 图3为图2中16比特的标志字段的格式示意图; 图4为本发明实施例的防范DNS请求才艮文泛洪攻击的方法示意图; 图5为本发明实施例的DNS服务端设备的结构示意图; 图6为本发明实施例的DNS客户端设备的结构示意图。
具体实施方式
本发明的关键在于,将UDP承载的DNS请求报文泛洪攻击防范转化为 TCP的SYN报文泛洪攻击防范。具体地,DNS月艮务端接收到UDP承载的DNS 请求报文以后,向DNS客户端发送TC和AA标志位都为1的DNS响应报文; DNS客户端接收到这样的DNS响应报文以后,重新以TCP协议发起DNS请 求。由于那些伪造源IP的DNS请求不会重新以TCP方式发起DNS请求,这 就可以过滤大多数伪造源IP的攻击报文。然后,DNS服务端设备再通过TCP cookie方式检测DNS客户端的合法性,并响应所有合法客户端的DNS请求。为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实 施例对本发明进行详细描述。参照图4,本发明实施例的防范DNS请求报文泛洪攻击的方法主要包括 如下步骤步骤SI 、 DNS客户端采用UDP协议发送DNS请求报文;步骤S2、 DNS服务端接收到DNS请求报文以后,确定该报文以UDP承载,则向DNS客户端发送DNS响应报文,并将报文中的TC和AA标志位置1;步骤S3、DNS客户端接收到TC和AA标志位为1的DNS响应报文以后, 采用TCP协议重新进行请求,发送TCP的SYN报文;步骤S4、 DNS服务端接收到TCP SYN才艮文以后,向DNS客户端回应 SYN/ACK报文,并将cookie填充在报文的seq域中;步骤S5、 DNS客户端回应ACK报文;步骤S6、 DNS服务端接收到ACK报文以后,根据seq值进行合法性检测。 在步骤S6中,DNS服务端检查seq值是否为cookie+l ,若是,确定此DNS客户端合法,再接收到此客户发送的UDP承载的DNS请求报文时,对该请求报文进行回应。在步骤S2之后,DNS服务端如果在预设时间内没有接收到DNS客户端 发送的TCPSYN报文,或者在步骤S6中,所述s叫值不为cookie+l,则可以 确定该DNS客户端非法,丟弃该客户端后续发送的所有报文。依照上述实施例的方法,可以做到对非法DNS请求的精确过滤,保证合 法DNS请求能够正常获得服务。DNS客户端的合法性检测出来后,如果DNS服务端为DNS服务器,则 在获取到对应的IP地址后,将该IP地址通过DNS响应才艮文发送到客户端; 如果DNS服务端为DNS代理,则利用TCP代理技术,向DNS服务器进行 UDP的DNS请求,再将DNS服务器的回应以TCP方式发送到DNS客户端。在本发明的其他实施例中,在合法性检测出来后,也可以直接向DNS客 户端发送TCP的RESET报文,断开TCP连接,等待该客户端的下一次DNS 请求到达后(不必再做上述检查过程),直接进行回应。参照图5,本发明实施例的DNS服务端设备主要包括第一UDP模块、第 一TCP模块和第一判断模块,其中所述第一 UDP模块用于接收DNS客户端发送的UDP承载的DNS请求报 文,向DNS客户端发送DNS响应报文,并将所述DNS响应报文中的TC和 AA标志位置1;所述第一 TCP模块用于接收DNS客户端发送的TCP SYN报文,向DNS 客户端回应SYN/ACK报文,并将cookie填充在所述SYN/ACK报文的seq域 中,以及接收DNS客户端回应的ACK报文;所述第一判断模块用于检查所述回应的ACK报文中s叫域的值是否为 cookie+l,若是,确定该DNS客户端合法,否则,确定该DNS客户端非法。所述第一判断模块还用于在所述第一 TCP模块在预设时间内没有接收到 DNS客户端发送的TCP SYN报文时,直接确定该DNS客户端非法。参照图6,本发明实施例的DNS客户端设备主要包括第二UDP模块、第 二TCP模块和第二判断模块,其中所述第二 UDP模块用于采用UDP协议发送DNS请求才艮文,并接收DNS 服务端发送的DNS响应报文;所述第二判断模块,用于检查所述DNS响应报文中的TC和AA标志位 是否为1,在确定所述TC和AA标志位为1时,发送重新请求消息到所述第 二TCP模块;所述第二TCP模块,用于在接收到所述重新请求消息时,采用TCP协议 重新进行请求,发送TCP的SYN报文,以及在接收到DNS服务端发送的 SYN/ACK报文时,回应TCPACK报文,并将cookie+l填充在所述TCP ACK 4艮文的s叫域中。最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非限制, 本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同 替换,而不脱离本发明技术方案的精神范围,其均应涵盖在本发明的权利要求 范围当中。
权利要求
1.一种防范DNS请求报文泛洪攻击的方法,其特征在于,包括DNS服务端接收DNS客户端发送的UDP承载的DNS请求报文;DNS服务端向DNS客户端发送DNS响应报文,并将所述DNS响应报文中的TC和AA标志位置1;DNS服务端在预设时间内接收到DNS客户端发送的TCP SYN报文时,通过TCP cookie方式检测DNS客户端的合法性。
2. 如权利要求1所述的方法,其特征在于,还包括DNS服务端在预设时间内没有接收到DNS客户端发送的TCP SYN报文 时,直接确定该DNS客户端非法。
3. 如权利要求1所述的方法,其特征在于,所述通过TCP cookie方式检 测DNS客户端的合法性具体包括DNS服务端向DNS客户端回应SYN/ACK报文,并将cookie填充在所述 SYN/ACK报文的seq域中;DNS服务端接收到DNS客户端回应的ACK报文以后,检查所述回应的 ACK报文中seq域的值是否为cookie+1,若是,确定该DNS客户端合法,否 则,确定该DNS客户端非法。
4. 如权利要求2或3所述的方法,其特征在于,还包括DNS服务端在确定DNS客户端非法时,丢弃该DNS客户端后续发送的 所有报文。
5. 如权利要求1所述的方法,其特征在于 所述DNS服务端为DNS服务器或者DNS代理。
6. —种DNS服务端设备,其特征在于,包括第一 UDP模块,用于接收DNS客户端发送的UDP承载的DNS请求报文, 向DNS客户端发送DNS响应报文,并将所述DNS响应报文中的TC和AA 才示志位置1;第一TCP模块,用于接收DNS客户端发送的TCPSYN报文,向DNS客 户端回应SYN/ACK报文,并将cookie填充在所述SYN/ACK报文的s叫域中,以及接收DNS客户端回应的ACK报文;第一判断模块,用于检查所述回应的ACK报文中seq域的值是否为 cookie+l,若是,确定该DNS客户端合法,否则,确定该DNS客户端非法。
7. 如权利要求6所述的设备,其特征在于所述第一判断模块,还用于在所述第一 TCP模块在预设时间内没有接收 到DNS客户端发送的TCP SYN报文时,直接确定该DNS客户端非法。
8. —种DNS客户端设备,其特征在于,包括第二UDP模块,用于采用UDP协议发送DNS请求报文,并接收DNS服 务端发送的DNS响应报文;第二判断模块,用于检查所述DNS响应报文中的TC和AA标志位是否 为1,在确定所述TC和AA标志位为1时,发送重新请求消息到第二TCP模 块;第二TCP模块,用于在接收到所述重新请求消息时,采用TCP协议重新 进行请求,发送TCP的SYN报文,以及在接收到DNS服务端发送的SYN/ACK 报文时,回应TCPACK报文,并将cookie+l填充在所述TCP ACK报文的seq 域中。
9. 一种防范DNS请求报文泛洪攻击的方法,其特征在于,包括 DNS客户端采用UDP协议发送DNS请求报文;DNS服务端接收到所述DNS请求报文后,向DNS客户端发送DNS响应 报文,并将所述DNS响应报文中的TC和AA标志位置1;DNS客户端接收到TC和AA标志位为1的DNS响应报文以后,采用TCP 协议重新进行请求,发送TCP的SYN报文;DNS服务端在预设时间内接收到DNS客户端发送的TCP SYN报文时, 通过TCP cookie方式检测DNS客户端的合法性。
10. 如权利要求9所述的方法,其特征在于,还包括DNS服务端在预设时间内没有接收到DNS客户端发送的TCP SYN报文 时,直接确定该DNS客户端非法。
全文摘要
本发明提供一种防范DNS请求报文泛洪攻击的方法及设备。所述方法包括DNS服务端接收DNS客户端发送的UDP承载的DNS请求报文;DNS服务端向DNS客户端发送DNS响应报文,并将所述DNS响应报文中的TC和AA标志位置1;DNS服务端在预设时间内接收到DNS客户端发送的TCP SYN报文时,通过TCP cookie方式检测DNS客户端的合法性。依照本发明,能够有效的防范UDP承载的DNS请求报文对DNS服务器的泛洪攻击。
文档编号H04L29/06GK101282209SQ200810106458
公开日2008年10月8日 申请日期2008年5月13日 优先权日2008年5月13日
发明者张仲虎 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1