CN101296223A - 一种实现防火墙芯片参与syn代理的方法 - Google Patents
一种实现防火墙芯片参与syn代理的方法 Download PDFInfo
- Publication number
- CN101296223A CN101296223A CNA2007100983991A CN200710098399A CN101296223A CN 101296223 A CN101296223 A CN 101296223A CN A2007100983991 A CNA2007100983991 A CN A2007100983991A CN 200710098399 A CN200710098399 A CN 200710098399A CN 101296223 A CN101296223 A CN 101296223A
- Authority
- CN
- China
- Prior art keywords
- syn
- chip
- server
- sequence number
- ack
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种实现防火墙芯片参与SYN代理的方法,由运行在通用CPU上的软件完成SYN代理的协商过程;和服务器协商完成后,运行在通用CPU上的软件把TCP序列号的差值登记在连接表数据结构中,然后删除先前分配的SYN代理专用数据结构;对于已建立连接的正常通信,防火墙芯片在转换TCP序列号的基础上,快速处理通信报文。本发明中,TCP连接状态的维护、数据包的重传等消耗内存资源的复杂处理由运行在通用CPU上的软件承担,保证了SYN代理功能的完整性。本发明方法在抵御SYN Flood攻击的同时,合法的正常通信仍可以由芯片快速转发,提高了系统性能。
Description
技术领域
本发明属于网络技术领域,涉及网络安全和组网技术,具体涉及一种抵御同步洪流(SYNflood)攻击的方法。
背景技术
SYN Flood是一种被广泛使用的攻击手段,它利用TCP协议的特点完成攻击。通常一次TCP连接的建立包括以下3个步骤:
(1)客户端发送SYN包给服务器端;
(2)服务器分配一定的资源给连接,返回SYN/ACK包,并等待连接建立的最后的ACK包;
(3)最后,客户端发送ACK报文给服务器端,完成TCP连接的建立。
SYN Flood攻击的过程就是连续发送SYN包,而不返回ACK报文,导致服务器系统资源占用过多,没有能力响应别的操作,或者不能响应正常的网络请求。
抵御SYN Flood攻击是网络安全设备的必备功能之一。抵御方式有多种,但对于防火墙这种网关型设备来说,效果较好的方式是实现SYN代理:当客户端SYN包到达防火墙时,防火墙并不转发SYN包,而是以服务器的名义主动回复SYN/ACK包给客户端,如果收到客户端的ACK包,表明这是正常的访问,此时防火墙以客户端的身份向服务器发送SYN包并完成三次握手。防火墙在这个过程中充当了SYN代理的角色,代替了服务器去处理SYN攻击,此时要求防火墙自身具有很强的防范SYN攻击的能力。
实现SYN代理有两个关键的地方:一是为了区分SYN flood攻击和正常通信,需要维护连接的状态,记录三次握手是否正常完成;二是对正常通信来说,实际上经历了客户端与代理、代理与服务器之间的两个三次握手过程,这两者之间的TCP序列号会有一个差值,后续通信的数据包需要根据这个差值完成TCP序列号的转换。
维护连接的状态需要消耗大量的内存资源,同时为了保证SYN代理的协商能够可靠进行,需要实现重传机制,这使得在防火墙芯片(FPGA/ASIC)内部实现完整的SYN代理难度非常大。因此,目前的通常做法是将这些任务交由软件处理,即由运行在通用CPU上的软件完成SYN代理的整个处理过程。但这种处理方式有明显的缺点:对于启动SYN代理保护的服务器而言,合法的正常通信也需要交给通用CPU处理,不能充分利用芯片快速转发的优势,当然也无法体现加速芯片对系统性能的提升。
发明内容
本发明目的在于克服现有技术完全依赖运行在通用CPU上的软件完成SYN代理的整个处理过程所存在的问题,提出一种让防火墙芯片参与SYN代理的方法,通过防火墙芯片与软件的配合实现完整的SYN代理,以充分利用防火墙芯片快速转发的优势。
为实现上述目的,本发明提出的实现防火墙芯片参与SYN代理的方法如下:
第一步,由运行在通用CPU上的软件完成SYN代理的协商过程;
第二步,和服务器协商完成后,运行在通用CPU上的软件把TCP序列号的差值登记在连接表数据结构中,然后删除先前分配的SYN代理专用数据结构;
第三步,对于已建立连接的正常通信,防火墙芯片在转换TCP序列号的基础上,快速处理通信报文。
本发明的有益效果表现在:
TCP连接状态的维护、数据包的重传等消耗内存资源的复杂处理由运行在通用CPU上的软件承担,保证了SYN代理功能的完整性,又能保持很好的扩展性和灵活性。
在抵御SYNFlood攻击的同时,合法的正常通信仍可以由芯片快速转发,TCP序列号的转换在芯片查连接表的过程中完成,不会造成系统性能的下降。
附图说明
本发明没有附图。
具体实施方式
以下结合具体的实施例对本发明方法作进一步的说明。
为方便描述,以下将“防火墙芯片”简称为“芯片”,将“运行在通用CPU上的软件”简称为“软件”。
通过防火墙芯片与软件的配合实现完整的SYN代理,以充分利用防火墙芯片快速转发的优势。
首先,芯片收到客户端发起的SYN包,提取报文头信息进行判断,如果发现是TCP三次握手的第一个报文,则将其交给软件处理;
其次,软件检查防火墙规则,如果检查结果为允许访问,并且访问的目的主机受SYN代理保护,则启动SYN代理处理流程。软件以服务器的身份构造SYN+ACK包,回送给客户端,记录客户端的序列号,进入TS_SP_STAT_SYN_RCVD状态,等待客户端的ACK报文。如果在后面的某个时刻收到针对SYN+ACK的ACK报文,则说明连接合法,软件开始和服务器协商,协商过程是一个完整的三次握手过程,为了保证协商能够可靠进行,软件最好能实现重传机制。如果超过规定时间没有收到针对SYN+ACK的ACK报文,说明不是合法的连接,则释放资源。
第三,和服务器协商完成后,软件把TCP序列号的差值登记在连接表数据结构中,然后删除先前分配的SYN代理专用数据结构。
最后,已建立连接的后续正常通信过程中,芯片查找连接表,根据连接表的内容作序列号转换。序列号转换包括修改从服务器到客户端的报文的SYN序号,以及修改从客户端到服务器的报文的ACK序号。这一步骤与网络地址转换(NAT)等其他转换一起完成。转换完成后,芯片重新计算校验和,并继续完成数据包的发送。这样,正常的通信报文仍由芯片快速处理。
在TCP客户机C通过防火墙F与TCP服务器S进行通信时,本发明防火墙芯片参与SYN代理的处理过程如下:
步骤一,客户机C发出seq=s的SYN包,芯片收到该报文后交给软件处理;
步骤二,软件进行必要的防火墙规则判断后,以服务器S的身份构造seq=c,ack=s+1的SYN+ACK包,回送给客户机C;
步骤三,客户机C响应seq=s+1,ack=c+1的ACK包;
步骤四,软件判断该ACK包合法,向服务器S发送seq=s的SYN包;
步骤五,服务器S回应seq=c’,ack=s+1的SYN+ACK包;
步骤六,软件向服务器S回应seq=s+1,ack=c’+1的ACK包,完成握手。同时将seq的差值seq_diff=c-c’记录到对应的连接表数据结构中。
客户机C到服务器S的后续通信,客户机C发送seq=m,ack=c+n的数据报文,经过芯片时,芯片进行seq转换ack’=ack-seq_diff=c+n-(c-c’)=c’+n,之后芯片重算校验和并转发数据。该过程不需要软件参与。
服务器S到客户机C的后续通信,服务器发送seq=c’+m,ack=n的数据报文,经过芯片时,芯片进行seq转换seq’=seq+seq_diff=c’+m+(c-c’)=c+m,之后芯片重算校验和并转发数据。该过程同样不需要软件参与。
Claims (5)
1、一种实现防火墙芯片参与SYN代理的方法,其特征在于:
第一步,由运行在通用CPU上的软件完成SYN代理的协商过程;
第二步,和服务器协商完成后,运行在通用CPU上的软件把TCP序列号的差值登记在连接表数据结构中,然后删除先前分配的SYN代理专用数据结构;
第三步,对于已建立连接的正常通信,防火墙芯片在转换TCP序列号的基础上,快速处理通信报文。
2、根据权利要求1所述的实现防火墙芯片参与SYN代理的方法,其特征在于,第一步中所述协商过程如下:
首先,芯片收到客户端发起的SYN包,提取报文头信息进行判断,如果发现是TCP三次握手的第一个报文,则将其交给所述软件处理;
然后,所述软件检查防火墙规则,如果检查结果为允许访问,并且访问的目的主机受SYN代理保护,则启动SYN代理处理流程;软件以服务器的身份构造SYN+ACK包,回送给客户端,记录客户端的序列号,进入TS_SP_STAT_SYN_RCVD状态,等待客户端的ACK报文;
如果在后面的某个时刻收到针对SYN+ACK的ACK报文,则软件开始和服务器协商,协商过程是一个完整的三次握手过程,如果超过规定时间没有收到针对SYN+ACK的ACK报文,则释放资源。
3、根据权利要求1所述的实现防火墙芯片参与SYN代理的方法,其特征在于,所述第三步中,已建立连接的后续正常通信过程中,芯片查找连接表,根据连接表的内容作序列号转换,包括修改从服务器到客户端的报文的SYN序号,以及修改从客户端到服务器的报文的ACK序号,这一步骤与网络地址转换(NAT)一起完成;转换完成后,芯片重新计算校验和,并继续完成数据包的发送。
4、根据权利要求2所述的实现防火墙芯片参与SYN代理的方法,其特征在于,所述第三步中,已建立连接的后续正常通信过程中,芯片查找连接表,根据连接表的内容作序列号转换,包括修改从服务器到客户端的报文的SYN序号,以及修改从客户端到服务器的报文的ACK序号,这一步骤与网络地址转换(NAT)一起完成;转换完成后,芯片重新计算校验和,并继续完成数据包的发送。
5、根据权利要求1至4中任意一项所述的实现防火墙芯片参与SYN代理的方法,其特征在于,所述软件能够实现重传机制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100983991A CN101296223B (zh) | 2007-04-25 | 2007-04-25 | 一种实现防火墙芯片参与syn代理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100983991A CN101296223B (zh) | 2007-04-25 | 2007-04-25 | 一种实现防火墙芯片参与syn代理的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101296223A true CN101296223A (zh) | 2008-10-29 |
CN101296223B CN101296223B (zh) | 2011-02-02 |
Family
ID=40066238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100983991A Active CN101296223B (zh) | 2007-04-25 | 2007-04-25 | 一种实现防火墙芯片参与syn代理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101296223B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101521675B (zh) * | 2009-03-23 | 2012-11-07 | 成都市华为赛门铁克科技有限公司 | 一种用户认证方法及装置 |
CN103209175A (zh) * | 2013-03-13 | 2013-07-17 | 深圳市同洲电子股份有限公司 | 一种建立数据传输连接的方法及装置 |
CN106302495A (zh) * | 2016-08-25 | 2017-01-04 | 北京神州绿盟信息安全科技股份有限公司 | 一种ACK Flood攻击的防护方法及中间防护装置 |
CN108111509A (zh) * | 2017-12-19 | 2018-06-01 | 北京百度网讯科技有限公司 | 数据传输方法 |
CN109150919A (zh) * | 2018-10-31 | 2019-01-04 | 北京天融信网络安全技术有限公司 | 一种网络防攻击的方法及网络设备 |
CN110071939A (zh) * | 2019-05-05 | 2019-07-30 | 江苏亨通工控安全研究院有限公司 | 针对传统ddos防火墙syn flood防护在工业网络中的改进方法 |
CN111431871A (zh) * | 2020-03-10 | 2020-07-17 | 杭州迪普科技股份有限公司 | Tcp半透明代理的处理方法和装置 |
CN112311731A (zh) * | 2019-07-29 | 2021-02-02 | 联合汽车电子有限公司 | 车载处理器、车载控制器及通信方法 |
CN113542450A (zh) * | 2021-07-21 | 2021-10-22 | 北京威努特技术有限公司 | 一种工控防火墙支持ftp穿越nat的实现方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1251446C (zh) * | 2002-07-18 | 2006-04-12 | 华为技术有限公司 | 一种防御网络传输控制协议同步报文泛滥攻击的方法 |
CN1300986C (zh) * | 2003-04-14 | 2007-02-14 | 华为技术有限公司 | 实现快速五七层交换的方法 |
-
2007
- 2007-04-25 CN CN2007100983991A patent/CN101296223B/zh active Active
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101521675B (zh) * | 2009-03-23 | 2012-11-07 | 成都市华为赛门铁克科技有限公司 | 一种用户认证方法及装置 |
CN103209175A (zh) * | 2013-03-13 | 2013-07-17 | 深圳市同洲电子股份有限公司 | 一种建立数据传输连接的方法及装置 |
CN106302495A (zh) * | 2016-08-25 | 2017-01-04 | 北京神州绿盟信息安全科技股份有限公司 | 一种ACK Flood攻击的防护方法及中间防护装置 |
CN108111509A (zh) * | 2017-12-19 | 2018-06-01 | 北京百度网讯科技有限公司 | 数据传输方法 |
CN108111509B (zh) * | 2017-12-19 | 2020-11-06 | 北京百度网讯科技有限公司 | 数据传输方法 |
US10848599B2 (en) | 2017-12-19 | 2020-11-24 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Data transmission method and gateway as well as server and computer-readable storage medium |
CN109150919B (zh) * | 2018-10-31 | 2021-06-08 | 北京天融信网络安全技术有限公司 | 一种网络防攻击的方法及网络设备 |
CN109150919A (zh) * | 2018-10-31 | 2019-01-04 | 北京天融信网络安全技术有限公司 | 一种网络防攻击的方法及网络设备 |
CN110071939A (zh) * | 2019-05-05 | 2019-07-30 | 江苏亨通工控安全研究院有限公司 | 针对传统ddos防火墙syn flood防护在工业网络中的改进方法 |
CN110071939B (zh) * | 2019-05-05 | 2021-06-29 | 江苏亨通工控安全研究院有限公司 | 针对传统ddos防火墙syn flood防护在工业网络中的改进方法 |
CN112311731A (zh) * | 2019-07-29 | 2021-02-02 | 联合汽车电子有限公司 | 车载处理器、车载控制器及通信方法 |
CN111431871A (zh) * | 2020-03-10 | 2020-07-17 | 杭州迪普科技股份有限公司 | Tcp半透明代理的处理方法和装置 |
CN113542450A (zh) * | 2021-07-21 | 2021-10-22 | 北京威努特技术有限公司 | 一种工控防火墙支持ftp穿越nat的实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101296223B (zh) | 2011-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101296223B (zh) | 一种实现防火墙芯片参与syn代理的方法 | |
EP1175066B1 (en) | Method and system for providing connection handling | |
Ford et al. | TCP extensions for multipath operation with multiple addresses | |
CN101175013B (zh) | 一种拒绝服务攻击防护方法、网络系统和代理服务器 | |
US7672223B2 (en) | Method and apparatus for replicating a transport layer protocol stream | |
EP3352431B1 (en) | Network load balance processing system, method, and apparatus | |
CN101547210A (zh) | 一种tcp连接的处理方法和装置 | |
EP3276891B1 (en) | Techniques for establishing a communication connection between two network entities via different network flows | |
CN102291441A (zh) | 一种防范SYN Flood攻击的方法及安全代理装置 | |
CN103051642A (zh) | 基于vpn实现防火墙内局域网设备访问的方法及网络系统 | |
CN100420197C (zh) | 一种实现网络设备防攻击的方法 | |
US20020099851A1 (en) | Decoupling TCP/IP processing in system area networks | |
JP6444988B2 (ja) | Httpを利用する通信システム | |
JP2010200300A (ja) | Tcp通信方式 | |
JP2017118545A5 (zh) | ||
JP3999785B2 (ja) | 通信方法 | |
Simpson | TCP cookie transactions (TCPCT) | |
WO2010141034A1 (en) | Multi-directional secure common data transport system | |
CN102917082A (zh) | 穿透网络地址转换的消息推送方法及系统 | |
JP2006203537A (ja) | ネットワーク伝送装置およびネットワーク伝送方法 | |
US8737413B2 (en) | Relay server and relay communication system | |
JP2006148727A (ja) | アプリケーションモニタ装置 | |
CN117397232A (zh) | 无代理协议 | |
JP3648211B2 (ja) | パケット中継プログラム、パケット中継装置および記録媒体 | |
JP2013102454A (ja) | Tcp通信方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |