Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR AUTHENTICATING COMMUNICATION TRAFFIC, COMMUNICATION SYSTEM AND PROTECTION APPARATUS
Document Type and Number:
WIPO Patent Application WO/2011/029357
Kind Code:
A1
Abstract:
Provided in the embodiments of the present invention are a method for authenticating communication traffic, protection apparatus and communication system, which relate to the field of communication and computer. The method includes: the authentication is performed before a transmission control protocol (TCP) packet arrives at a server, and the real source address of the transmitter of the TCP packet is confirmed, so as to determine whether the TCP packet is an attack message and whether the transmitter of the TCP packet is allowed to establish a TCP connection with the server. The present invention can effectively prevent the denial of service (DoS) attack using TCP packet, and improve communication security.

Inventors:
GAO CHENG (CN)
Application Number:
PCT/CN2010/075751
Publication Date:
March 17, 2011
Filing Date:
August 06, 2010
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
GAO CHENG (CN)
International Classes:
H04L29/06
Domestic Patent References:
WO2006077659A12006-07-27
Foreign References:
CN101170402A2008-04-30
CN101047697A2007-10-03
CN1716868A2006-01-04
Other References:
See also references of EP 2464079A4
Download PDF:
Claims:
权利要求

1. 一种认证通信流量的方法, 适用于包括至少一客户端和服务器的场 景中, 其特征在于, 包括:

接收某一客户端发送的第一 TCP分组;

判断该第一传输控制协议 TCP分組的源地址是否已经验证通过, 如 果该第一 TCP分组的源地址已经验证通过, 则转发该第一 TCP分组给 所述服务器; 如果该第一 TCP分组的源地址还没有验证通过,则发送第 二 TCP分组给所述第一 TCP分组的发送方, 该第二 TCP分组的部分字 段封装有 Cookie, 所述第二 TCP分组不包括 TCP ACK分组;

接收所述第一 TCP分组的发送方发送的第三 TCP分组,判断所述第 三 TCP分组的相应字段值是否匹配所述 Cookie, 如果所述第三 TCP分 组的相应字段值不匹配所述 Cookie, 则确定第一 TCP分组的发送方的 源地址是伪造的; 如果所述第三 TCP 分组的相应字段值匹配所述 Cookie, 则确定第一 TCP分组的发送方的源地址是真实的;

当所述第一 TCP分组的发送方重新向服务器发起 TCP连接请求时, 允许所述第一 TCP分组的发送方与服务器建立 TCP连接。

2. 如权利要求 1所述的方法, 其特征在于, 如果所述第一 TCP分组为 第一 TCP SY 分组, 则所述第二 TCP分组为第二 TCP SYN分组, 所述第 二 TCP SY 分组的 SEQ字段封装有 Cookie, 所述第三 TCP分组为 TCP SYN-ACK分组;

所述第三 TCP分组的相应字段值匹配所述 Cookie,为第三 TCP分组的 ACK字段值等于 Cookie加 1。

3. 如权利要求 1所述的方法, 其特征在于, 如果所述第一 TCP分组为 第一 TCP SYN分组,则所述第二 TCP分组为第二 TCP SYN-ACK分组,所 述第二 TCP SYN-ACK分组的 ACK字段封装有 Cookie, 所述第三 TCP分 组为 TCP RST分组;

所述第三 TCP分组的相应字段值匹配所述 Cookie,为第三 TCP分组的 SEQ字段值等于 Cookie。

4. 如权利要求 1所述的方法, 其特征在于, 如果所述第一 TCP分组为 第一 TCP SYN-ACK分组, 则所述第二 TCP分组为第二 TCP SYN-ACK分 組, 所述第二 TCP SYN-ACK的 ACK字段封装有 Cookie, 所述第三 TCP 分组为 TCP RST分组;

所述第三 TCP分组的相应字段值匹配所述 Cookie,为第三 TCP分组的 SEQ字段值等于 Cookie。

5. 如权利要求 4 所述的方法, 其特征在于, 在收到所述第一 TCP SYN-ACK分组前, 还包括:

服务器向所述客户端发送第四 TCP SYN分组,要求与客户端建立 TCP 连接 ,所述客户端收到所述第四 TCP SYN分组后,发出第一 TCP SYN-ACK 分组。

6. 如权利要求 1-5 中任一所述的方法, 其特征在于, 所述源地址为互 联网协议 IP地址。

7. 一种防护装置, 其特征在于, 包括: 获取模块、 第一判断模块、 第 二判断模块、 发送模块转发模块, 其中:

所述获取模块, 用于获取某一客户端发给服务器的第一 TCP分组; 所述第一判断模块, 用于判断所述获取模块获取的第一 TCP分组的源 地址是否已经验证通过, 如果该第一 TCP分组的发送方的源地址已经验证 通过,则表明该第一 TCP分组的发送方的源地址已经确认为真实的源地址 , 允许该第一 TCP分组的发送方与服务器建立 TCP连接,则由所述转发模块 转发该第一 TCP分组给服务器, 使该客户端与服务器直接建立 TCP连接; 如果该第一 TCP 分组的源地址还没有验证通过, 则由发送模块发送第二 TCP分组给所述客户端, 该第二 TCP分组的部分字段封装有 Cookie; 所述获取模块, 还用于接收所述客户端发来的第三 TCP分组, 交给第 二判断模块;

所述第二判断模块, 用于确定所述第三 TCP分组的相应字段值是否匹 配所述 Cookie, 如果所述第三 TCP分组的相应字段值匹配所述 Cookie, 则 确定所述客户端的源地址是真实的; 如果所述第三 TCP分组的相应字段值 不匹配所述 Cookie , 则确定所述客户端的源地址是伪造的;

如果所述客户端的源地址是真实的, 当所述获取模块接收到所述客户 端发送的第四 TCP分组时,由转发模块转发该第四 TCP分组给所述服务器。

8. 如权利要求 7所述的方法, 其特征在于, 如果所述第一 TCP分组为 第一 TCP SY 分组, 则所述第二 TCP分组为第二 TCP SYN分组, 所述第 二 TCP SY 分组的 SEQ字段封装有 Cookie, 所述第三 TCP分组为 TCP SYN-ACK分组;

所述第三 TCP分组的相应字段值匹配所述 Cookie,为第三 TCP分组的 ACK字段值等于 Cookie加 1。

9. 如权利要求 7所述的方法, 其特征在于, 如果所述第一 TCP分组为 第一 TCP SYN分组 ,则所述第二 TCP分组为第二 TCP SYN-ACK分组 ,所 述第二 TCP SYN-ACK的 ACK字段封装有 Cookie, 所述第三 TCP分组为 TCP RST分组;

所述第三 TCP分组的相应字段值匹配所述 Cookie,为第三 TCP分组的 SEQ字段值等于 Cookie。

10. 如权利要求 7所述的方法, 其特征在于, 如果所述第一 TCP分组 为第一 TCP SYN-ACK分组, 则所述第二 TCP分组为第二 TCP SYN-ACK 分组,所述第二 TCP SYN-ACK的 ACK字段封装有 Cookie, 所述第三 TCP 分组为 TCP RST分组;

所述第三 TCP分组的相应字段值匹配所述 Cookie,为第三 TCP分组的 SEQ字段值等于 Cookie。

11. 如权利要求 7所述的防护装置, 其特征在于, 所述防护装置设置在 路由设备或防火墙或服务器中。

12.一种通信系统, 其特征在于, 包括服务器、 至少一个客户端以及位 于该服务器和所述至少一个客户端之间的防护装置, 其中, 所述防护装置 为权利要求 7-11中任一所述的防护装置。

13.一种通信系统, 其特征在于, 包括服务器、 至少一个客户端以及位 于该服务器和所述至少一个客户端之间的防护装置, 其中:

所述客户端, 用于向服务器发出第一传输控制协议 TCP分组以与服务 器建立 TCP连接;

所述防护装置, 用于截获所述客户端向所述服务器发出的第一 TCP分 组, 确定所述第一 TCP分组的发送方的源地址是否经过确认, 如果所述第 组转发给所述服务器; 如果所述第一 TCP分组的发送方的源地址没有经过 确认, 则向所述第一 TCP分组的发送方发出第二 TCP分组, 该第二 TCP 分组的部分字段封装有 Cookie. 如果所述第一 TCP分组的发送方返回的第 三分组的相应字段值匹配所述 Cookie, 则确定所述第一 TCP分组的发送方 的源地址是真实的; 当接收到所述第一 TCP分组的发送方发送的第四 TCP 分组时 , 将该第四 TCP分组转发给所述服务器;

所述服务器,用于接收所述防护装置发来的第四 TCP分组,响应所述第 一 TCP分组的发送方发来的第四 TCP分组并与所述客户端建立 TCP连接。

Description:
认证通信流量的方法、 通信系统和防护装置

本申请要求于 2009 年 09 月 08 日提交中国专利局、 申请号为 CN 200910190037.4、发明名称为 "认证通信流量的方法、通信系统和防护装置" 的中国专利申请的优先权, 其全部内容通过引用结合在本申请中。

技术领域 本发明涉及通信和计算机领域, 尤其涉及一种认证通信流量的方法、 通信系统和防护装置。

背景技术 在拒绝服务(Denial of service, DoS )攻击中, 攻击者用大量消息流量 轰击受害网络或服务器。 对该流量的处理会消耗受害者的可用带宽、 CPU 能力或其他关键性系统资源, 并且最终使受害者无法服务其合法客户。 分 布式 DoS ( Distribution DoS , DDoS )攻击涉及产生同时来自多个源的仿真 网络流量, 因此其毁坏性可能更大。 在传统大带宽攻击中, 可在对输入分 组( Packet )的源因特网协议( Internet Protocol , IP )地址的统计分析的帮 助下追踪攻击的源。 然后受害者可过滤掉源自可疑 1P地址的任何流量, 并 且可利用该证据对攻击者采取法律行动。 但是, 现在许多攻击使用 "欺骗 性( Spoofed ) " IP分组——包含 IP 源地址的分组——使得受害者更难以 防止自己遭受攻击。 因此需要一种防止 DoS攻击, 提高通信安全性的方法。 发明内容 本发明实施例提供一种用于认证网络上的通信 流量的方法、 装置和系 统, 以防止 DOS攻击, 提高通信安全性。 本发明实施例解决上述技术问题的一个实施方 式是: 提供一种认证通 信流量的方法, 适用于包括至少一客户端和服务器的场景中, 包括: 接收某一客户端发送的第一传输控制协议 TCP分组; 判断该第一 TCP分组的源地址是否已经验证通过,如果该第 一 TCP分 组的源地址已经验证通过, 则转发该第一 TCP分组给所述服务器; 如果该 第一 TCP分组的源地址还没有验证通过,则发送第二 TCP分组给所述第一 TCP分组的发送方, 该第二 TCP分组的部分字段封装有 Cookie , 所述第二 TCP分组不包括 TCP ACK分组; 接收所述第一 TCP分组的发送方发送的第三 TCP分组,判断所述第三 TCP分组的相应字段值是否匹配所述 Cookie, 如果所述第三 TCP分组的相 应字段值不匹配所述 Cookie, 则确定第一 TCP分组的发送方的源地址是伪 造的; 如果所述第三 TCP分组的相应字段值匹配所述 Cookie, 则确定第一 TCP分组的发送方的源地址是真实的; 当所述第一 TCP分组的发送方重新向服务器发起 TCP连接请求时,允 许所述第一 TCP分组的发送方与服务器建立 TCP连接。 本发明实施例提供的一种防护装置, 包括: 获取模块、 第一判断模块、 第二判断模块、 发送模块及转发模块, 其中: 所述获取模块, 用于获取某一客户端发给服务器的第一传输控 制协议

TCP分组; 所述第一判断模块, 用于判断所述获取模块获取的第一 TCP分组的源 地址是否已经验证通过, 如果该第一 TCP分组的发送方的源地址已经验证 允许该第一 TCP分组的发送方与服务器建立 TCP连接,则由所述转发模块 转发该第一 TCP分组给服务器, 使该客户端与服务器直接建立 TCP连接; 如果该第一 TCP 分组的源地址还没有验证通过, 则由发送模块发送第二 TCP分組给所述客户端, 该第二 TCP分組的部分字段封装有 Cookie; 所述获取模块, 还用于接收所述客户端发来的第三 TCP分组, 交给第 二判断模块; 所述第二判断模块, 用于确定所述第三 TCP分组的相应字段值是否匹 配所述 Cookie, 如果所述第三 TCP分組的相应字段值匹配所述 Cookie, 则 确定所述客户端的源地址是真实的; 如果所述第三 TCP分组的相应字段值 不匹配所述 Cookie , 则确定所述客户端的源地址是伪造的; 如果所述客户端的源地址是真实的, 当所述获取模块接收到所述客户 端发送的第四 TCP分组时,由转发模块转发该第四 TCP分组给所述服务器。 本发明实施例还提供一种通信系统, 包括服务器、 至少一个客户端以 及位于该服务器和所述至少一个客户端之间的 防护装置, 其中: 所述客户端 ,用于向服务器发出第一 TCP分组以与服务建立行 TCP连 接; 所述防护装置, 用于截获所述客户端向所述服务器发出的第一 TCP分 组, 确定所述第一 TCP分组的发送方的源地址是否经过确认, 如果所述第 一 TCP分组的发送方的源地址是否经过确认为真实 的,则将该第一 TCP分 组转发给所述服务器; 如果所述第一 TCP分组的发送方的源地址没有经过 确认, 则向所述第一 TCP分组的发送方发出第二 TCP分组, 该第二 TCP 分组的部分字段封装有 Cookie。 如果所述第一 TCP分组的发送方返回的第 三分组的相应字段值匹配所述 Cookie, 则确定所述第一 TCP分组的发送方 的源地址是真实的; 当接收到所述第一 TCP分组的发送方发送的第四 TCP 分组时, 将该第四 TCP分组转发给所述服务器; 所述服务器, 用于接收所述防护装置发来的第四 TCP分组, 响应所述 第一 TCP分组的发送方发来的第四 TCP分组并与所述客户端建立 TCP连 接。 本发明实施例的认证通信流量的方法、 通信系统和防护装置, 在 TCP 分组到达服务器前进行认证, 确认其真实源地址, 进而确认其是否攻击报 文, 确定是否允许其与服务器建立 TCP连接, 可有效防范利用 TCP分組进 行的 DoS攻击。 附图说明 图 1为 RFC793中定义的建立 TCP连接时,通信双方同时发送 SYN报 的处理方法的流程示意图; 图 2为 TCP客户端经防护装置与 TCP服务器通信的通信系统结构示意 图; 图 3为本发明实施例的一种认证通信流量的方法 流程示意图; 图 4为本发明实施例的一种认证通信流量的方法 流程示意图; 图 5为本发明实施例的另一种认证通信流量的方 的流程示意图; 图 6为图 5所示实施例的认证通信流量的方法的流程示 图; 图 7为本发明实施例的另一种认证通信流量的方 的流程示意图; 图 8和 9为本发明实施例的另一种认证通信流量的方 的流程示意图; 图 10为本发明实施例的一种通信系统的结构示意 ; 图 11为本发明实施例的一种防护装置的结构示意 ; 图 12为本发明实施例的另一种防护装置的结构示 图。 具体实施方式 以下结合具体实施方式来说明本发明的实现过 程。 传输控制协议 /因特网协议 ( Transmission Control Protocol /Internet Protocol , TCP/IP )套件是目前在数字分组网络中最广泛使用的 输协议。 TCP是面向连接的端到端全双工协议 ,它提供了主机中的进程对之间的可靠 的进程间通信。 TCP同级设备之间的信息交换被组装成被称为片 段 ( segment ) 的数据报, 每个数据报包含一个 TCP头部, 其后是有效载荷数 据。 片段以 IP分组的形式在网络上传输。 Postel在美国国防部高级研究项目 署( DARPA )的题为《Transmission Control Protocol: DARPA Internet Program Protocol Specification (传输控制协议: DARPA因特网程序协议规范)》 的 RFC793中描述了 TCP(Transmission Control Protocol) , 此处通过引用将 RFC793包含进来。 以下给出的对 TCP的某些特征的描述是基于 RFC793中的 信息, 关于进一步的细节, 请参看相关 RFC。

TCP 片段中发送的每个八位字节被分配序列号 ( Sequence Number ) , 该序列号被接收计算机用于从分组的损坏、 损失或复制中恢复, 并对按错 误顺序递送的片段重新排序。 在接收到片段时, 接收者应该通过向发送者 返回在 TCP头部中设置了 "ACK"控制比特的分组,来给出肯定确认( ACK )。 如果发送者在超时间隔内未接收到 ACK, 则其重新发送数据。 由于 TCP是 全双工协议, 因此每个片段的头部包含用于表示序列号和确 认号

( Acknowledgment Number )的字段。 序列号字段保存片段中的第一个数据 八位字节的序列号 (或者在 SYN分组的情况下的初始序列号 ISN ( Initial Sequece, ISN ) )。 确认号字段包含片段发送者期望在 TCP连接上接收到的 下一序列号的值。 从而, 通过接收到的最后片段的最高序列号, 确认号被 确定。 为了管理由发送者发送的数据量, 接收者在返回每个 ACK 时还返回

"窗口" , 指示成功接收到的最后片段之外还可接受的序 列号的范围。 为了建立 TCP 连接,两个参与计算机使用公知的 "三次握手( three - way handshake ) " , 来同步彼此的初始序列号。 握手是基于连接建立片段的交 换, 以及初始序列号的, 其中连接建立片段在其片段头部中包含被称为

"SY " 的控制比特。 每一方还必须接收另一方的初始序列号, 并发送确 认。 为了启动连接, 计算机 Α 向计算机 B发送 SYN分组, 指示其初始序列号

( ISN )。 计算机 B以 SYN- ACK分组响应, 给出其自己的 ISN , 并确认由计 算机 A发送的 ISN (通过设置 ACK比特,并将值 ISN+1放在其确认号字段中)。 计算机 A最终以 ACK分组响应, 确认由计算机 B发送的 ISN, 从而连接被建 立。

TCP 片段头部还包含 "RST" 控制比特, 该控制比特用于有必要重置 未正确同步的 TCP连接时重置未正确同步的 TCP连接。 一般规则是, 只要连 接不处于 "己建立" 状态, 无论何时当明显不想继续当前连接的片段到达 时, RST分组(其中设置了 RST比特)就被发送。 从而, 例如, 如果处于建 立 TCP连接过程中的一台计算机接收到包含未预期 的确认号的 ACK分组, 则接收计算机将会向发送计算机返回 RST分组。 本发明的实施例中, 釆用 TCP反向检测方案防范 DoS攻击, 并且本发明 实施例中, 客户端的 TCP状态迁移符合 TCP标准 RFC793中的定义。 RFC793 中定义了建立 TCP连接时, 通信双方同时发送 TCP SY 分组的处理方式。 如图 1所示, TCP A向 TCP B发出第一 SY 分组, 该第一 SYN分组中, SEQ=100 ; TCP B向 TCP A发出第二 SYN分组, 该第二 SYN分组中, SEQ=300; TCP B收到第一 SYN分组后, 向 TCP A回复第一 SYN-ACK分组, 该第一 SYN-ACK分组中 , ACK号为 101 , TCP A至 TCP B的 TCP连接建立; TCP A收到第二 SYN分组后, 向 TCP B回复第二 SYN-ACK分组, 该第二 SYN-ACK分組中, ACK号为 301 , TCP B至 TCP A的 TCP连接建立。 如图 2所示, TCP客户端经防护装置与 TCP服务器通信, 在 TCP客户端 和 TCP服务器端之间使用防护装置进行 TCP反向检测,只有检测通过的客户 端通信数据才被允许发送给 TCP服务器端。防护装置可以设置在路由器或网 间设备或服务器上。 所述网间设备包括但不限于防火墙等中间设备 。 这里 的客户端、服务器端指的是 TCP连接意义上的客户端、服务器端, 客户端指 发起 TCP连接的通信端, 服务器端指接收 TCP连接的通信端。 如图 3所示, 为本发明实施例提供的一种认证通信流量的方 法, 适用于 包括至少一客户端和服务器的场景中, 该方法包括:

S100、 接收某一客户端发送的第一 TCP分组; 防护装置获取客户端发往服务器的第一 TCP分组,该第一 TCP分组可以 是 TCP SYN分组 , 也可以是 TCP SYN- ACK分组。

S102、 判断该第一 TCP分组的源地址是否已经验证通过, 如果该第一 TCP分组的源地址已经验证通过, 则转发该第一 TCP分组给所述服务器; 如 果该第一 TCP分组的源地址还没有验证通过, 则执行 S 104; 防护装置判断该第一 TCP分组的源地址是否已经验证通过,如果该第 一 TCP分组的源地址已经验证通过, 则转发该第一 TCP分组给所述服务器; 如 果该第一 TCP分组的源地址还没有验证通过, 则执行 S 104。 SI 04、 发送第二 TCP分组给所述第一 TCP分组的发送方, 该第二 TCP分 组的部分字段封装有 Cookie, 所述第二 TCP分组不包括 TCP ACK分组; 执 行 S106;

S106、接收所述第一 TCP分组的发送方发送的第三 TCP分组,执行 S108;

S108、判断所述第三 TCP分组的相应字段值是否匹配所述 Cookie, 如果 所述第三 TCP分组的相应字段值不匹配所述 Cookie, 则确定第一 TCP分组的 发送方的源地址是伪造的; 如果所述第三 TCP分组的相应字段值匹配所述 Cookie, 则确定第一 TCP分组的发送方的源地址是真实的, 执行 S110;

S110、 发送 TCP RST报文给所述第一 TCP分组的发送方, 执行 S112;

S112、 允许所述第一 TCP分组的发送方与服务器建立 TCP连接。 当所述第一 TCP分组的发送方重新向服务器发起 TCP连接请求时,允许 所述第一 TCP分组的发送方与服务器建立 TCP连接。 其中 S110为可选步驟, 执行完 S108后, 也可以不执行 S110, 直接转而 执行 S 112, 具体流程图如图 4所示。 优选地, 如果所述第一 TCP分组为第一 TCP SYN分组, 则所述第二 TCP 分组为第二 TCP SYN分组, 所述第二 TCP SYN分组的 SEQ字段封装有 Cookie, 所述第三 TCP分组为 TCP SYN- ACK分组; 所述第三 TCP分组的相 应字段值匹配所述 Cookie , 为第三 TCP分组的 ACK字段值等于 Cookie加 1 , 即 ACK=Cookie+l。 优选地, 如果所述第一 TCP分组为第一 TCP SYN分组, 则所述第二 TCP 分组为第二 TCP SYN- ACK分组, 所述第二 TCP SYN- ACK的 ACK字段封装 有 Cookie, 所述第三 TCP分组为 TCP RST分组; 所述第三 TCP分组的相应字 段值匹配所述 Cookie , 为第三 TCP分组的 SEQ字段值等于 Cookie , 即 SEQ=Cookie„ 优选地, 如果所述第一 TCP分组为第一 TCP SYN-ACK分组, 则所述 第二 TCP分组为第二 TCP SYN-ACK分组 , 所述第二 TCP SYN-ACK分组 的 ACK字段封装有 Cookie, 所述第三 TCP分组为 TCP RST分组; 所述第 三 TCP分组的相应字段值匹配所述 Cookie, 为第三 TCP分组的 SEQ字段 值等于 Cookie, 即 SEQ=Cookie。 优选地, 在收到所述第一 TCP SYN-ACK分组前, 还包括: 服务器向 所述客户端发送第四 TCP SYN分组,要求与客户端建立 TCP连接,所述客 户端收到所述第四 TCP SYN分組后, 发出第一 TCP SYN-ACK分組。 优选地 , 所述源地址为互联网协议 IP地址 , 所述 IP地址包括 IPv4地 址或 IPv6地址。

如图 5所示, 在本发明的一个实施例中, 防护装置截获客户端发送给服 务器端的 TCP握手第一 SYN分组, 并不按照 TCP的三次握手流程回复第一 SYN-ACK分组,而是按照 RFC793中定义的 TCP同时连接的情况向客户端发 送第二 SYN分组 , 并在该第二 SYN分组的 TCP首部中的 SEQ字段值中写入 Cookie, 即第二 SYN分组中, SEQ=Cookie。 按照 RFC793, 拥有真实源地址 的客户端会针对防护装置发送的第二 SY 分组返回第二 SYN-ACK分组, 其 中该第二 SYN-ACK分组的 ACK字段值应该为 Cookie+1 , 即第二 SYN-ACK 分组中 , ACK=Cookie+l。防护装置可以通过检测第二 SYN-ACK分组中 ACK 字段值, 实现对客户端的源地址的真实性检测。 如果第二 SYN-ACK分组中 ACK字段值不等于 Cookie+1 , 则确定第一 SYN分组的源地址是^^的, 防护 装置可以丢弃 TCP报头中源地址为该第一 SYN分组的源地址的后续 TCP分 组; 如果第二 SY -ACK分组中 ACK字段值等于 Cookie+1 , 则确定第一 SYN 分组的源地址为真实的源地址, 防护装置可以向发出该第一 S YN分组的客 户端发送 TCP RST分组以重置连接, 并将该客户端重新发送的第三 SY 分 组直接转发到服务器端, 使得该客户端和服务器端直接建立 TCP连接。 当防护装置位于路由器上, 为服务器端提供针对 DDoS攻击的防护时, 防护装置可作为路由器的一个扩展功能板, 在路由器转发数据分组之前对 数据分组的源地址进行反向检测, 丢弃掉可疑的 DDoS攻击分组。 这样做不 仅能提供对服务器端的保护, 还能有效降低通讯线路上的攻击数据分組流 量。 如图 6所示, 在本发明的一个实施例中, 在客户端和服务器之间设置 防护装置, 一种认证通信流量的方法包括:

S600、 接收第一 TCP SYN分组 当客户端希望与服务器建立 TCP连接进行通信时, 客户端向服务器发 送第一 TCP SY 分组, 位于客户端和服务器之间的防护装置获取客户 端发 给服务器的第一 TCP SY 分组。

S602、 判断该第一 TCP SY 分组的源地址是否已经验证通过, 如果该 第一 TCP SYN分组的源地址已经验证通过, 则转发该第一 TCP SY 分组 给服务器; 如果该第一 TCP SYN分组的源地址还没有验证通过, 则执行 S604; 当防护装置截获到某个客户端发来的第一 TCP SY 分组时, 判断该第 一 TCP SYN分组的源地址是否已经验证通过, 如果该第一 TCP SY 分组 的源地址已经验证通过, 则表明该第一 TCP SY 分组的源地址已经确认为 真实合法的源地址, 可以与服务器建立 TCP连接, 则防护装置转发该第一 TCP SY 分组给服务器, 使该客户端与服务器直接建立 TCP连接; 如果该 第一 TCP SYN分组的源地址还没有验证通过, 则执行 S604。

S604、 发送第二 TCP SY 分组给所述第一 TCP SYN分组的发送方, 该第二 TCP SYN分组的 SEQ字段封装有 Cookie, 即该第二 TCP SYN分组 中, SEQ=Cookie。 如果防护装置确认该第一 TCP SYN分组的源地址还没有验证通过, 则 发送第二 TCP SY 分组给所述第一 TCP SY 分组的发送方, 该第二 TCP SYN 分组的 SEQ 字段封装有 Cookie , 即该第二 TCP SYN 分组中, SEQ=Cookie, Cookie值根据第一 TCP SYN分组的发送方的五元组信息通 过哈希算法计算得出, 第一 TCP SYN分組的发送方的五元組信息包括: 第 一 TCP SYN分组的发送方的源 IP地址、 目的 IP地址、 源端口号、 目的端 口号、 TCP/UDP ( User Datagram Protocol )号。 所述第二 TCP SYN分组为 符合 RFC793定义要求的 TCP SYN分组, 表示防护装置要求与该第一 TCP SYN分组的发送方, 即客户端, 建立 TCP连接。 按照 RFC793定义, 正常 情况下, 即当第一 TCP SY 分组的发送方的源地址真实的情况下, 当第一 TCP SY 分组的发送方接收到防护装置发送的第二 TCP SY 分组,要求与 之建立 TCP连接时, 所述第一 TCP SYN分组的发送方将向所述第二 TCP SYN分组的发送方 (即防护装置)发送 SYN-ACK分组, 作为对第二 TCP SYN分组的响应。根据 RFC793的定义, 该 SYN-ACK的 ACK字段值应该 是 Cookie+1 , 即 ACK=Cookie+l。

S606、 接收所述第一 TCP SYN分组的发送方发送的 SYN-ACK分组, 执行 S608。 防护装置接收从所述第一 TCP SYN分组的发送方发送的 SYN-ACK分 组, 执行 S608以确认所述第一 TCP SYN分组的发送方发来的 SYN-ACK 分组是否符合特定要求。

S608、 判断该 SYN-ACK分组的 ACK 号是否匹配 Cookie, 如果该 SY -ACK分组的 ACK字段值匹配 Cookie, 则转 S610; 如果该 SYN-ACK 分组的 ACK字段值不匹配 Cookie , 则确定发出第一 TCP SYN分组的发送 方的源地址是伪造的。 防护装置接收到第一 TCP SYN分组的发送方 (即某个客户端)发送的 SYN-ACK分组后,判断该 SYN-ACK分组的 ACK字段值是否匹配 Cookie, 即确定该 SYN-ACK 分组的 ACK 字段值是否等于 Cookie+1 , 如果该 SYN-ACK分组的 ACK字段值等于 Cookie+1 , 则表明第一 TCP SYN分组 的发送方的源地址是真实的,执行 S610; 如果该 SYN-ACK分組的 ACK字 段值不等于 Cookie+1 ,则表明第一 TCP SY 分组的发送方的源地址是伪造 的。

S610、 发送 TCP RST分组给所述第一 TCP SYN分组的发送方 当确定第一 TCP SYN分组的发送方的源地址真实时, 防护装置发送 TCP RST分组给所述第一 TCP SY 分组的发送方, 重置该第一 TCP SYN 分组的发送方要求建立的 TCP连接。

S612、 允许所述第一 TCP SY 分组的发送方与服务器建立 TCP连接 所述第一 TCP SYN分组的发送方收到防护装置发送到 TCP RST分组 后, 向服务器发送第三 TCP SYN分组,要求与服务器建立 TCP连接。 防护 装置获取所述第三 TCP SY 分组后, 确认该第三 TCP SYN分组的源地址 已经验证通过, 是真实的源地址, 则将客户端重新发送的第三 TCP SYN分 组直接转发到服务器, 使得客户端和服务器建立 TCP连接。 如图 7所示, 本发明的另一种实施例中, 在客户端和服务器之间设置 防护装置, 该方法包括:

S700、 接收第一 TCP SYN分组 当客户端希望与服务器建立 TCP连接进行通信时, 客户端向服务器发 送第一 TCP SY 分组 , 位于客户端和服务器之间的防护装置获取客户 端发 给服务器的第一 TCP SYN分组。

S702、 判断该第一 TCP SY 分组的源地址是否已经验证通过, 如果该 第一 TCP SYN分组的源地址已经验证通过, 则转发该第一 TCP SYN分组 给服务器; 如果该第一 TCP SYN分组的源地址还没有验证通过, 则执行 S704。 当防护装置截获到某个客户端发来的第一 TCP SYN分组时, 判断该第 一 TCP SYN分组的源地址是否已经验证通过, 如果该第一 TCP SYN分组 的源地址已经验证通过, 则表明该第一 TCP SYN分组的源地址已经确认为 真实合法的源地址, 可以与服务器建立 TCP连接, 则防护装置转发该第一 TCP SY 分组给服务器, 使该客户端与服务器直接建立 TCP连接; 如果该 第一 TCP SY 分组的源地址还没有验证通过, 则执行 S704。

S704、 发送 SY -ACK分组给所述第一 TCP SYN分组的发送方, 该 SY -ACK分组的 ACK字段封装有 Cookie, 即, 该 SYN-ACK分组中, ACK=Cookie; 执行 S706。 如果防护装置确认该第一 TCP SYN分组的源地址还没有验证通过, 则 发送 SYN-ACK分组给所述第一 TCP SYN分组的发送方, 该 SYN-ACK分 组的 ACK字段封装有 Cookie, 即, 该 SYN-ACK分组中, ACK=Cookie; 该 Cookie值不等于第一 TCP SYN分组的 SEQ字段值加 1 , Cookie值根据 第一 TCP SYN分组的发送方的五元组信息通过哈希算法计 算得出, 第一 TCP SYN分组的发送方的五元组信息包括:第一 TCP SYN分组的发送方的 源 IP地址、 目的 IP地址、 源端口号、 目的端口号、 TCP/UDP号。 正常情 况下, 即当第一 TCP SYN分组的发送方的源地址真实的情况下, 当第一 TCP SY 分组的发送方接收到防护装置发送的 SY -ACK 分组, 该 SY -ACK分組的 ACK字段值应该等于第一 TCP SY 分組的 SEQ字段值 加 1 , 然而, 由于防护装置向该第一 TCP SYN分组的发送方发送到所述 SYN-ACK分组的 ACK值不等于第一 TCP SYN分组的 SEQ字段值加 1 , 而是等于 Cookie, 该第一 TCP SYN分组的发送方将会发送 TCP RST分组 以重置 TCP连接。 当该第一 TCP SYN分组的发送方的源地址真实时, 该 TCP RST分组的 SEQ字段值应该等于 Cookie。

S706、 接收所述第一 TCP SYN分组的发送方发送的 RST分组, 执行 S708。 防护装置接收从所述第一 TCP SY 分组的发送方发送的 TCP RST分 组, 执行 S708以确认所述第一 TCP SYN分组的发送方发来的 TCP RST分 组是否符合特定要求。

S708、 判断所述 TCP RST分组的 SEQ值是否匹配所述 Cookie, 如果 所述 TCP RST分组的 SEQ字段值不匹配所述 Cookie,则确定第一 TCP SYN 分组的发送方的源地址是伪造的;如果所述 TCP RST分组的 SEQ字段值匹 配所述 Cookie, 则确定第一 TCP SYN分组的发送方的源地址是真实的, 执 行 S710。 防护装置接收到第一 TCP SYN分组的发送方发送的 TCP RST分组后, 判断该 TCP RST分组的 SEQ值是否匹配 Cookie , 即确定该 TCP RST分组 的 SEQ字段值是否等于 Cookie, 如果该 TCP RST分组的 SEQ字段值等于 Cookie,则表明第一 TCP SYN分组的发送方的源地址是真实的 ,执行 S710; 如果该 TCP RST分组的 SEQ字段值不等于 Cookie, 则表明第一 TCP SYN 分组的发送方的源地址是伪造的。

S710、 当所述第一 TCP SYN分组的发送方重新向服务器发起 TCP连 接请求时, 防护装置允许所述第一 TCP SYN分组的发送方与服务器建立 TCP连接。 所述第一 TCP SY 分组的发送方向服务器发送第二 TCP SYN分组, 要求与服务器建立 TCP连接。 防护装置截获所述第二 TCP SYN分组后,确 认该第二 TCP SYN分组的源地址已经验证通过 , 是真实的源地址 , 则将客 户端重新发送的第二 TCP SY 分組直接转发到服务器, 使得客户端和服务 器建立 TCP连接。

如图 8所示, 在本发明的一个实施例中, 在客户端和服务器之间设置 防护装置, 在一种场景中, 服务器向某一客户端发起 TCP连接请求, 即服 务器向某一客户端发送第一 TCP SY 分组, 假设该 TCP SY 分组的 SEQ=S, 其中, S为任意值; 如果该 TCP客户端不是攻击源, 即, 该 TCP 客户端的源地址是真实的, 那么, 根据 RFC793, 该 TCP客户端将针对服 务器发送的第一 TCP SYN 分组, 回复第一 SY -ACK 分组, 该第一 SY -ACK分组中 SEQ=S,, ACK=S+1 , S,为任意值。 当然, 该第一 SYN-ACK分组也可能是攻击者发出的 DoS攻击报文。 客户端向服务器发送的第一 SYN-ACK分组在到达服务器前被防护装 置获取。 由于防护装置并不获取从服务器发往客户端的 分组, 而是仅仅获 取从客户端发往服务器的分组, 因此, 当防护装置获取客户端向服务器发 送的第一 SYN-ACK分组时,防护装置需确认该第一 SYN-ACK分组的源地 址是否真实, 如图 9所示, 为本发明实施例的另一种认证通信流量的方法 的流程示意图, 该方法包括:

S900、 接收第一 SYN-ACK分组 防护装置获取客户端发送到第一 SYN-ACK分组。

S902、 判断该第一 SYN-ACK分组的源地址是否已经验证通过, 如果 该第一 SYN-ACK分组的源地址已经验证通过, 则转发该第一 SYN-ACK 分组给服务器; 如果该第一 SYN-ACK分组的源地址还没有验证通过, 则 执行 S904。 当防护装置截获到某个客户端发来的第一 SYN-ACK分组时, 判断该 第一 SYN-ACK分组的源地址是否已经验证通过, 如果该第一 SYN-ACK 分组的源地址已经验证通过, 则表明该第一 SYN-ACK分组的源地址已经 确认为真实合法的源地址, 可以与服务器建立 TCP连接, 则防护装置转发 该第一 SYN-ACK分组给服务器,使该客户端与服务器直 建立 TCP连接; 如果该第一 SYN-ACK分组的源地址还没有验证通过, 则执行 S904。

S904、 发送第二 SYN-ACK分组给所述第一 SYN-ACK分组的发送方, 该第二 SYN-ACK分组的 ACK字段封装有 Cookie, 即, 该第二 SYN-ACK 分组中, ACK=Cookie; 执行 S906。 如果防护装置确认该第一 SYN-ACK分组的源地址还没有验证通过, 则发送第二 SYN-ACK分组给所述第一 SYN-ACK分组的发送方, 该第二 SYN-ACK分组的 ACK字段封装有 Cookie , 即该第二 SYN-ACK分组中 , ACK=Cookie; SEQ=S+1 , 当然 SEQ也可以是其他任意值。, Cookie值才艮据 第一 TCP SYN 分组的发送方的五元组信息通过哈希算法计算 得出, 第一 TCP SY 分组的发送方的五元组信息包括:第一 TCP SY 分组的发送方的 源 IP地址、 目的 IP地址、 源端口号、 目的端口号、 TCP/UDP号 正常情况下, 即当第一 SYN-ACK分组的发送方的源地址真实的情况 下, 第一 SYN-ACK分组的发送方会接收到对方 (比如服务器)发送的第 一 ACK分组,该第二 ACK分组的 ACK字段值应该等于第一 SYN-ACK分 组的 SEQ字段值加 1 , 然而, 由于防护装置向该第一 SYN-ACK分组的发 送方发送了第二 SYN-ACK分组, 该第二 SYN-ACK分组的 ACK值不等于 第一 SYN-ACK分組的 SEQ 值加 1 , 而是等于 Cookie, 因此, 该第一 SYN-ACK分组的发送方将会发送 TCP RST分组以重置 TCP连接。 当该第 一 SYN-ACK分组的发送方的源地址真实时,该 TCP RST分组的 SEQ字段 值应该等于 Cookie。

S906、 接收所述第一 SYN-ACK分组的发送方发送的 RST分组, 执行 S908。 防护装置接收从所述第一 SYN-ACK分组的发送方发送的 TCP RST分 组, 执行 S908以确认所述第一 SYN-ACK分组的发送方发来的 TCP RST 分组是否符合特定要求。

S908、 判断所述 TCP RST分组的 SEQ字段值是否匹配所述 Cookie, 如果所述 TCP RST分组的 SEQ 字段值不匹配所述 Cookie, 则确定第一 SYN-ACK分组的发送方的源地址是伪造的;如果 述 TCP RST分组的 SEQ 字段值匹配所述 Cookie, 则确定第一 SYN-ACK分组的发送方的源地址是 真实的, 执行 S910。 防护装置接收到第一 SYN-ACK分组的发送方发送的 TCP RST分组后 , 判断该 TCP RST分组的 SEQ字段值是否匹配 Cookie, 即确定该 TCP RST 分组的 SEQ字段值是否等于 Cookie, 如果该 TCP RST分组的 SEQ字段值 等于 Cookie, 则表明第一 SY -ACK分组的发送方的源地址是真实的, 执 行 S310; 如果该 TCP RST分组的 SEQ字段值不等于 Cookie, 则表明第一 SY -ACK分组的发送方的源地址是伪造的。

S910、 当所述第一 SYN-ACK分组的发送方重新向服务器发出 TCP分 组时, 防护装置允许所述第一 SYN-ACK分组的发送方与服务器建立 TCP 连接。 所述第一 SYN-ACK分组的发送方向服务器发送第三 SYN-ACK分组, 要求与服务器建立 TCP 连接。 该第三 SYN-ACK 分组中, SEQ=S,, ACK=S+1。 防护装置截获所述第三 SYN-ACK 分组后, 确认该第三 SYN-ACK分組的源地址已经验证通过, 是真实的源地址, 则将客户端重新 发送的第三 SYN-ACK分组直接转发到服务器, 使得客户端和服务器建立 TCP连接。

本发明实施例还提供一种通信系统, 如图 10所示, 该通信系统包括月良 务器、 至少一个客户端以及位于该服务器和所述至少 一个客户端之间的防 护装置, 其中: 所述客户端 ,用于向服务器发出第一 TCP分组以与服务器建立 TCP连 接; 所述防护装置, 用于截获所述客户端向所述服务器发出的第一 TCP分 组, 确定所述第一 TCP分组的发送方的源地址是否经过确认, 如果所述第 组转发给所述服务器; 如果所述第一 TCP分组的发送方的源地址没有经过 确认, 则向所述第一 TCP分组的发送方发出第二 TCP分组, 该第二 TCP 分组的部分字段封装有 Cookie。 如果所述第一 TCP分组的发送方返回的第 三分组的相应字段值匹配所述 Cookie, 则确定所述第一 TCP分组的发送方 的源地址是真实的; 当接收到所述第一 TCP分组的发送方发送的第四 TCP 分组时, 将该第四 TCP分组转发给所述服务器; 所述服务器, 用于接收所述防护装置发来的第四 TCP分组, 响应所述 第一 TCP分组的发送方发来的第四 TCP分组并与所述客户端建立 TCP连 接。 具体地, 所述防护装置的结构如图 11所示, 包括获取模块 1101、 第一 判断模块 1102、 第二判断模块 1103、 发送模块 1104、 重置模块 1106及转 发模块 1107, 其中: 所述获取模块 1101 , 用于获取某一个客户端发给服务器的第一 TCP分 组; 所述第一判断模块 1102,用于判断所述获取模块 1101获取的第一 TCP 分组的源地址是否已经验证通过, 如果该第一 TCP分组的源地址已经验证 通过, 则表明该第一 TCP分组的源地址已经确认为真实的源地址, 则由所 述转发模块 1107转发该第一 TCP分组给服务器,使该客户端与服务器直接 建立 TCP连接; 如果该第一 TCP分组的源地址还没有验证通过, 则由发送 模块 1104发送第二 TCP分组给所述客户端, 该第二 TCP分组的部分字段 封装有 Cookie。 按照 RFC793定义, 如果该客户端的源地址是真实的, 当 该客户端接收到发送模块 1104发送的第二 TCP分组,所述客户端将向所述 第二 TCP分组的发送方 (即防护装置)发送第三 TCP分组, 作为对第二 TCP分组的响应。 根据 RFC793的定义, 该第三 TCP分组的相应字段值应 该匹配所述 Cookie。 所述获取模块 1101 , 还用于接收所述客户端发来的第三 TCP分组, 并 交给第二判断模块 1 103; 第二判断模块 1103, 用于确定第三 TCP分组的相应字段值是否匹配所 述 Cookie, 如果第三 TCP分组的相应字段值匹配所述 Cookie, 则表明所述 客户端的源地址是真实的; 如果第三 TCP 分组的相应字段值不匹配所述 Cookie, 则表明所述客户端的源地址是伪造的。 如果所述客户端的源地址是真实的, 则重置模块 1106向所述客户端发 送 TCP RST分组以重置该客户端要求建立的 TCP连接。 当获取模块 1101接收到所述客户端发送的第四 TCP分组时,由转发模 块 1107转发该第四 TCP分组给服务器, 使得客户端和服务器建立 TCP连 接。 在该实施例中, 重置模块 1106并非必需, 防护装置中也可以省略该重 置模块 1106, 省略重置模块 1106的实施例如图 12所示, 在省略重置模块 1106时,发出第一 TCP分组的客户端的源地址如果真实,在 TCP连接超时 时,会再次发送第四 TCP分组, 当获取模块 1101接收到所述客户端发送的 第四 TCP分组时, 由转发模块 1107转发该第四 TCP分组给服务器, 使得 客户端和服务器建立 TCP连接。 在上述通信系统和防护装置中, 优选地, 如果所述第一 TCP分组为第一 TCP SYN分组, 则所述第二 TCP 分组为第二 TCP SYN分组, 所述第二 TCP SYN分组的 SEQ字段封装有 Cookie, 所述第三 TCP分组为 TCP SYN-ACK分组; 所述第三 TCP分组的相 应字段值匹配所述 Cookie , 为第三 TCP分组的 ACK字段值等于 Cookie加 1 , 即 ACK=Cookie+l。 优选地, 如果所述第一 TCP分组为第一 TCP SYN分组, 则所述第二 TCP 分组为第二 TCP SYN-ACK分组, 所述第二 TCP SYN-ACK的 ACK字段封装 有 Cookie, 所述第三 TCP分组为 TCP RST分组; 所述第三 TCP分组的相应字 段值匹配所述 Cookie , 为第三 TCP分组的 SEQ字段值等于 Cookie , 即 SEQ=Cookie„ 此时并不需要重置模块 1106, 即并不需要防护装置发送 TCP RST分组来重置 TCP连接, 而是由第一 TCP分组的发送方发送到 TCP RST分 組重置 TCP连接。 优选地, 如果所述第一 TCP分组为第一 TCP SYN-ACK分组, 则所述 第二 TCP分組为第二 TCP SYN-ACK分組,所述第二 TCP SYN-ACK的 ACK 字段封装有 Cookie, 所述第三 TCP分组为 TCP RST分组; 所述第三 TCP 分组的相应字段值匹配所述 Cookie, 为第三 TCP分组的 SEQ字段值等于 Cookie, 即 SEQ=Cookie。 此时并不需要重置模块 1106, 即并不需要防护装 置发送 TCP RST分组来重置 TCP连接, 而是由第一 TCP分组的发送方发 送到 TCP RST分组重置 TCP连接。 优选地, 在收到所述第一 TCP SYN-ACK分组前, 还包括: 服务器向 所述客户端发送第四 TCP SY 分组,要求与客户端建立 TCP连接,所述客 户端收到所述第四 TCP SYN分组后, 发出第一 TCP SYN-ACK分组。 优选地, 所述源地址为互联网协议 IP地址, 所述 IP地址包括 IPv4地 址或 IPv6地址。 本发明的以上实施例中 , 所述的源地址为 IP地址 , 可以是 IPv4地址或 IPv6地址。 本发明实施例的认证通信流量的方法、 通信系统和防护装置, 在 TCP 分组到达服务器前进行认证, 确认其真实源地址, 进而确认其是否攻击报 文, 确定是否允许其与服务器建立 TCP连接, 可有效防范利用 TCP分组进 行的 DoS攻击, 提高通信安全性。 通过以上的实施方式的描述, 所属领域的技术人员可以清楚地了解到 本发明可借助软件加必需的通用硬件平台的方 式来实现, 当然也可以通过 硬件, 但很多情况下前者是更佳的实施方式。 基于这样的理解, 本发明的 体现出来, 该计算机软件产品存储在一个存储介质中, 包括若千指令用以 使得一台计算机设备(可以是个人计算机, 服务器, 或者网络设备等)执 行本发明各个实施例所述的方法。 以上所述, 仅为本发明较佳的具体实施方式, 但本发明的保护范围并 不局限于此 , 任何熟悉本技术领域的技术人员在本发明揭露 的技术范围和 不脱离本发明的技术思想范围内, 可轻易想到的变化或替换, 都应涵盖在 本发明的保护范围之内。 因此, 本发明的保护范围应该以权利要求的保护 范围为准。