首页 理论教育 网络安全技术:如何防范攻击?

网络安全技术:如何防范攻击?

时间:2023-10-27 理论教育 版权反馈
【摘要】:图2.62 Land攻击Land攻击的防御方法是检测每一个IP报文的源地址和目标地址,若两者相同,或者源地址为回环地址127.0.0.1,则根据用户配置对报文进行转发或拒绝接收,并将该攻击记录到日志。

网络安全技术:如何防范攻击?

1.为什么需要攻击防范

随着网络技术的普及,网络攻击行为出现越来越频繁。另外,由于网络应用的多样性和复杂性,使得各种网络病毒泛滥,更加剧了网络被攻击的危险。

防火墙通过分析报文的内容特征和行为特征,判断报文是否具有攻击特性,能够检测拒绝服务器(denial of service,DoS)、分布式拒绝服务器(distribute denial of service,DDoS)、扫描窥探型、畸形报文型等多种类型的攻击,并对攻击采取合理的防范措施以保护网络主机或者网络设备

目前,Internet上常见的网络安全威胁分为以下3类:

(1)畸形报文攻击 畸形报文攻击是通过向目标系统发送有缺陷的IP报文,如分片重叠的IP报文、TCP标志位非法的报文,使得目标系统在处理这样的IP报文时崩溃,给目标系统带来损失。主要的畸形攻击有Ping of Death,Teardrop等。

(2)DoS/DDoS攻击 DoS/DDoS攻击是使用大量的数据包攻击目标系统,使目标系统无法接受正常用户的请求,或者使目标主机挂起不能正常工作。主要的DoS/DDoS攻击有Smurf,Land,SYN Flood,UDP Flood和ICMP Flood等。DoS/DDoS攻击和其他类型的攻击不同之处在于,攻击者并不寻找进入目标网络的入口,而是通过扰乱目标网络的正常工作来阻止合法用户访问网络资源。

(3)扫描窥探攻击 扫描窥探攻击利用Ping扫描(包括ICMP和TCP)标识网络上存在的活动主机,从而可以准确地定位潜在目标的位置;利用TCP和UDP端口扫描检测出目标操作系统和启用的服务类型。攻击者通过扫描窥探就能大致了解目标系统提供的服务种类和潜在的安全漏洞,为进一步侵入目标系统做好准备。

在多种网络攻击类型中,DoS/DDoS攻击是最常见的一种,因为这种攻击方式对攻击技能要求不高,攻击者可以利用各种开放的攻击软件实施攻击行为,所以,DoS/DDoS攻击的威胁逐步增大。成功的DoS/DDoS攻击会导致服务器性能急剧下降,造成正常客户访问失败;同时,提供服务的企业的信誉也会蒙受损失,而且这种危害是长期性的。

防火墙必须能够利用有效的攻击防范技术主动防御各种常见的网络攻击,保证网络在遭受越来越频繁的攻击的情况下能够正常运行,从而实现防火墙的整体安全解决。

2.常见攻击类型及防范技术

(1)Smurf攻击

图2.61展示了Smurf攻击和防御方法。Smurf攻击结合了IP欺骗技术和Flood攻击特点。

图2.61 Smurf攻击

攻击者发送大量伪造了源地址的Ping报文,源地址就是被攻击主机的地址,目的地址是某网络的广播地址。这样该网络的所有主机都会收到这个Ping报文,并且根据报文的源地址向被攻击主机发送一个响应报文,如果报文的密度较大,并且网络中主机较多,可以形成很大数据流量,致使被攻击主机瘫痪。

防御Smurf攻击的方法是检查ICMP应答请求报文的目的地址是否为子网广播地址或子网的网络地址。如果是,则根据用户配置选择对报文进行转发或拒绝接受,并将该攻击记录到日志。

(2)Land攻击 Land攻击利用TCP连接建立的三次握手功能,将TCP SYN包的源地址和目的地址都设置成某一个受攻击者的IP地址,导致受攻击者向自己发送SYN ACK消息,如图2.62所示。这样,受攻击者在受到SYN ACK消息后,就会又向自己发送ACK消息,并建立一个空TCP连接,而每一个这样的连接都将保留直到超时。各种系统对Land攻击的反应不同,UNIX主机将崩溃,Windows NT主机会变得极其缓慢。

图2.62 Land攻击

Land攻击的防御方法是检测每一个IP报文的源地址和目标地址,若两者相同,或者源地址为回环地址127.0.0.1,则根据用户配置对报文进行转发或拒绝接收,并将该攻击记录到日志。

(3)WinNuke攻击 WinNuke是针对Internet上运行Windows的任何主机的DoS攻击,如图2.63所示。通过向目标主机的NetBIOS端口(139)发送OOB(OutofBand)数据包,这些攻击中其指针字段与实际的位置不符,即存在重合,从而引起一个NetBIOS片段重叠,致使已经与其他主机建立TCP连接的目标主机在处理这些数据的时候崩溃。重新启动遭受攻击的机器后,会显示下列信息,指示已经发生了攻击:

图2.63 WinNuke攻击

An exception OE occurred at 0028:[address]in VeD MSTCP(01)+

000041AE.This was called from 0028:[address]in Vxd NDIS(01)+

00008660.It may be possible to continue normally.

Press any key to attempt to continue.

Press CTRL+ALT+DEL to restart your computer.You will lose any unsavedinformation in all applications.

Press any key to continue.

防御WinNuke攻击的方法是检测进入防火墙的TCP报文,如果报文的目的报文端口号为139,且URG位被置位,携带了紧急数据区,则根据用户配置选择对报文进行转发或拒绝接收,并将该攻击记录到日志。

(4)SYN Flood攻击 SYN Flood攻击是通过向目标服务器发送SYN报文,消耗其系统资源,削弱目标服务器的服务提供能力的行为。一般情况下,SYN Flood攻击在采用IP源地址欺骗行为的基础上,利用TCP连接建立时的三次握手过程形成的,如图2.64所示。

图2.64 SYN Flood攻击

我们知道,一个TCP连接的建立需要双方进行三次握手,只有当三次握手都顺利完成之后,一个TCP连接才能成功建立。当一个系统(称为客服端)请求与另一个提供服务的系统(称为服务器)建立一个TCP连接时,双方要进行一下消息交互:

●客户端向服务器发送一个SYN消息。

●如果服务器同时建立连接,则响应客服端一个对SYN消息的回应消息(SYN/ACK)。

●客服端收到服务器的SYN/ACK以后,再向服务器发送一个ACK消息进行确认。

●当服务器收到客服端的ACK消息以后,一个TCP的连接成功完成。

在上述过程中,当服务器收到SYN报文后,在发送SYN/ACK回应客户端之前,需要分配一个数据区记录这个未完成的TCP连接,这个数据区通常称为传输控制块(transmission control block,TCB)资源,此时的TCP连接也称为半开连接。这种半开连接仅在收到客户端响应报文或连接超时后断开,而客户端在收到SYN/ACK报文之后才会分配TCB资源,因此这种不对称的资源分配模式会被攻击者利用形成SYN Flood攻击。

攻击者使用一个并不存在的源IP地址向目标服务器发起连接,该服务器回应SYN/ACK消息作为响应,由于应答消息的目的地址并不是攻击者的实际地址,所以这个地址将无法对服务器进行响应。因此TCP握手的最后一个步骤将永远不可能发生,该连接就一直处于半开状态直到连接超时后被删除。如果攻击者用快于服务器TCP连接超时的速度,连续对目标服务器开放的端口发送SYN报文,服务器的所有TCB资源都将被消耗,以至于不能再接受其他客户端的正常连接请求。

在检测到针对服务器的SYN Flood攻击行为后,防火墙可以支持选择多种应对攻击的防范措施,主要包括两大类:

●连接限制技术:采用SYN Flood攻击防范检测技术,对网络中的新建TCP半开连接数和新建TCP连接速率进行实时检测,通过设置检测阈值来有效地发现攻击流量,然后通过阻断新建连接或释放无效连接来抵御SYN Flood攻击。

●连接代理技术:采用SYN Cookie或Safe Reset技术对网络中的TCP连接进行代理,通过精确地验证,准确地发现攻击报文,为服务器过滤掉恶意连接报文的同时,保证常规业务的正常运行。连接代理技术除了可以对检测到攻击的服务器进行代理防范,也可以对可能的攻击对象事先配置,做到全部流量代理,而非攻击发生后再代理,这样可以避免攻击报文已经造成一定损失。

连接数限制技术包括TCP半开连接数限制和TCP新建连接速率限制两种方法,连接代理技术包括SYN Cookie和Safe Reset两种方法。

①基于TCP半开连接限制方法防范SYN Flood攻击。当恶意客户端向目标服务器发起SYN Flood攻击时,如果恶意客户端采用了仿冒的源IP,那么在目标服务器上会存在大量半开连接。这类伪半开连接与正常的半开连接的区别在于,正常半开连接会随着客户端和服务器端握手报文的交互完成而转变成全连接,而仿冒源IP的半开连接永远不会完成握手报文的交互。

为有效区分伪半开连接和正常半开连接,防火墙需要实时记录所有客户端向服务器发起的所有半开连接数和完成了握手交互且转变为全连接的半开连接数,两者之差(即未完成的半开连接数)在服务器未收到攻击时会保持在一个相对恒定的范围内。如果未完成的半开连接数突然增多,甚至接近服务器的资源分配上限,就怀疑此时服务器正受到异常流量的攻击,如图2.65所示。

图2.65 基于TCP半开连接限制方法防范SYN Flood攻击(www.xing528.com)

管理员可以根据被保护服务器的处理能力设置半开连接数阈值。如果服务器无法处理客户端所有连接请求,就会导致未完成的半开连接数(即客户端向服务器发起的所有半开连接数和完成了握手交互变成全连接的半开连接数之差)超过指定阈值,此时防火墙可以判定服务器正在遭受SYN Flood攻击,所有后续的新建连接请求报文都会被丢弃,直到服务器完成当前的半开连接处理,或当前的半开连接数降低到安全阈值时,防火墙才会放开限制,重新允许客户端向服务器发起新建连接请求。

②基于TCP新建连接速率限制方法防范SYN Flood攻击。

当恶意客户端向目标服务器发起SYN Flood攻击时,不管恶意客户端采用仿冒源IP手段还是使用真实的客户端,其结果就是发往服务器的报文会在短时间内大量增加。

恶意客户端发向服务器的报文中,一部分是新建连接的报文,一部分是已建立连接的后续数据报文。防火墙通过记录每秒新建连接的数量,并与设定的阈值比较来判断向目标服务器发起SYN Flood攻击行为是否发生,若达到或超过,则认为攻击行为发生,如图2.66所示。

图2.66 基于TCP新建连接速率限制方法防范SYN Flood攻击

对被保护服务器进行监测时,防火墙在一秒的时间间隔内统计客户端向服务器发起的新建连接请求数量,作为当前的新建请求速率。当新建连接请求速率超过指定阈值时,防火墙设备可以认为服务器可能遭受SYN Flood攻击,超过阈值之后的新建连接报文都被丢弃,直到每秒客户端向服务器发起的连接请求降低到安全阈值以下时,防火墙才会放开限制,重新允许客户端向服务器发起新建连接请求。

上述两种方法都是基于统计意义上的方法,通过统计和分析向受保护服务器发起的所有连接的行为特征,来检测和识别攻击报文。

③利用SYN Cookie技术防范SYN Flood攻击。

SYN Cookie技术借鉴了HTTP中Cookie的概念,可理解为,防火墙对TCP新建连接的协商报文进行处理,使其携带认证信息(Cookie),再通过验证客户端回应的协商报文中携带的信息来进行报文有效性确认的一种技术,该技术的实现机制是防火墙在客户端与服务器之间做连接代理,如图2.67所示。具体过程如下:

A.客户端向服务器发送一个SYN消息。

B.SYN消息经过防火墙时,防火墙截取该消息,并模拟服务器向客户端回应SYN/ACK消息。其中SYN/ACK消息中的序列号为防火墙计算的Cookie,此Cookie值是对加密索引与本次连接的客户端信息(如IP地址、端口号)进行加密运算的结果。

C.客户端收到SYN/ACK报文后向服务器发送ACK消息进行确认。防火墙截取这个消息后,提取该消息中的ACK序列号,并再次使用客户端信息与加密索引计算Cookie。如果计算结果与ACK序列号相符,就可以确认发起连接请求的是一个真实的客户端。如果客户端不回应ACK消息,就意味着现实中并不存在这个客户端,此连接是一个仿冒客户端的攻击连接;如果客户端回应的是一个无法通过检测的ACK消息,就意味着此客户端非法,它仅想通过模拟简单的TCP协议栈来耗费服务器的连接资源。来自仿冒客户端或非法客户端的后续报文都会被防火墙丢弃,而且防火墙也不会为此分配TCB资源。

图2.67 利用SYN Cookie技术防范SYN Flood攻击

如果防火墙确认客户端的ACK消息合法,则模拟客户端向服务器发送一个SYN消息进行连接请求,同时分配TCB资源记录此连接的描述信息。此TCB记录了防火墙向服务器发起的连续请求的信息,同时记录了步骤(B)中客户端服务器发起的连接请求的信息。

D.服务器向防火墙回应SYN/ACK消息。

E.防火墙收到服务器的SYN/ACK回应消息后,根据已有的连接描述信息,模拟客户端向服务器发送ACK消息进行确认。

完成以上过程之后,客户端与防火墙之间建立了连接,防火墙与服务器之间也建立了连接,客户端与服务器关于此次连接的后续数据报文都将通过防火墙进行代理转发。

防火墙的SYN Cookie技术利用SYN/ACK报文携带的认证信息,对握手协商的ACK报文进行了认证,从而避免了防火墙过早分配TCB资源。当客户端向服务器发送恶意SYN报文时,既不会造成服务器上的TCB资源和带宽的消耗,也不会造成防火墙TCB资源的消耗,可以有效防范SYN Flood攻击。在防范SYN Flood攻击的过程中,防火墙作为虚拟的服务器与客户端交互,同时也作为虚拟的客户端与服务器交互,在为服务器过滤掉恶意连接报文的同时保证了常规业务的正常运行。

④利用Safe Reset技术防范SYN Flood攻击。Safe Reset技术是防火墙通过对正常TCP连接进行干预来识别合法客户端的一种技术。防火墙对TCP新建连接的协商报文进行处理,修改响应报文的序列号并使其携带认证信息(Cookie),再通过验证客户端回应协商报文中携带的信息来进行报文有效性确认。

防火墙在利用Safe Reset技术认证新建理解的过程中,对合法客户端的报文进行正常转发,对仿冒客户端以及简单模拟TCP协议栈的恶意客户端发起的新建连接报文进行丢弃,这样服务器就不会为仿冒客户端发起的SYN报文分配连接资源,从而避免SYN Flood攻击,如图2.68所示。

Safe Reset技术的实现过程如下:

A.客户端向服务器发送一个SYN消息。

图2.68 利用Safe Reset技术防范SYN Flood攻击

B.SYN消息经过防火墙时,防火墙截取该消息,并模拟服务器向客户端回应SYN/ACK消息。其中SYN/ACK消息中的ACK序列号与客户端期望的值不一致,同时携带Cookie值。此Cookie值是对加密索引与本次连接的客户端信息(包括IP地址、端口号)进行加密运算的结果。

C.客户端按照协议规定向服务器回应RST消息。防火墙中途截取这个消息后,提取消息中的序列号,并对该序列号进行Cookie校验。成功通过校验的连接被认为是可信的连接,防火墙会分配TCB资源记录此连接的所有合法报文直接放行。

完成以上过程之后,客户端再次发起连接请求,防火墙根据已有的连接描述信息判断报文的合法性,对可信连接的所有合法报文直接放行。

由于防火墙仅通过对客户端向服务器首次发起连接的报文进行认证,能够完成对客户端到服务器的连接检验,而服务器向客户端回应的报文即使不经过防火墙也不会影响正常的业务处理,因此Safe Reset技术也称为单向代理技术。

一般而言,应用服务器不会主动对客户端发起恶意连接,因此服务器响应客户端的报文不需要经过防火墙的检查。防火墙仅需要对客户端发往应用服务器的报文进行实时监控。服务器响应客户端的报文可以根据实际需要选择是否经过防火墙,因此Safe Reset能够支持更灵活的组网方式。

⑤UDP Flood攻击。UDP Flood攻击在短时间内向特定目标发送大量的UDP消息,导致目标系统负担过重而不能处理正常的数据传输任务。

UDP Flood攻击的防御方法是检测发往特定目的地址的UDP报文速率或者报文数量,如果报文速率或者报文总数超过阈值上限,则检测到攻击开始,根据用户的配置选择丢弃或者转发后续连接请求报文,同时将该攻击记录到日志。当速率低于设定的阈值下限后,检测到攻击结束,正常转发后续连接请求报文,如图2.69所示。

⑥ICMP Flood攻击。ICMP Flood攻击短时间内向特定目标系统发送大量的ICMP消息(如执行Ping程序)来请求其回应,致使目标系统忙于处理这些请求报文而不能处理正常的网络数据报文。

ICMP Flood攻击的防御方法是检测发往特定目的地址的ICMP报文速率或者报文总数,如果报文速率或者报文总数超过阈值上限,则认为攻击开始,根据用户的配置选择丢弃或者转发后续连接请求报文,同时将该攻击记录到日志。当速率低于设定的阈值下限后,检测到攻击结束,正常转发后续连接请求报文,如图2.70所示。

图2.69 UDP Flood攻击

图2.70 ICMP Flood攻击

⑦地址扫描攻击。地址扫描攻击运用Ping类型的程序探测目标地址,对此作出响应的系统表示其存在,该探测可以用来确定哪些目标系统确实存在并且是连接在目标网络上的。也可以使用TCP/UDP报文对一定地址发起连接(如TCP Ping),通过判断是否有应答报文来探测目标网络上有哪些系统是开放的。

防御地址扫描攻击的方法是检测进入防火墙的ICMP,TCP和UDP报文,统计从同一个源IP地址发出报文的不同目的IP地址个数。如果在一定的时间内,目的IP地址的个数达到设置的阈值,则直接丢弃报文,并记录日志,然后根据配置决定是否将源IP地址加入黑名单,如图2.71所示。

⑧端口扫描攻击。在端口扫描攻击中,攻击者通常使用一些软件,向目标主机的一系列TCP/UDP端口发起连接,根据应答报文判断主机是否使用这些端口提供服务。利用TCP报文进行端口扫描时,攻击者向目标主机发送连接请求(TCP SYN)报文,若请求的TCP端口是开放的,目标主机回应一个TCP ACK报文,若请求的服务未开放,目标主机回应一个TCP RST报文。分析回应报文是ACK报文还是RST报文,攻击者可以判断目标主机是否启用了请求的服务。利用UDP报文进行端口扫描时,攻击者向目标主机发送UDP报文,若目标主机上请求的目的端口未开放,目标主机回应ICMP不可达报文,若该端口是开放的,则不会回应ICMP报文,通过分析是否回应了ICMP不可达报文,攻击者可以判断目标主机是否启用了请求的服务。这种攻击通常在判断出目标主机开放了哪些端口之后,将会针对具体的端口进行更进一步的攻击,如图2.72所示。

图2.71 地址扫描

图2.72 端口扫描

防御端口扫描攻击的方法是检测进入防火墙的TCP和UDP报文,统计从同一个源IP地址发出报文的不同目的端口个数。如果在一定的时间内,端口个数达到设置的阀值,则直接丢弃报文,并记录日志,然后根据配置决定是否将源IP地址加入黑名单。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈