一种防范SYN Flood攻击的方法及安全代理装置
技术领域
本发明涉及网络安全技术,尤其涉及一种防报文攻击的方法及装置。
背景技术
随着网络通信技术的进步,各种网络攻击引发的网络安全问题日益受到人们的关注。越来越多的企业以及运营商开始使用诸如防火墙等网络安全设备为网络通信提供保护措施。
基于TCP协议的报文攻击行为是相当常见的网络攻击。这种攻击的特点通过大量发送SYN报文来消耗大量的服务器资源,由于以致服务器没有足够的资源去响应其他客户端的访问请求。这种攻击被称为SYN Flood。
SYN flood攻击是一种通过向目标服务器发送SYN报文,消耗其系统资源,削弱目标服务器的服务提供能力的行为。一般情况下,SYN Flood攻击是在采用IP源地址欺骗行为的基础上,利用TCP连接建立时的三次握手过程形成的。
正常情况下,TCP连接的建立需要双方进行三次握手,只有当三次握手都顺利完成之后,一个TCP连接才能成功建立。当客户端向服务器发出请求,建立一个TCP连接时,双方要进行以下消息交互:
(1)客户端向服务器发送一个SYN报文;
(2)如果服务器同意建立连接,则响应客户端一个对SYN报文的回应(SYN/ACK);
(3)客户端收到服务器的SYN/ACK以后,再向服务器发送一个ACK报文进行确认。当服务器收到客户端的ACK报文以后,一个TCP的连接成功完成。
请参考图1,在上述过程中,当服务器收到SYN报文后,在发送SYN/ACK回应客户端之前,需要分配一个数据区记录这个未完成的TCP连接,这个数据区通常称为TCB资源,此时的TCP连接也称为半开连接。这种半开连接只有在收到客户端响应报文或连接超时后才断开,而客户端在收到SYN/ACK报文之后才会分配TCB资源,因此这种不对称的资源分配模式会被攻击者所利用形成SYN Flood攻击。
攻击者随机构造源IP地址向目标服务器发起连接,该服务器回应SYN/ACK消息作为响应,由于应答消息的目的地址是随机的,所以这个地址很可能不存在,不会对服务器进行响应。因此,TCP握手的最后一个步骤将永远不可能发生,该连接就一直处于半开状态直到连接超时后被删除。如果攻击者用快于服务器TCP连接超时的速度,连续对目标服务器开放的端口发送SYN报文,服务器的所有TCB资源都将被消耗,以至于不能再接受其他客户端的正常连接请求。
为了解决上述问题,现有技术中在单边流情况下,对SYN Flood防护通常用SYN Safe Reset+白名单方式,即通过验证发起连接客户端的合法性,使服务器免受SYN flood攻击。请参考图2,Safe Reset技术通过拦截TCPSYN(连接新建)报文,修改响应报文序列号且带认证(称之为cookie)信息发回给客户端,再通过客户端回应的报文中携带的信息来验证客户端的合法性。如验证通过,则会将客户端IP地址加入白名单,同时设置老化时间,在老化时间内,此IP再次访问服务器时,会直接放行。
即便如此,如果一旦攻击者伪造的源IP地址与部分合法客户端的IP地址一致时,服务器仍将遭受一定程度的攻击。
发明内容
有鉴于此,本发明提供一种更可靠且实施成本较低的解决方案以解决现有技术的问题。本发明提供一种防范SYN Flood攻击的安全代理装置,其应用于网络安全设备中,该装置包括:
报文检查单元,用于检查发出TCP SYN报文的客户端是否在客户端白名单中有对应的表项;如果是,允许该报文通过并删除该客户端对应的表项;如果否,则转客户端验证单元处理;
客户端验证单元,用于向发出TCP SYN报文的客户端发出验证请求报文并通过客户端返回的验证响应报文检验客户端是否为合法客户端,若客户端为合法客户端,则在客户端白名单中增加对应的表项,否则丢弃该丢弃该验证响应报文。
优选地,所述客户端白名单的表项包括IP地址以及源端口号。
优选地,所述验证请求报文为携带Cookie的SYN ACK报文。
优选地,所述验证响应报文为RST报文。
优选地,其中所述网络安全设备还包括访问控制单元,用于从接收到的报文中筛选出TCP SYN报文并提交给报文检查单元,以及用于从接收到的报文中筛选出验证响应报文并提交给客户端验证单元。
本发明还提供一种防范SYN Flood攻击的方法,其应用于网络安全设备中,该方法包括:
A、检查发出TCP SYN报文的客户端是否在客户端白名单中有对应的表项;如果是,允许该报文通过并删除该客户端对应的表项;如果否,则转步骤B处理;
B、向发出TCP SYN报文的客户端发出验证请求报文并通过客户端返回的验证响应报文检验客户端是否为合法客户端,若客户端为合法客户端,则在客户端白名单中增加对应的表项,否则丢弃该验证响应报文。
优选地,所述客户端白名单的表项包括IP地址以及源端口号。
优选地,所述验证请求报文为携带Cookie的SYN ACK报文。
优选地,所述验证响应报文为RST报文。
优选地,还包括:C、从接收到的报文中筛选出TCP SYN报文并转步骤A处理,以及
D、从接收到的报文中筛选出验证响应报文并转步骤B处理。。
本发明巧妙地改进了表项删除机制,解决了上述问题,其优点是改动小实施成本非常低,但效果却非常显著。同时再配合签署IP地址+源端口的表项内容设计,充分利用了客户端新建TCP连接时源端口号会呈现较强的随机性这个特点,使得攻击者成功攻击的难度再提高了一截,因此实施本发明之后,攻击者想要利用白名单中合法客户端的IP地址蒙混过关几乎不可能。
附图说明
图1是一种典型的SYN Flood攻击原理图。
图2是现有技术中防范SYN Flood攻击的原理图。
图3是本发明安全代理装置的逻辑结构图。
图4是本发明防范SYN Flood攻击的流程图
具体实施方式
本发明利用位于客户端(Client)与服务器(Server)之间的安全代理装置来防范基于TCP协议的SYN Flood攻击。本发明所说的安全代理装置是一种逻辑装置,其可位于各种具有安全功能的物理网络设备(如路由器、三层交换、防火墙等网络安全设备)上。本发明安全代理装置主要包括:报文检查单元11以及客户端验证单元12,其中所述网络安全设备还包括访问控制单元20。以上各个单元都是逻辑意义上的单元,从实现上可以是软件实现(即通过CPU运行内存中的软件代码实现)也可以是硬件或者固件实现。以下结合图3以计算机软件为例进行说明。
步骤101,从安全设备接收到的报文中筛选出TCP SYN报文以及验证响应报文;本步骤由网络安全设备的报文过滤单元执行。
通常情况下,网络安全设备会报文接收环节设置各种规则来决定报文的处理流程。比如最典型的以底层芯片内部的访问控制列表为例,可以设置很多ACL规则来决定报文的下一步处理,比如允许某类报文通过,丢弃某类报文,将某类报文上送特定软件单元进行处理等等。在本发明中,访问控制单元20主要的作用是将TCP SYN报文筛选出来送给报文检查单元11处理;以及把验证响应报文筛选出来送给客户端验证单元处理。目前大部分芯片提供上述访问控制的功能,而下发给中ACL规则也是本领域普通技术人员所知晓的一般技术知识,因此不再赘述。需要补充说明的是,访问控制单元依然可以采用软件的方式加以实现,这取决与安全设备整体设计的考量。
步骤102,检查发出TCP SYN报文的客户端是否在客户端白名单中有对应的表项;如果是,允许该报文通过并删除该客户端对应的表项;如果否,则转客户端验证单元处理;本步骤由报文检查单元11执行。
步骤103,向发出TCP SYN报文的客户端发出验证请求报文并通过客户端返回的验证响应报文检验客户端是否为合法客户端,若客户端为合法客户端,则在客户端白名单中增加对应的表项,否则丢弃该TCP SYN报文;本步骤由客户端验证单元12执行。
对于成功地通过了验证的客户端,客户端验证单元12将把客户端发出的TCP SYN报文的源IP地址以及源端口放入白名单作为一条新的表项。在优选的实施方式中,本发明的白名单表项包括IP地址以及源端口。如果一个客户端创建一个新TCP连接,其首先会发出TCP SYN报文,报文检查单元会检查到该报文并不在白名单中,这是因为即便该客户端之前曾经创建过TCP连接,虽然两次TCP连接所使用的IP地址都是一样的,但是两次TCP连接的源端口号很多时候是不相同的。但是在现有技术中,由于白名单中的表项内容仅仅包括IP地址,那么很有可能第二次TCP连接创建会被放行。这种特点很容易被攻击者加以利用,攻击者伪造大量的IP地址,其中部分可能与合法客户端的IP地址相同,这部分攻击TCP SYN报文就能够蒙混过关,到达服务器端。
然而,对于本发明来说同样也可以仅仅使用IP地址作为表项内容。因为本发明依然有机制来保证攻击报文难以蒙混过关。如前所述,客户端第一次新建一个TCP连接会发送TCP SYN报文,客户端此时不在白名单中,转到验证流程进行处理。客户端验证单元12发送验证响应报文(典型的方式是携带Cookie的SYN ACK报文)给客户端,客户端协议栈会发送验证响应报文(典型的方式是RST报文)进行响应。客户端验证单元12收到验证响应报文后对Cookie进行检查,如果通过,则视为通过验证,将客户端加入到白名单中,如果无法通过,则丢弃该验证响应报文。
客户端验证通过以后还会立刻再次发送TCP SYN报文,此时由于客户端已经在白名单中了,报文检查单元11发现该报文属于白名单中的合法客户端发出的,因此会放行该报文并触发对该合法客户端对应表项的删除动作。当客户端再次创建一个新的TCP连接时,由于白名单中的表项已经被删除,那么客户端需要重复上述流程。这个删除动作会保证每次客户端新建一个TCP连接都需要进行验证,因此攻击者很难利用一个合法客户端的IP地址蒙混过关。
在现有技术中,白名单的表项内容都是通过时间进行老化的,首先老化时间比较长,攻击者可以加以利用;另外,由于很多客户端一直处于活跃状态,那么白名单中的表项不会被老化,攻击者有更高的机会利用合法客户端的IP地址蒙混过关。在这一点上,本发明巧妙地改进了表项删除机制,解决了上述问题,其优点是改动小实施成本非常低,但效果却非常显著。同时再配合签署IP地址+源端口的表项内容设计,充分利用了客户端新建TCP连接时源端口号会呈现较强的随机性这个特点,使得攻击者成功攻击的难度再提高了一截,因此实施本发明之后,攻击者想要利用白名单中合法客户端的IP地址蒙混过关几乎不可能。
以上所描述的仅仅是本发明较佳的实现方式,并不用以限定本发明的保护范围,任何等同的变化和修改皆应涵盖在本发明的保护范围之内。