CN200480005668.X
2004.03.03
CN1954545A
2007.04.25
授权
有权
授权|||实质审查的生效|||公开
H04L9/32(2006.01); H04L12/56(2006.01)
H04L9/32
思科技术公司;
丹·图伊图; 盖伊·帕兹; 耶赫尔·夏特恩; 赖费尔·察蒂卡罗欧
美国加利福尼亚州
2003.03.03 US 60/451,601
北京东方亿思知识产权代理有限责任公司
王怡
一种用于认证通信流量的方法包括截取根据由预定通信协议所指定的握手程序在网络(26)上从源地址定向到目标计算机(22)的打开连接的请求。偏离指定的握手程序的对所述请求的回复被发送到所述源地址。来自所述源地址的对所述回复的响应被分析,以评估所述源地址的合法性。在基于评估确定所述源地址合法时,目标计算机被允许完成所述握手程序,以便打开与所述源地址的连接。
1. 一种用于认证通信流量的方法,包括:截取根据由预定通信协议所指定的握手程序在网络上从源地址定向到目标计算机的打开连接的请求;向所述源地址发送偏离指定的握手程序的对所述请求的回复;分析来自所述源地址的对所述回复的响应,以评估所述源地址的合法性;以及在根据评估确定所述源地址合法时,允许所述目标计算机完成所述握手程序,以便打开与所述源地址的连接。2. 如权利要求1所述的方法,其中所述协议包括传输控制协议(Transmission Control Protocol,TCP),并且其中所述握手程序包括TCP三次握手。3. 如权利要求2所述的方法,其中截取所述请求包括截取TCP SYN分组,并且其中发送所述回复包括发送TCP ACK分组。4. 如权利要求1-3中任何一条所述的方法,其中截取所述请求包括截取第一输入分组,该第一输入分组包括一个字段,该字段指示所述第一输入分组在从所述源地址发送出来之后,经过的跳的数目;并且对出现在所述第一输入分组中的所述字段的第一个值做出记录,以及其中,分析所述响应包括接收来自所述源地址的第二输入分组;从所述第二输入分组中读取所述字段的第二个值,该值指示所述第二输入分组经过的跳的数目;并比较所述字段的第一个值与第二个值,以便评估所述源地址的合法性。5. 如权利要求4所述的方法,其中做出所述记录包括对输出分组中的所述字段的第一个值进行编码,发送所述回复包括向所述源地址发送所述输出分组,以使编码后的第一个值被包含在所述第二输入分组中。6. 如权利要求4所述的方法,其中所述第一、第二和第三分组是因特网协议(Intemet Protocol,IP)分组,并且所述字段包括所述IP分组的头部中的生存时间(Time-To-Live,TTL)字段。7. 如权利要求6所述的方法,其中所述协议包括传输控制协议(Transmission Control Protocol,TCP),对所述第一个值进行编码包括对所述第二分组的TCP头部中的确认号字段中的TTL字段的第一个值进行编码。8. 如权利要求1-3中任何一条所述的方法,其中截取所述请求包括截取包括序列号的第一分组,以及其中发送所述回复包括根据所述协议向所述源地址发送第二分组,确认所述第一分组并包含基于所述序列号的确认号,以及分析所述响应包括如果所述源地址响应所述第二分组,则认定所述源地址不合格。9. 如权利要求8所述的方法,其中分析所述响应包括如果所述源地址重新发送所述第一分组,而不响应所述第二分组,则确定所述源地址合法。10. 如权利要求1-3中任何一条所述的方法,包括打开防护设备和所述源地址之间的代理连接,并且只要所述源地址的合法性未被确定,则只允许所述源地址经由所述代理连接访问所述目标计算机。11. 如权利要求10所述的方法,包括响应于所述代理连接的使用确定所述源地址合法,并响应于所述确定,使所述连接被直接打开在所述源地址和所述目标计算机之间,同时关闭所述代理连接。12. 一种用于认证通信流量的方法,包括:截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组;从所述SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值;作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时对所述ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码;接收响应于所述ACK分组从所述源地址发送来的TCP RST分组;从所述RST分组中读取TCP序列号和所述TTL字段的第二个值;以及将所述TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。13. 如权利要求12所述的方法,其中比较所述TCP序列号包括对所述TCP序列号解码,以恢复所述TTL字段的第一个值,并且如果所述TTL字段的第一个值和第二个值在预定容限内相等,则确定所述源地址合法。14. 如权利要求12所述的方法,包括在超时时段后向所述源地址发送TCP SYN-ACK分组,并且在接收到来自所述源地址的响应于所述SYN-ACK分组的输入TCP ACK分组时,即使没有接收到响应于发送到所述源地址的ACK分组的RST分组,也允许所述源地址与所述目标计算机通信。15. 如权利要求14所述的方法,其中允许所述源地址通信包括打开防护设备和所述源地址之间的TCP代理连接,并允许所述源地址经由所述代理连接访问所述目标计算机。16. 如权利要求12-15中任何一条所述的方法,包括在未能基于接收到所述RST分组确定所述源地址合法时:从所述SYN分组中读取TCP序列号;再向所述源地址发送又一个ACK分组,同时将所述又一个ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值;以及基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。17. 如权利要求12-15中任何一条所述的方法,包括在确定所述源地址合法时,允许所述源地址直接与所述目标计算机建立TCP连接,同时只要所述源地址的合法性未被确定,则只允许所述源地址经由代理连接访问所述目标计算机。18. 一种用于认证通信流量的方法,包括:截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组,所述SYN分组包括TCP序列号;作为对所述SYN分组的回复,向所述源地址发送第一TCP ACK分组,同时将所述第一ACK分组的TCP确认号设置为第一个值,该第一个值不比所述SYN分组的序列号大1;接收响应于所述第一ACK分组从所述源地址发送来的TCP RST分组;响应于接收到所述TCP RST分组,向所述源地址发送第二ACK分组,同时将所述第二ACK分组的TCP确认号设置为第二个值,该第二个值比所述SYN分组的序列号大1;以及基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。19. 如权利要求18所述的方法,其中评估所述源地址的合法性包括如果未从所述源地址接收到响应于所述第二ACK分组的又一个TCP RST分组,则确定所述源地址合法。20. 一种用于认证通信流量的方法,包括:截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组;从所述SYN分组中读取TCP序列号;作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时将所述ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值;以及在接收到响应于所述ACK分组从所述源地址发送来的TCP RST分组时,确定所述源地址合法。21. 如权利要求20所述的方法,包括在未接收到所述RST分组的情况下,在超时后接收来自所述源地址的对所述SYN分组的重新发送;并响应于所述重新发送允许所述源地址建立与所述目标计算机的TCP连接。22. 如权利要求20所述的方法,其中发送所述TCP ACK分组包括发送第一ACK分组,所述方法还包括:从所述SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值;作为对所述SYN分组的回复,向所述源地址发送第二ACK分组,同时对所述第二ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码;接收响应于所述第二ACK分组从所述源地址发送来的又一个TCPRST分组;从所述又一个RST分组中读取所述TCP序列号和所述TTL字段的第二个值;以及将所述又一个RST分组的TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。23. 如权利要求20所述的方法,其中截取所述SYN分组包括截取第一SYN分组,并且其中发送所述TCP ACK分组包括发送第一ACK分组,所述方法还包括:截取所述第一SYN分组之后来自所述源地址的第二SYN分组;从所述第二SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值;作为对所述第二SYN分组的回复,向所述源地址发送第二ACK分组,同时对所述第二ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码;接收响应于所述第二ACK分组从所述源地址发送来的又一个TCPRST分组;从所述又一个RST分组中读取所述TCP序列号和所述TTL字段的第二个值;以及将所述又一个RST分组的TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。24. 如权利要求23所述的方法,其中截取所述第二SYN分组包括在未接收到所述RST分组的情况下,接收来自所述源地址的对所述第一SYN分组的重新发送。25. 如权利要求20-24中任何一条所述的方法,包括在确定所述源地址合法时,允许所述源地址直接与所述目标计算机建立TCP连接,同时只要所述源地址的合法性未被确定,则只允许所述源地址经由代理连接访问所述目标计算机。26. 用于认证通信流量的装置,包括防护设备,该防护设备被耦合以截取根据由预定通信协议所指定的握手程序在网络上从源地址定向到目标计算机的打开连接的请求,并适合于向所述源地址发送偏离指定的握手程序的对所述请求的回复,分析来自所述源地址的对所述回复的响应,以评估所述源地址的合法性,以及在基于评估确定所述源地址合法时,允许所述目标计算机完成所述握手程序,以便打开与所述源地址的连接。27. 如权利要求26所述的装置,其中所述协议包括传输控制协议(Transmission Control Protocol,TCP),并且其中所述握手程序包括TCP三次握手。28. 如权利要求27所述的装置,其中所述请求包括TCP SYN分组,并且其中所述回复包括TCP ACK分组。29. 如权利要求26-28中任何一条所述的装置,其中所述请求包括第一输入分组,该第一输入分组包括一个字段,该字段指示所述第一输入分组在从所述源地址发送出来之后,经过的跳的数目,并且其中所述防护设备适合于对出现在所述第一输入分组中的所述字段的第一个值做出记录,以及从所述第二输入分组中读取所述字段的第二个值,该值指示所述第二输入分组经过的跳的数目,并比较所述字段的第一个值与第二个值,以便评估所述源地址的合法性。30. 如权利要求29所述的装置,其中所述回复包括向所述源地址发送的输出分组,并且其中所述防护设备适合于对所述输出分组中的所述字段的第一个值进行编码,以使编码后的第一个值被包含在所述第二输入分组中。31. 如权利要求29所述的装置,其中所述第一、第二和第三分组是因特网协议(Internet Protocol,IP)分组,并且所述字段包括所述IP分组的头部中的生存时间(Time-To-Live,TTL)字段。32. 如权利要求31所述的装置,其中所述协议包括传输控制协议(Transmission Control Protocol,TCP),并且其中所述防护设备适合于对所述第二分组的TCP头部中的确认号字段中的TTL字段的第一个值进行编码。33. 如权利要求26-28中任何一条所述的装置,其中所述请求包括第一分组,该第一分组包括序列号,并且其中所述回复包括由所述防护设备向所述源地址发送的第二分组,以便所述第二分组根据所述协议确认所述第一分组,并包含基于所述序列号的确认号,并且其中所述防护设备适合于在所述源地址响应所述第二分组的情况下,认定所述源地址不合格。34. 如权利要求33所述的装置,其中所述防护设备适合于在所述源地址重新发送所述第一分组,而不响应所述第二分组的情况下,确定所述源地址合法。35. 如权利要求26-28中任何一条所述的装置,其中所述防护设备适合于打开与所述源地址之间的代理连接,并且只要所述源地址的合法性未被确定,则只允许所述源地址经由所述代理连接访问所述目标计算机。36. 如权利要求35所述的装置,其中所述防护设备适合于响应于所述代理连接的使用确定所述源地址合法,并响应于所述确定,使所述连接被直接打开在所述源地址和所述目标计算机之间,同时关闭所述代理连接。37. 用于认证通信流量的装置,包括防护设备,该防护设备被耦合以截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组,并适合于从所述SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值,以及作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时对所述ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码,其中所述防护设备被耦合以接收响应于所述ACK分组从所述源地址发送来的TCP RST分组,并适合于从所述RST分组中读取TCP序列号和所述TTL字段的第二个值,以及将所述TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。38. 如权利要求37所述的装置,其中所述防护设备适合于对所述TCP序列号解码,以恢复所述TTL字段的第一个值,并且如果所述TTL字段的第一个值和第二个值在预定容限内相等,则确定所述源地址合法。39. 如权利要求37所述的装置,其中所述防护设备还适合于在超时时段后向所述源地址发送TCP SYN-ACK分组,并且在接收到来自所述源地址的响应于所述SYN-ACK分组的输入TCP ACK分组时,即使没有接收到响应于发送到所述源地址的ACK分组的RST分组,也允许所述源地址与所述目标计算机通信。40. 如权利要求39所述的装置,其中所述防护设备适合于打开所述防护设备和所述源地址之间的TCP代理连接,并允许所述源地址经由所述代理连接访问所述目标计算机。41. 如权利要求37-40中任何一条所述的装置,其中所述防护设备适合于,在未能基于接收到所述RST分组确定所述源地址合法时,从所述SYN分组中读取TCP序列号,再向所述源地址发送又一个ACK分组,同时将所述又一个ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值,以及基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。42. 如权利要求37-40中任何一条所述的装置,其中所述防护设备适合于在确定所述源地址合法时,允许所述源地址直接与所述目标计算机建立TCP连接,同时只要所述源地址的合法性未被确定,则只允许所述源地址经由代理连接访问所述目标计算机。43. 用于认证通信流量的装置,该装置包括防护设备,该防护设备被耦合以截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组,所述SYN分组包括TCP序列号,并且所述防护设备适合于作为对所述SYN分组的回复,向所述源地址发送第一TCP ACK分组,同时将所述第一ACK分组的TCP确认号设置为第一个值,该第一个值不比所述SYN分组的序列号大1,所述防护设备还适合于在接收到响应于所述第一ACK分组从所述源地址发送来的TCP RST分组时,向所述源地址发送第二ACK分组,同时将所述第二ACK分组的TCP确认号设置为第二个值,该第二个值比所述SYN分组的序列号大1,以及基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。44. 如权利要求43所述的装置,其中所述防护设备适合于在未从所述源地址接收到响应于所述第二ACK分组的又一个TCP RST分组的情况下,确定所述源地址合法。45. 用于认证通信流量的装置,包括防护设备,该防护设备被耦合以截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组,并适合于从所述SYN分组中读取TCP序列号,并且作为对所述SYN分组的回复,向所述源地址发送TCPACK分组,同时将所述ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值,以及在接收到响应于所述ACK分组从所述源地址发送来的TCP RST分组时,确定所述源地址非法。46. 如权利要求45所述的装置,其中所述防护设备适合于在未接收到所述RST分组的情况下,在超时后接收到来自所述源地址的对所述SYN分组的重新发送时,响应于所述重新发送允许所述源地址建立与所述目标计算机的TCP连接。47. 如权利要求45所述的装置,其中由所述防护设备发送的所述TCPACK分组是第一ACK分组,并且其中所述防护设备还适合于从所述SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值,并且作为对所述SYN分组的回复,向所述源地址发送第二ACK分组,同时对所述第二ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码,并且其中所述防护设备被耦合以接收响应于所述第二ACK分组从所述源地址发送来的又一个TCP RST分组,并且适合于从所述又一个RST分组中读取所述TCP序列号和所述TTL字段的第二个值,以及将所述又一个RST分组的TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。48. 如权利要求45所述的装置,其中截取到的所述SYN分组包括第一SYN分组,并且其中由所述防护设备发送的所述TCP ACK分组是第一ACK分组,并且其中所述防护设备被耦合以截取所述第一SYN分组之后来自所述源地址的第二SYN分组,并且适合于从所述第二SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值,并且作为对所述第二SYN分组的回复,向所述源地址发送第二ACK分组,同时对所述第二ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码,并且其中所述防护设备被耦合以接收响应于所述第二ACK分组从所述源地址发送来的又一个TCP RST分组,并且适合于从所述又一个RST分组中读取所述TCP序列号和所述TTL字段的第二个值,以及将所述又一个RST分组的TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。49. 如权利要求48所述的装置,其中所述第二SYN分组包括来自所述源地址的对所述第一SYN分组的重新发送,所述重新发送是在所述防护设备未接收到所述RST分组的情况下,由所述防护设备接收到的。50. 如权利要求45-49中任何一条所述的装置,其中所述防护设备适合于在确定所述源地址合法时,允许所述源地址直接与所述目标计算机建立TCP连接,同时只要所述源地址的合法性未被确定,则只允许所述源地址经由代理连接访问所述目标计算机。51. 一种用于认证通信流量的计算机软件产品,所述产品包括计算机可读介质,其中存储了程序指令,所述指令在被防护计算机读取时,使所述防护计算机截取根据由预定通信协议所指定的握手程序在网络上从源地址定向到目标计算机的打开连接的请求,并且还使所述防护计算机向所述源地址发送偏离指定的握手程序的对所述请求的回复,分析来自所述源地址的对所述回复的响应,以评估所述源地址的合法性,以及在基于评估确定所述源地址合法时,允许所述目标计算机完成所述握手程序,以便打开与所述源地址的连接。52. 如权利要求51所述的产品,其中所述协议包括传输控制协议(Transmission Control Protocol,TCP),并且其中所述握手程序包括TCP三次握手。53. 如权利要求52所述的产品,其中所述请求包括TCP SYN分组,并且其中所述回复包括TCP ACK分组。54. 如权利要求51-53中任何一条所述的产品,其中所述请求包括第一输入分组,该第一输入分组包括一个字段,该字段指示所述第一输入分组在从所述源地址发送出来之后,经过的跳的数目,并且其中所述指令使所述防护计算机对出现在所述第一输入分组中的所述字段的第一个值做出记录,以及从所述第二输入分组中读取所述字段的第二个值,该值指示所述第二输入分组经过的跳的数目,并比较所述字段的第一个值与第二个值,以便评估所述源地址的合法性。55. 如权利要求54所述的产品,其中所述回复包括向所述源地址发送的输出分组,并且其中所述指令使所述防护计算机对所述输出分组中的所述字段的第一个值进行编码,以使编码后的第一个值被包含在所述第二输入分组中。56. 如权利要求54所述的产品,其中所述第一、第二和第三分组是因特网协议(Internet Protocol,IP)分组,并且所述字段包括所述IP分组的头部中的生存时间(Time-To-Live,TTL)字段。57. 如权利要求56所述的产品,其中所述协议包括传输控制协议(Transmission Control Protocol,TCP),并且其中所述指令使所述防护计算机对所述第二分组的TCP头部中的确认号字段中的TTL字段的第一个值进行编码。58. 如权利要求51-53中任何一条所述的产品,其中所述请求包括第一分组,该第一分组包括序列号,并且其中所述回复包括由所述防护计算机向所述源地址发送的第二分组,以便所述第二分组根据所述协议确认所述第一分组,并包含基于所述序列号的确认号,并且其中所述指令使所述防护计算机在所述源地址响应所述第二分组的情况下,认定所述源地址不合格。59. 如权利要求58所述的产品,其中所述指令使所述防护计算机在所述源地址重新发送所述第一分组,而不响应所述第二分组的情况下,确定所述源地址合法。60. 如权利要求51-53中任何一条所述的产品,其中所述指令使所述防护计算机打开与所述源地址之间的代理连接,并且只要所述源地址的合法性未被确定,则只允许所述源地址经由所述代理连接访问所述目标计算机。61. 如权利要求60所述的产品,其中所述指令使所述防护计算机响应于所述代理连接的使用确定所述源地址合法,并响应于所述确定,使所述连接被直接打开在所述源地址和所述目标计算机之间,同时关闭所述代理连接。62. 一种用于认证通信流量的计算机软件产品,所述产品包括计算机可读介质,其中存储了程序指令,所述指令在被防护计算机读取时,使所述防护计算机截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组,并从所述SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值,以及作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时对所述ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码,其中所述指令还使所述防护计算机接收响应于所述ACK分组从所述源地址发送来的TCP RST分组,并从所述RST分组中读取TCP序列号和所述TTL字段的第二个值,以及将所述TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。63. 如权利要求62所述的产品,其中所述指令使所述防护计算机对所述TCP序列号解码,以恢复所述TTL字段的第一个值,并且如果所述TTL字段的第一个值和第二个值在预定容限内相等,则确定所述源地址合法。64. 如权利要求62所述的产品,其中所述指令还使所述防护计算机在超时时段后向所述源地址发送TCP SYN-ACK分组,并且在接收到来自所述源地址的响应于所述SYN-ACK分组的输入TCP ACK分组时,即使没有接收到响应于发送到所述源地址的ACK分组的RST分组,也允许所述源地址与所述目标计算机通信。65. 如权利要求64所述的产品,其中所述指令使所述防护计算机打开所述防护计算机和所述源地址之间的TCP代理连接,并允许所述源地址经由所述代理连接访问所述目标计算机。66. 如权利要求62所述的产品,其中所述指令使所述防护计算机在未能基于接收到所述RST分组确定所述源地址合法时,从所述SYN分组中读取TCP序列号,再向所述源地址发送又一个ACK分组,同时将所述又一个ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值,以及基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。67. 如权利要求62-66中任何一条所述的产品,其中所述指令使所述防护计算机在确定所述源地址合法时,允许所述源地址直接与所述目标计算机建立TCP连接,同时只要所述源地址的合法性未被确定,则只允许所述源地址经由代理连接访问所述目标计算机。68. 一种用于认证通信流量的计算机软件产品,所述产品包括计算机可读介质,其中存储了程序指令,所述指令在被防护计算机读取时,使所述防护计算机截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组,所述SYN分组包括TCP序列号,并且还使所述防护计算机作为对所述SYN分组的回复,向所述源地址发送第一TCP ACK分组,同时将所述第一ACK分组的TCP确认号设置为第一个值,该第一个值不比所述SYN分组的序列号大1,所述指令还使所述防护计算机在接收到响应于所述第一ACK分组从所述源地址发送来的TCP RST分组时,向所述源地址发送第二ACK分组,同时将所述第二ACK分组的TCP确认号设置为第二个值,该第二个值比所述SYN分组的序列号大1,以及基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。69. 如权利要求68所述的产品,其中所述防护设备适合于在未从所述源地址接收到响应于所述第二ACK分组的又一个TCP RST分组的情况下,确定所述源地址合法。70. 一种用于认证通信流量的计算机软件产品,所述产品包括计算机可读介质,其中存储了程序指令,所述指令在被防护计算机读取时,使所述防护计算机截取根据传输控制协议(Transmission Control Protocol,TCP)在网络上从源地址定向到目标计算机的SYN分组,还使所述防护计算机从所述SYN分组中读取TCP序列号;并且作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时将所述ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值,以及在接收到响应于所述ACK分组从所述源地址发送来的TCP RST分组时,确定所述源地址非法。71. 如权利要求70所述的产品,其中所述指令使所述防护计算机在未接收到所述RST分组的情况下,在超时后接收到来自所述源地址的对所述SYN分组的重新发送时,响应于所述重新发送允许所述源地址建立与所述目标计算机的TCP连接。72. 如权利要求70所述的产品,其中由所述防护计算机发送的所述TCP ACK分组是第一ACK分组,并且其中所述指令使所述防护计算机从所述SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值,并且作为对所述SYN分组的回复,向所述源地址发送第二ACK分组,同时对所述第二ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码,并且其中所述指令使所述防护计算机接收响应于所述第二ACK分组从所述源地址发送来的又一个TCP RST分组,并且从所述又一个RST分组中读取所述TCP序列号和所述TTL字段的第二个值,以及将所述又一个RST分组的TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。73. 如权利要求70所述的产品,其中截取到的所述SYN分组包括第一SYN分组,并且其中由所述防护计算机发送的所述TCP ACK分组是第一ACK分组,并且其中所述指令使所述防护计算机截取所述第一SYN分组之后来自所述源地址的第二SYN分组,并且从所述第二SYN分组中读取生存时间(Time-To-Live,TTL)字段的第一个值,并且作为对所述第二SYN分组的回复,向所述源地址发送第二ACK分组,同时对所述第二ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码,并且其中所述指令使所述防护计算机接收响应于所述第二ACK分组从所述源地址发送来的又一个TCP RST分组,并且从所述又一个RST分组中读取所述TCP序列号和所述TTL字段的第二个值,以及将所述又一个RST分组的TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。74. 如权利要求73所述的产品,其中所述第二SYN分组包括来自所述源地址的对所述第一SYN分组的重新发送,所述重新发送是在所述防护计算机未接收到所述RST分组的情况下,由所述防护计算机接收到的。75. 如权利要求70-74中任何一条所述的产品,其中所述指令使所述防护计算机在确定所述源地址合法时,允许所述源地址直接与所述目标计算机建立TCP连接,同时只要所述源地址的合法性未被确定,则只允许所述源地址经由代理连接访问所述目标计算机。
利用TCP认证IP源地址 技术领域 本发明一般地涉及计算机网络,具体地涉及用于在计算机网络中防止遭受拒绝服务攻击的方法和系统。 背景技术 在拒绝服务(Denial-of-Service,DoS)攻击中,攻击者用大量消息流量轰击受害网络或服务器。处理此流量消耗受害者的可用带宽、CPU能力或其他关键性系统资源,并且最终使受害者达到无法服务其合法客户的情况。分布式DoS(DDoS)攻击的毁坏性可能更大,因其涉及产生同时来自多个源的仿真网络流量。在“传统”大块带宽攻击中,可在对输入分组的源因特网协议(Internet Protocol,IP)地址的统计分析的帮助下追踪攻击的源。然后受害者可过滤掉源自可疑IP地址的任何流量,并且可利用该证据对攻击者采取法律行动。但是,现在许多攻击使用“欺骗性(spoofed)”IP分组—包含假IP源地址的分组—使得受害者更难以防止自己遭受攻击。 传输控制协议/因特网协议(Transmission Control Protocol/InternetProtocol,TCP/IP)套件是目前在数字分组网络中最广泛使用的传输协议。TCP是面向连接的端到端全双工协议,它提供了主机中的进程对之间的可靠的进程间通信。TCP同级设备之间的信息交换被组装成被称为片段(segment)的数据报,每个数据报包含一个TCP头部,其后是有效载荷数据。片段以IP分组的形式在网络上传输。Postel在美国国防部高级研究项目署(DARPA)的题为“Transmission Control Protocol:DAPRAInternet Program Protocol Specification(传输控制协议:DAPRA因特网程序协议规范)”的RFC 793中描述了TCP,此处通过引用将RFC 793包含进来。以下给出的对TCP的某些特征的描述是基于RFC 793中的信息的,关于进一步的细节,读者应参看RFC。 TCP片段中发送的每个八位字节被分配序列号,该序列号被接收计算机用于从分组的损坏、损失或复制中恢复,并对按错误顺序递送的片段重新排序。在接收到片段时,接收者应该通过向发送者返回在TCP头部中设置了“ACK”控制比特的分组,来给出肯定确认(ACK)。如果发送者在超时间隔内未接收到ACK,则其重新发送数据。由于TCP是全双工协议,因此每个片段的头部包含用于序列号和确认号的字段。序列号字段保存片段中的第一个数据八位字节的序列号(或者在SYN分组的情况下的初始序列号ISN,如下文所述)。确认号字段包含片段发送者期望在TCP连接上接收到的下一序列号的值。从而,通过接收到的最后片段的最高序列号,确认号被确定。为了管理由发送者发送的数据量,接收者在返回每个ACK时还返回“窗口”,指示成功接收到的最后片段之外可接受的序列号的范围。 为了建立TCP连接,两个参与计算机使用公知的“三次握手(three-way handshake)”,来同步彼此的初始序列号。握手是基于连接建立片段的交换,以及初始序列号的,其中连接建立片段在其片段头部中包含被称为“SYN”的控制比特。每一方还必须接收另一方的初始序列号,并发送确认。为了启动连接,计算机A向计算机B发送SYN分组,指示其初始序列号(ISN)。计算机B以SYN-ACK分组响应,给出其自己的ISN,并确认由计算机A发送的ISN(通过设置ACK比特,并将值ISN+1放在其确认号字段中)。计算机A最终以ACK分组响应,确认由计算机B发送的ISN,从而连接被建立。 TCP片段头部还包含“RST”控制比特,该控制比特用于有必要重置未正确同步的TCP连接时。一般规则是,只要连接不处于“已建立”状态,无论何时当明显不是打算供当前连接使用的片段到达时,RST分组(其中设置了RST比特)就被发送。从而,例如,如果处于建立TCP连接过程中的一台计算机接收到包含未预期的确认号的ACK分组,则接收计算机将会向发送计算机返回RST分组。 发明内容 本发明的实施例提供了用于认证网络上的通信流量的方法和系统,尤其是用于认证网络上的由诸如TCP这样的面向连接的协议携带的流量的方法和系统。这些方法通常是由防护设备实现的,该防护设备截取网络上从远程计算机发送到诸如服务器这样的目标计算机的输入连接,以防止目标计算机遭受恶意流量。这种方法对于检测和阻止DDoS攻击期间的欺骗性流量尤其有用,但也可由于其他目的而用于认证源地址和连接请求。 防护设备以新颖的方式使用面向连接的协议的传统特征,以便验证请求连接的远程计算机是合法的。“合法”这个术语在这里的上下文中是指发送连接请求的源地址被实际分配给了真正的计算机,并且此计算机实际启动了连接请求。从而阻止了来自欺骗性源地址的连接请求。认证过程一般而言是透明的,因为在成功完成该过程之后,在没有进一步的中断以及不偏离正常协议的情况下,远程计算机被允许直接连接到目标计算机。 在本发明的某些实施例中,防护设备截取根据三方握手程序从源地址定向到目标计算机的地址的TCP SYN分组。防护设备发送回复到偏离预期的握手回复的源地址。通常,防护设备发送TCP ACK分组,而不是正常TCP程序所指定的SYN-ACK分组。选择ACK分组中的TCP头部的某些内容,例如确认号,以便如果源地址合法的话则引出来自源地址的某个响应(或者在某些情况下不引出响应)。防护设备截取和分析从源地址接收到的响应(如果有响应的话),从而评估源地址的合法性。在通过这种方式确定源地址合法之后,防护设备允许目标计算机完成握手程序,以便打开连接。 以下描述关于此基本认证程序的多个变化。在某些实施例中,当防护设备无法充分肯定地确定源地址合法时,防护设备可充当源地址和目标计算机之间的TCP代理。通过这种方式,只允许远程计算机经由防护设备与目标计算机间接连接。但是,由于与TCP代理操作相关联的较高的额外开销,如果可能的话则防护设备避免此操作模式,并且只要防护设备断定源地址合法,则使远程计算机直接连接到目标计算机。 根据本发明的实施例,提供了一种用于认证通信流量的方法,包括: 截取根据由预定通信协议所指定的握手程序在网络上从源地址定向到目标计算机的打开连接的请求; 向所述源地址发送偏离指定的握手程序的对所述请求的回复; 分析来自所述源地址的对所述回复的响应,以评估所述源地址的合法性;以及 在基于评估确定所述源地址合法时,允许所述目标计算机完成所述握手程序,以便打开与所述源地址的连接。 在所公开的实施例中,所述协议包括传输控制协议(TCP),所述握手程序包括TCP三次握手。通常,截取所述请求包括截取TCP SYN分组,发送所述回复包括发送TCP ACK分组。 在某些实施例中,截取所述请求包括截取第一输入分组,该第一输入分组包括一个字段,该字段指示所述第一输入分组在从所述源地址发送出来之后,经过的跳(hop)的数目;并且对出现在所述第一输入分组中的所述字段的第一个值做出记录,分析所述响应包括接收来自所述源地址的第二输入分组;从所述第二输入分组中读取所述字段的第二个值,该值指示所述第二输入分组经过的跳的数目;并比较所述字段的第一个值与第二个值,以便评估所述源地址的合法性。通常,做出所述记录包括对输出分组中的所述字段的第一个值进行编码,发送所述回复包括向所述源地址发送所述输出分组,以使编码后的第一个值被包含在所述第二输入分组中。 在这些实施例中的某些实施例中,所述第一、第二和第三分组是因特网协议(IP)分组,并且所述字段包括所述IP分组的头部中的生存时间(Time-To-Live,TTL)字段。通常,所述协议包括传输控制协议(TCP),对所述第一个值进行编码包括对所述第二分组的TCP头部中的确认号字段中的TTL字段的第一个值进行编码。 在其他实施例中,截取所述请求包括截取包括序列号的第一分组,发送所述回复包括根据所述协议向所述源地址发送第二分组,确认所述第一分组并包含基于所述序列号的确认号,分析所述响应包括如果所述源地址响应所述第二分组则认定所述源地址不合格。通常,分析所述响应包括如果所述源地址重新发送所述第一分组,而不响应所述第二分组,则确定所述源地址合法。 可选地,所述方法包括打开防护设备和所述源地址之间的代理连接,并且只要所述源地址的合法性未被确定,则只允许所述源地址经由所述代理连接访问所述目标计算机。所述方法还可包括响应于所述代理连接的使用确定所述源地址合法,并响应于所述确定,使所述连接被直接打开在所述源地址和所述目标计算机之间,同时关闭所述代理连接。 根据本发明的实施例还提供了一种用于认证通信流量的方法,包括: 截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组; 从所述SYN分组中读取生存时间(TTL)字段的第一个值; 作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时对所述ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码; 接收响应于所述ACK分组从所述源地址发送来的TCP RST分组; 从所述RST分组中读取TCP序列号和所述TTL字段的第二个值;以及 将所述TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。 通常,比较所述TCP序列号包括对所述TCP序列号解码,以恢复所述TTL字段的第一个值,并且如果所述TTL字段的第一个值和第二个值在预定容限内相等,则确定所述源地址合法。 在某些实施例中,所述方法包括在超时时段后向所述源地址发送TCPSYN-ACK分组,并且在接收到来自所述源地址的响应于所述SYN-ACK分组的输入TCP ACK分组时,即使没有接收到响应于发送到所述源地址的ACK分组的RST分组,也允许所述源地址与所述目标计算机通信。通常,允许所述源地址通信包括打开防护设备和所述源地址之间的TCP代理连接,并允许所述源地址经由所述代理连接访问所述目标计算机。 在另一个实施例中,所述方法包括,在未能基于接收到所述RST分组确定所述源地址合法时,从所述SYN分组中读取TCP序列号,再向所述源地址发送又一个ACK分组,同时将所述又一个ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值,并基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。 在某些实施例中,所述方法包括在确定所述源地址合法时,允许所述源地址直接与所述目标计算机建立TCP连接,同时只要所述源地址的合法性未被确定,则只允许所述源地址经由代理连接访问所述目标计算机。 根据本发明的实施例,还提供了一种用于认证通信流量的方法,包括: 截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组,所述SYN分组包括TCP序列号; 作为对所述SYN分组的回复,向所述源地址发送第一TCP ACK分组,同时将所述第一ACK分组的TCP确认号设置为第一个值,该第一个值不比所述SYN分组的序列号大1; 接收响应于所述第一ACK分组从所述源地址发送来的TCP RST分组; 响应于接收到所述TCP RST分组,向所述源地址发送第二ACK分组,同时将所述第二ACK分组的TCP确认号设置为第二个值,该第二个值比所述SYN分组的序列号大1;以及 根据在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。 通常评估所述源地址的合法性包括如果未从所述源地址接收到响应于所述第二ACK分组的又一个TCP RST分组,则确定所述源地址合法。 根据本发明的实施例,还提供了一种用于认证通信流量的方法,包括: 截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组; 从所述SYN分组中读取TCP序列号; 作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时将所述ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值;以及 在接收到响应于所述ACK分组从所述源地址发送来的TCP RST分组时,确定所述源地址合法。 在所公开的实施例中,所述方法包括在未接收到所述RST分组的情况下,在超时后接收来自所述源地址的对所述SYN分组的重新发送;并响应于所述重新发送允许所述源地址建立与所述目标计算机的TCP连接。 在另一个实施例中,发送所述TCP ACK分组包括发送第一ACK分组,并且所述方法还包括从所述SYN分组中读取生存时间(TTL)字段的第一个值,作为对所述SYN分组的回复,向所述源地址发送第二ACK分组,同时对所述第二ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码,接收响应于所述第二ACK分组从所述源地址发送来的又一个TCP RST分组,从所述又一个RST分组中读取所述TCP序列号和所述TTL字段的第二个值,并将所述又一个RST分组的TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。 在另一个实施例中,截取所述SYN分组包括截取第一SYN分组,并且其中发送所述TCP ACK分组包括发送第一ACK分组,并且所述方法还包括截取所述第一SYN分组之后来自所述源地址的第二SYN分组,从所述第二SYN分组中读取生存时间(TTL)字段的第一个值,作为对所述第二SYN分组的回复,向所述源地址发送第二ACK分组,同时对所述第二ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码,接收响应于所述第二ACK分组从所述源地址发送来的又一个TCP RST分组,从所述又一个RST分组中读取所述TCP序列号和所述TTL字段的第二个值,并将所述又一个RST分组的TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。通常,截取所述第二SYN分组包括在未接收到所述RST分组的情况下,接收来自所述源地址的对所述第一SYN分组的重新发送。 通常,所述方法包括在确定所述源地址合法时,允许所述源地址直接与所述目标计算机建立TCP连接,同时只要所述源地址的合法性未被确定,则只允许所述源地址经由代理连接访问所述目标计算机。 此外,根据本发明的实施例,提供了用于认证通信流量的装置,该装置包括防护设备,该防护设备被耦合以截取根据由预定通信协议所指定的握手程序在网络上从源地址定向到目标计算机的打开连接的请求,并适合于向所述源地址发送偏离指定的握手程序的对所述请求的回复,分析来自所述源地址的对所述回复的响应,以评估所述源地址的合法性,以及在基于评估确定所述源地址合法时,允许所述目标计算机完成所述握手程序,以便打开与所述源地址的连接。 此外,根据本发明的实施例,提供了用于认证通信流量的装置,该装置包括防护设备,该防护设备被耦合以截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组,并适合于从所述SYN分组中读取生存时间(TTL)字段的第一个值,以及作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时对所述ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码, 其中所述防护设备被耦合以接收响应于所述ACK分组从所述源地址发送来的TCP RST分组,并适合于从所述RST分组中读取TCP序列号和所述TTL字段的第二个值,以及将所述TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。 此外,根据本发明的实施例,提供了用于认证通信流量的装置,该装置包括防护设备,该防护设备被耦合以截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组,所述SYN分组包括TCP序列号,并且所述防护设备适合于作为对所述SYN分组的回复,向所述源地址发送第一TCP ACK分组,同时将所述第一ACK分组的TCP确认号设置为第一个值,该第一个值不比所述SYN分组的序列号大1,所述防护设备还适合于在接收到响应于所述第一ACK分组从所述源地址发送来的TCP RST分组时,向所述源地址发送第二ACK分组,同时将所述第二ACK分组的TCP确认号设置为第二个值,该第二个值比所述SYN分组的序列号大1,以及基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。 此外,根据本发明的实施例,提供了用于认证通信流量的装置,该装置包括防护设备,该防护设备被耦合以截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组,并适合于从所述SYN分组中读取TCP序列号,并且作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时将所述ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值,以及在接收到响应于所述ACK分组从所述源地址发送来的TCP RST分组时,确定所述源地址合法。 此外,根据本发明的实施例,提供了一种用于认证通信流量的计算机软件产品,所述产品包括计算机可读介质,其中存储了程序指令,所述指令在被防护计算机读取时,使所述防护计算机截取根据由预定通信协议所指定的握手程序在网络上从源地址定向到目标计算机的打开连接的请求,并且还使所述防护计算机向所述源地址发送偏离指定的握手程序的对所述请求的回复,分析来自所述源地址的对所述回复的响应,以评估所述源地址的合法性,以及在基于评估确定所述源地址合法时,允许所述目标计算机完成所述握手程序,以便打开与所述源地址的连接。 此外,根据本发明的实施例,提供了一种用于认证通信流量的计算机软件产品,所述产品包括计算机可读介质,其中存储了程序指令,所述指令在被防护计算机读取时,使所述防护计算机截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组,并从所述SYN分组中读取生存时间(TTL)字段的第一个值,以及作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时对所述ACK分组的TCP确认号中的所述TTL字段的第一个值进行编码, 其中所述指令还使所述防护计算机接收响应于所述ACK分组从所述源地址发送来的TCP RST分组,并从所述RST分组中读取TCP序列号和所述TTL字段的第二个值,以及将所述TCP序列号与所述TTL字段的第二个值相比较,以评估所述源地址的合法性。 此外,根据本发明的实施例,提供了一种用于认证通信流量的计算机软件产品,所述产品包括计算机可读介质,其中存储了程序指令,所述指令在被防护计算机读取时,使所述防护计算机截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组,所述SYN分组包括TCP序列号,并且还使所述防护计算机作为对所述SYN分组的回复,向所述源地址发送第一TCP ACK分组,同时将所述第一ACK分组的TCP确认号设置为第一个值,该第一个值不比所述SYN分组的序列号大1,所述指令还使所述防护计算机在接收到响应于所述第一ACK分组从所述源地址发送来的TCP RST分组时,向所述源地址发送第二ACK分组,同时将所述第二ACK分组的TCP确认号设置为第二个值,该第二个值比所述SYN分组的序列号大1,以及基于在所述又一个ACK分组之后从所述源地址接收到的又一个响应,评估所述源地址的合法性。 此外,根据本发明的实施例,提供了一种用于认证通信流量的计算机软件产品,所述产品包括计算机可读介质,其中存储了程序指令,所述指令在被防护计算机读取时,使所述防护计算机截取根据传输控制协议(TCP)在网络上从源地址定向到目标计算机的SYN分组,还使所述防护计算机从所述SYN分组中读取TCP序列号;作为对所述SYN分组的回复,向所述源地址发送TCP ACK分组,同时将所述ACK分组的TCP确认号设置为比所述SYN分组的序列号大1的值,以及在接收到响应于所述ACK分组从所述源地址发送来的TCP RST分组时,确定所述源地址非法。 从以下结合附图对本发明的实施例进行详细描述中,将会更完整地理解本发明。 附图说明 在附图中: 图1是示意性地示出根据本发明的一个实施例用于计算机通信的系统的框图;以及 图2-7是示意性地示出根据本发明的实施例用于认证TCP连接请求的方法的流程图。 具体实施方式 图1是示意性地示出根据本发明的一个实施例的计算机网络系统20的框图。服务器22经由广域网(wide-area network,WAN)26与远程客户计算机通信,该广域网通常是因特网。为了防止服务器22上的DDoS攻击,防护设备28截取来自网络26的寻址到服务器22的输入TCP/IP分组。防护设备对照存储在数据库30或其他数据结构中的信息检查其截取的每个分组。此信息例如可包括,网络26上已知为合法的IP源地址的列表。或者或另外,数据库30可保存可疑IP源地址的“黑名单”。或者或另外,数据库30中的信息可包括已打开的从计算机到服务器22的合法TCP连接的列表。以下将进一步描述生成数据库30中的信息—指示哪些连接请求是合法的,哪些可能源自欺骗性IP地址—的方法。注意这些方法只要求防护设备28监视和截取输入流量,而一般允许从服务器22到网络26的输出流量自由流动。 防护设备28阻止合法请求经过服务器22,而允许已被认证为合法的计算机24打开到服务器22的直接TCP连接。一旦远程计算机打开了与服务器的TCP连接,则防护设备允许连接继续,不再进行干预,直到连接被关闭。通常,在认证源IP地址时,防护设备在数据库30中创建条目,该条目持续一定量的时间,使得来自相同IP地址的后续的连接请求(直到数据库条目的截止时间为止)不需要被重新认证。或者,认证可以只应用到单个TCP连接,因此防护设备认证从网络26进入的每个连接请求。可限制任何给定时段期间认证的新IP地址或连接的数目,以便即使攻击者成功攻克这里所描述的防卫机制,也能避免使服务器22超载。以下描述的源地址认证方法可结合现有技术中已知的其他方法使用,例如以上提到的相关申请中的那些方法。 在不确定的情况下,防护设备28可被配置为充当计算机24和服务器22之间的TCP代理。在代理模式中,计算机24被允许打开到防护设备28的TCP连接,同时防护设备打开与服务器22的第二背对背TCP连接。然后计算机24和服务器22之间的所有TCP通信经过防护设备中继。但是,由于TCP操作中所涉及的较高的额外开销,一般只要防护设备28验证计算机24合法,它就立即退出此操作模式。远程计算机只要能够打开和保持与防护设备的TCP连接,就可证明其合法性。或者或另外,防护设备28可应用诸如超文本传送协议(Hypertext Transfer Protocol,HTTP)这样的更高级别的协议的特征,以便认证远程计算机。此类认证技术被描述在,例如,以上提到的题为“Upper-Level Protocol Authentication(高层协议认证)”的美国临时专利申请中。 防护设备28可使用各种方法来终止TCP代理操作,并使被认证后的远程计算机24继续与服务器22直接通信。一种方法是防护设备在其已被建立并且源IP地址已被认证后,就只是发送RST分组来关闭TCP连接。当计算机24上的客户机应用程序之后尝试重新连接时,防护设备将会把源IP地址识别为合法,并将会允许远程计算机直接连接到服务器22。或者,当服务器22是Web服务器时,防护设备28可使用HTTP来指示计算机24上的客户机代理打开新的TCP连接。例如,防护设备可用HTTP 302错误代码,或者用包含“刷新”命令的超文本标记语言(HypertextMarkup Language,HTML)答复,来回复来自计算机24的HTTP请求。在这些情况下,同样,当计算机24上的客户机代理尝试打开新的TCP连接时,防护设备将会识别合法的源IP地址,并将会允许建立到服务器22的直接连接。 防护设备28通常包括通用计算机,该通用计算机被在软件上编程,以实现这里所描述的功能。此软件可以在网络上以电子形式来提供给防护设备计算机,或者它可以在诸如CD-ROM、DVD、磁介质或非易失性存储器这样的有形介质上来提供。或者或另外,防护设备的某些或全部功能可用专用或半定制硬件电路来实现。 防护设备28的配置和操作在这里是通过示例的方式来示出和描述的,并且替换配置和操作模式对于本领域的技术人员将会显而易见。例如,防护设备28可以不像图1所示的那样与服务器22联机连接,而是可以按其他配置,例如通过“棒棒糖式(lollipop)”连接,来连接到路由器(未示出),该路由器将分组转发到服务器22。或者,防护设备的功能可被集成到路由器或服务器中,或集成到其他网络设备中,例如防火墙中。防护设备的这些和其他可能的操作配置被描述在以上提到的相关申请中。虽然这里将防护设备28示出和描述为保护单个服务器22,但是在实际中可部署一个或多个此类防护设备,来保护一组计算机,例如服务器集群或整个LAN。防护设备的另外的部署情况同样被描述在以上提到的相关申请中。 图2是示意性地示出根据本发明的一个实施例用于认证TCP连接请求的方法的流程图。在SYN接收步骤40中,防护设备28在接收到来自网络26的定向到服务器22的目的地IP地址的TCP SYN分组时,启动该方法。在源地址检查步骤42中,防护设备对照数据库30中的列表检查分组的源IP地址。(或者,如果防护设备被配置为不论源地址为何都认证每个新的TCP连接,则跳过步骤42)。如果源IP地址在数据库30中看来是合法的,则在传递经过(pass-through)步骤44中,防护设备28只要将SYN分组传递到服务器22即可。或者,如果源IP地址已经被认证为非法,因而出现在数据库30的黑名单中,则防护设备只要丢弃分组,不对其做进一步处理即可。 在错误确认步骤46中,作为对步骤40处接收到的SYN分组的响应,防护设备28向SYN分组的源IP地址返回TCP ACK分组。正如背景技术部分中所提到的,此时所预期的TCP握手响应是SYN-ACK,而并非仅仅是ACK。此外,根据TCP,正确的ACK分组将会包含确认号ISN+1,其中ISN是由SYN分组所携带的初始序列号。但是,在步骤46中,防护设备故意将不同的错误确认号插入到ACK分组中。防护设备将确认号插入到将会充当cookie的ACK分组中,以便检查从源IP地址接收到的下一个响应,如下文所述。防护设备可将cookie值存储在存储器中,以便将来参考,或者,它可以例如利用散列(hash)函数从SYN分组的某些头部参数中得出cookie,从而不需要存储实际cookie值。 通常,防护设备28对从cookie中的SYN分组中搜集到的信息编码。编码的信息可包括例如来自SYN分组的IP头部的生存时间(TTL)字段。TTL字段应该指示分组从离开其源经过网络经历的跳的数目。从相同的计算机24合法发送的具有相同源和目的地地址的连续分组,应该以大致相同的TTL值(在网络不稳定性所允许的容限之内)到达防护设备28。TTL值的偏离可能表明IP源地址是欺骗性的。使用TTL跟踪来检测欺骗性流量被进一步描述在以上提到的美国专利申请10/232,993中。正如该申请中所描述的,防护设备或者也可以将SYN分组的TTL值存储在数据库30中,而不是对步骤46中发送的ACK分组中的TTL值编码。但是,正如这里所描述的,对ACK cookie中的TTL值编码一般是一种存储器效率更高的方法。 在接收到具有错误确认号的ACK分组时,根据TCP约定,源IP地址处的计算机将会通过发送RST分组来作出响应。RST分组的序列号应该等于步骤46中由防护设备28发送的错误ACK分组的确认号。当然,如果原SYN分组的源IP地址是欺骗性的,并且未被分配给任何真正的计算机,则不会发送RST。另一方面,当前所使用的某些防火墙阻止ACK分组,从而可防止防火墙后的合法远程计算机24接收到步骤46中发送的ACK分组。在这种情况下,在未曾发送RST响应的情况下,远程计算机将会在超时后重新发送其SYN分组。用于处理此类不测事件的认证的替换方法在下文中描述。 假设SYN分组的源IP地址处的计算机24确实用预期的RST分组做出响应,则在重置接收步骤48中,防护设备28接收和分析RST分组。在cookie匹配步骤50中,防护设备对照ACK分组中编码的cookie值检查RST分组的TCP序列号。如果序列号不匹配cookie,则防护设备将RST分组的源IP地址分类成可能非法。此外,在TTL检查步骤54中,防护设备对照在当前TCP序列号中编码的早前的TTL值(从SYN分组中取出),检查出现在RST分组IP头部中的TTL值。或者,正如上文所提到的,防护设备可对照存储在数据库30中的早前的TTL值,检查RST分组的TTL值。同样,如果TTL值不匹配到预定容限内,则源IP地址可能是非法的。只要防护设备28尚未将源IP地址认证为合法,防护设备就不会允许计算机24建立与服务器22的直接连接。但是,正如下文进一步描述的,防护设备可以建立与源IP地址的代理连接。 另一方面,当RST分组的序列号和TTL值通过步骤50和54的测试时,在连接步骤56中,防护设备28允许源IP地址处的计算机24建立直接到服务器22的TCP连接。例如,为了此目的,防护设备只要不响应步骤48中接收到的RST分组即可。在这种情况下,在一定的超时时段之后,计算机24将会重新发送原SYN分组。由于现在防护设备已认证TCP连接和/或源IP地址,在步骤42中,它将会把SYN分组识别为合法,从而将会允许三次握手直接在计算机24和服务器22之间进行。或者,在接收到RST发组并且成功完成步骤50和54后,防护设备28将会把步骤40中接收到的原SYN分组转发到服务器22,从而避免由于超时时段引起的延时。 图3是示意性地示出根据本发明的另一个实施例用于认证TCP连接请求的方法的流程图。与图2的方法类似,图3的方法(以及以下描述的其他方法)是在步骤40中防护设备28接收到TCP SYN分组时被启动的。如上所述,防护设备执行步骤42和44。但是,在此情况下,如果SYN分组的源IP地址先前未被认证,则在正确确认步骤60中,防护设备通过发送包含正确确认号的ACK分组来回复SYN分组。换句话说,步骤60中发送的ACK分组包含确认号ISN+1,其中ISN是SYN分组中指定的初始序列号。虽然在此情况下ACK分组是“正确”的(与图2的方法中发送的错误ACK分组相对),但是防护设备不像传统TCP握手中所预期的那样设置分组中的SYN比特。 根据RFC 793,此时在接收到未设置SYN控制比特的正确的ACK分组时,计算机24不做出响应,而只是保持在SYN-SENT状态。超时后,计算机24将会重新发送其SYN分组。另一方面,如果计算机24不是原SYN分组的实际源(如果SYN分组的源IP地址是欺骗性的话就会出现这种情况),则计算机24将会把ACK分组视为错误,并且将会通过将RST分组发送回ACK分组的源地址来做出响应。如果在重置接收步骤62中,防护设备28接收到这种RST分组,则防护设备将会把RST分组的源IP地址分类成可能非法,并且不允许在此源地址和服务器22之间建立直接TCP连接。 如果在步骤62中防护设备28未接收到RST分组,则在重复接收步骤64中,防护设备随后将会接收到来自计算机24的重新发送的SYN分组。在这种情况下,在步骤56中,防护设备将会允许SYN分组通过,到达服务器22,并且计算机24和服务器22之间的连接正常建立。但是,注意,如果SYN分组的源IP地址未被分配给任何计算机(DdoS攻击期间发送的某些分组就是这种情况),则在步骤62中,防护设各也不会接收到RST回复,因此可能错误地将源IP地址分类为合法。由于此原因,图3的方法通常结合其他基于TCP的认证方法使用,以便区分合法IP地址和不存在的IP地址。某些此类结合方法在下文中描述。或者或另外,图3的方法可以与分组过滤和/或以上提到的相关专利申请中描述的其他方法相结合。 图4是示意性地示出根据本发明的另一个实施例用于认证TCP连接请求的方法的流程图。在此情况下,当在步骤40中接收到SYN分组,并且适当执行步骤42和44之后,在双确认步骤70中,防护设备28向SYN分组的源IP地址发送两个ACK分组。第一ACK分组(ACK1)具有正确的确认号(如图3中步骤60所示)。第二ACK分组(ACK2)具有“错误”编码的确认号,该确认号包含cookie,并且可能(虽然不必)包含TTL值,如图2中步骤46所示。为了此方法的目的,假设网络26上的分组递送是充分可靠的,以使得该方法中所涉及的分组都不会丢失,因而在SYN分组的源IP地址处ACK1先于ACK2被接收到。在这些假设被违反的情况下,防护设备28可能偶尔允许非法源IP地址打开到服务器22的连接,或者将合法源IP地址认定为不合格。 在ACK1重置接收步骤72中,防护设备28等待接收响应于第一(正确)ACK分组的RST分组。正如以上参考图3所说明的那样,如果防护设备接收到响应于正确ACK分组的RST,则意味着源IP地址是非法的,因此防护设备阻止在源IP地址和服务器22之间建立直接连接。另一方面,如果源IP地址合法,则此地址处的计算机24将会忽略第一ACK分组,然后将会响应于第二(编码的)ACK分组发送RST分组。RST分组可由其确认号来区分。在ACK2重置接收步骤74,防护设备28等待接收该后来的RST分组。防护设备可选择检查RST分组的序列号字段中携带的cookie,如步骤50和54(图2)中所示。但是,在本实施例中,并不严格需要此额外的检查,因为源IP地址忽略ACK1然后以RST响应ACK2这一事实,意味着源IP地址处存在具有功能正确的TCP栈的合法计算机。在成功通过步骤74时,如上文所描述的,在步骤56中,防护设备允许在计算机24和服务器22之间建立正常连接。 从而图4的方法结合了图2和图3的方法,以便提供更可靠的认证。该方法具有“带宽放大”的缺点,即响应于其从未识别的源IP地址接收到的每个SYN分组,计算机24发送两个ACK分组。此外,如果计算机24位于不传递步骤70中发送的ACK分组的防火墙之后,则计算机将不会用RST分组响应任一ACK分组,而是会重新发送原SYN分组。 图5是示意性地示出根据本发明的另一个实施例用于认证TCP连接请求的方法的流程图。此方法是基于图2的方法(步骤40-46)的,但是对于无法接收和响应由防护设备28发送的ACK分组的计算机24,添加了TCP代理支持的可能性。从而,正如图2的方法那样,在步骤46中,防护设备28发送具有编码的确认号的ACK分组,然后在重置接收步骤78中,等待接收作为响应的RST分组。如果防护设备接收RST分组,并确定该RST分组包含正确的序列号和TTL值(根据图2中的步骤50和54的标准),则在步骤56中,它允许源IP地址处的计算机24直接与服务器22建立连接。 在步骤46中发送ACK分组之后,防护设备28等待一定时段,例如4秒。此时段通常被选择为充分长于SYN重新发送超时时段加上所估计的防护设备28和计算机24之间的往返传输时间。然后在SYN-ACK步骤80中,防护设备向原SYN分组的源IP地址发送正确的TCP SYN-ACK分组。SYN-ACK分组的ISN包含cookie,以使得防护设备能够识别对可能由计算机24发送的SYN-ACK分组的合法响应。不论在步骤78中防护设备是否接收到RST分组,都可执行步骤80。 在步骤80之前的等待时段期间,如果在步骤78中源IP地址被认证,则在步骤56中,防护设备28将会允许计算机24建立与服务器22的直接连接。在建立此连接的过程中,服务器22将会发送SYN-ACK分组,给出其自己的ISN,并且计算机24将会以ACK分组来做出响应,以完成三次握手,指定其接收窗口,从而打开连接。当计算机24随后接收到步骤80中由防护设备28发送的SYN-ACK分组时,计算机将会尽一切可能找出将在其设置的接收窗口之外的由此SYN-ACK分组指定的ISN。在这种情况下,响应于由防护设备发送的多余SYN-ACK,计算机24将会返回ACK分组。此ACK分组将会指示已与服务器22建立的TCP连接上所预期的正确的下一序列号,因而对于此连接没有影响。 另一方面,如果计算机24尚未建立与服务器22的连接(例如,因为它未收到步骤46中发送的ACK分组,因此在步骤78中未返回RST分组),计算机将会把步骤80中发送的SYN-ACK分组视为对由计算机发送的SYN分组的适当的TCP回复。在这种情况下,同样,计算机24将会响应于SYN-ACK分组返回ACK分组,但是ACK分组的确认号将会包含由防护设备28插入到在步骤80中发送的SYN-ACK分组中的cookie。但是,如果SYN分组的源IP地址是欺骗性的,则计算机24将会把SYN-ACK分组视为错误的,并且作为响应将会返回RST分组。或者,如果源IP地址是欺骗性的并且未被分配给任何计算机,则将会没有对SYN-ACK分组的响应。 因此,在SYN-ACK响应步骤82中,防护设备28对来自计算机24的对步骤80中由防护设备发送的SYN-ACK分组的响应进行评估。如果计算机24用RST分组响应SYN-ACK分组,或者不做任何响应,则防护设备将SYN分组的源IP地址视为可能非法,并且不允许源IP地址建立与服务器22的直接连接。或者,当在步骤82中接收到ACK分组时,在cookie检查步骤84中,防护设备对照步骤80中插入到SYN-ACK分组中的cookie,检查ACK分组的确认号。如果确认号不匹配cookie(如果在步骤78中的成功认证之后,在步骤56中已经建立计算机24和服务器22之间的直接连接,就会出现这种情况),则防护设备丢弃ACK分组,并且不采取进一步行动。但是,如果确认号匹配cookie,则在代理连接步骤86中,防护设备打开到源IP地址的TCP代理连接。于是,如上文所描述的,允许计算机24经由代理连接与服务器22通信。 从而,图5的方法具有允许所有合法计算机24直接或通过代理建立到服务器22的TCP连接的优点。此方法具有以下缺点:可能出现带宽放大(由于ACK和SYN-ACK回复的发送),以及用代理操作的额外开销加重防护设备28的负担。由于此原因,正如早前所描述的,防护设备可在其代理连接被打开后的短时间内关闭其代理连接,并且促使这些代理连接中涉及的计算机直接连接到服务器22。 图6是示意性地示出根据本发明的另一个实施例用于认证TCP连接请求的方法的流程图。此方法与图5中所示的方法类似地开始,直到并包括步骤46,在该步骤中,防护设备28向步骤40中接收到的SYN分组的源IP地址发送具有“错误”确认号的ACK分组。确认号可包含cookie,并且可对SYN分组的TTL值编码。或者,ACK分组可包含任意的错误确认号。 在第一RST接收步骤88中,防护设备28等待接收来自源IP地址的RST分组。如果未接收到RST分组(例如,如果步骤46中发送的ACK分组被防火墙所阻止,则会发生这种情况),则防护设备不允许在源IP地址和服务器22之间建立直接连接。相反,如上文所描述的,在步骤86中,防护设备可允许源IP地址经由TCP代理连接与服务器通信。 如果在步骤88中,防护设备28接收到RST分组,则在序列检查步骤89中,它可选择性地对照步骤46中创建的cookie检查RST分组的序列号和TTL值。在此步骤中,防护设备28确定RST分组是否包含正确的序列号和TTL值,正如图2的方法中的步骤50和54中那样。如果是的话,则如上文所描述的,在步骤56中,防护设备允许计算机24建立与服务器22的直接连接。 如果正如在步骤89中所确定的,防护设备28接收到具有不匹配cookie中编码的值的TTL值的RST分组,则在正确ACK发送步骤90中,防护设备向步骤40中接收到的SYN分组的源IP地址发送第二ACK分组。或者,可省略步骤89,在这种情况下防护设备只要在步骤88中接收到RST分组,则直接前进到步骤90。步骤90中发送的ACK分组具有正确的确认号:ISN+1,正如步骤60中那样(图3)。 在第二RST接收步骤92中,防护设备28等待接收响应于第二ACK分组的另一个RST分组。防护设备等待一定的超时时段,此超时时段通常被设为大于所估计的在防护设备28和计算机24之间交换分组所花费的往返运输时间。(往返运输时间通常小于1秒,并且对于每个源IP地址,可基于步骤46和88中的第一ACK/RST交换来测量)。如果在此超时时段内未接收到RST分组,则防护设备确定原SYN分组的源IP地址是合法的,正如图3中的方法那样(但是通过在步骤88中接收到RST分组,提供了额外的安全性)。在这种情况下,如上文所描述的,在步骤56中,防护设备允许计算机24直接连接到服务器22。但是,如果在步骤92中,防护设备接收到RST分组,则它不认证源IP地址。相反,如上文所描述的,在代理连接步骤86中,防护设备可打开到源IP地址的TCP代理连接。 图7是示意性地示出根据本发明的另一个实施例用于认证TCP连接请求的方法的流程图。此方法基于图3的方法,直到步骤62。在此步骤中,如果防护设备28在步骤40中接收到的SYN分组的源IP地址的响应中接收到RST分组,则如上文所描述的,在步骤86中,防护设备可打开到计算机24的TCP代理连接。 如果在步骤62中未接收到RST分组,则在第二SYN接收步骤100中,防护设备28等待接收来自源IP地址的重新发送的SYN分组。如果未接收到重复的SYN分组,则防护设备不需要采取进一步行动。但是,当接收到重新发送的SYN分组时,在步骤46中,防护设备通过发送另一个ACK分组,启动图2的方法,这一次该ACK分组中具有编码后的确认号。然后防护设备等待接收所预期的响应于ACK分组的来自源IP地址的RST分组,并在步骤78中分析RST分组的序列号和TTL值。该分析按上文中参考图2所描述的方式(步骤50和54)进行。当在步骤78中成功认证后,在步骤56中,允许计算机24直接连接到服务器22。正如图4的方法中那样,图7的方法假设网络26上的分组递送是充分可靠的,以使得分组以其被发送的原始顺序到达其目的地。在此假设被违反的情况下,防护设备28可能偶尔会允许非法源IP地址打开到服务器22的连接,或者可能将合法源IP地址认定为非法。 或者,如果在步骤78中,防护设备28未接收到正确的RST分组,则在第三SYN接收步骤102中,它等待接收另一个重新发送的SYN分组。响应于第三SYN,在步骤86中,防护设备打开到计算机24的TCP代理连接。否则,如果未接收到第三SYN分组,则防护设备不需要采取进一步行动。 图6和图7的方法具有高可靠性的优点,而没有带宽放大的缺陷。这两种方法都要求防护设备28维护一个数据结构,该数据结构大到足以跟踪发送了SYN分组但尚未被认证或认定为不合法的每个源IP地址认证过程的状态。应使得对该数据结构的访问足够快速,以便防护设备不会变成流量瓶颈。构造和访问这种数据结构的适当的方法是本领域中已知的。例如,散列表可用于此目的。 虽然以上所描述的方法具体是指TCP的特征,但是本发明的原理可类似地应用于认证使用其他面向连接的协议的连接请求。从而可意识到,以上所描述的实施例是以示例的方式引证的,并且本发明不限于以上具体示出和描述的。相反,本发明的范围包括以上描述的各种特征的结合和子结合,及其变化和修改,本领域的技术人员在阅读前述描述和现有技术中公开的内容后,可想到这些结合、子结合、变化和修改。 本申请要求2003年3月3日提交的美国临时专利申请60/451,601的权益。本发明还涉及2001年8月14日提交的美国专利申请09/929,877;2002年8月29日提交的美国专利申请10/232,993;以及2004年1月26日提交的题为“Upper-Level Protocol Authentication(上层协议认证)”的美国临时专利申请。所有这些相关申请都被转让给本专利申请的受让人,这里通过引用将其公开内容包含进来。
《利用TCP认证IP源地址.pdf》由会员分享,可在线阅读,更多相关《利用TCP认证IP源地址.pdf(44页珍藏版)》请在专利查询网上搜索。
一种用于认证通信流量的方法包括截取根据由预定通信协议所指定的握手程序在网络(26)上从源地址定向到目标计算机(22)的打开连接的请求。偏离指定的握手程序的对所述请求的回复被发送到所述源地址。来自所述源地址的对所述回复的响应被分析,以评估所述源地址的合法性。在基于评估确定所述源地址合法时,目标计算机被允许完成所述握手程序,以便打开与所述源地址的连接。 。
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1