读书笔记-《华为防火墙技术漫谈》04

三、安全防范

3、流量型攻击之SYN Flood攻击及防御

DDoS(Distributed Denial of Service分布式拒绝服务)攻击指的是攻击者通过掌控大量僵尸主机(俗称“肉鸡”),向目标服务器发送精心构造的大规模攻击数据包,导致目标服务器所在网络链路的过载和系统资源的耗尽,从而使被攻击方无法为正常用户提供服务,产生拒绝服务的效果。

SYN Flood攻击是一种基于TCP协议栈的攻击,为了理解SYN Flood攻击及其防御机制,我们需要先从TCP连接的建立过程开始。在TCP/IP协议中,TCP协议负责提供可靠的连接服务。在数据从一方发送到另一方之前,必须首先建立一条连接通道,这就是著名的TCP三次握手过程。

SYN Flood攻击正是利用了TCP三次握手的机制。攻击者向目标服务器发送大量的SYN请求数据包,这些请求的源地址通常是虚构的或无法到达的。当服务器回应这些请求并发送SYN+ACK数据包后,却不会收到相应的ACK回应数据包,导致服务器上建立大量半开连接。这样,服务器的资源会被这些半开连接耗尽,无法应对正常请求。

image-20231029220121945

在防范SYN Flood攻击时,防火墙通常采用两种方法:

1. TCP代理:启用TCP代理后,防火墙接收到SYN请求数据包时,会代替服务器发送SYN+ACK数据包。如果随后没有收到客户端的ACK回应数据包,防火墙会判定该SYN请求为异常,保持半开连接一段时间后放弃。如果防火墙收到客户端的ACK回应数据包,就会代替客户端与服务器完成TCP三次握手,后续客户端的数据包将直接传递给服务器。这个过程对客户端和服务器来说都是透明的。

2. TCP源探测:通过启动TCP源探测,防火墙在收到SYN请求数据包后,会回应一个带有错误确认号的SYN+ACK数据包。如果没有收到客户端的RST回应数据包,防火墙将判定该SYN请求为异常,即客户端是虚假源。如果防火墙收到客户端的RST回应数据包,就会判定该SYN请求为正常,客户端被列入白名单,其后续数据包将被视为合法。

这两种方法各有利弊,TCP代理需要高性能防火墙以代替服务器承受半开连接的负担,而TCP源探测则需要确认客户端支持TCP协议。在网络环境中,路径不一致的情况下,TCP代理可能会遇到问题。这是因为客户端的请求经过防火墙,而服务器的响应不会经过防火墙。在这种情况下,防火墙向服务器发送SYN请求时,服务器的SYN+ACK响应不会经过防火墙,从而导致TCP代理功能失败。

4、流量型攻击之UDP Flood攻击及防御

UDP协议与TCP协议有着根本的不同,UDP属于一种无连接协议,以其速度优势而著称,远超越了TCP。正是由于UDP协议的广泛应用,攻击者得以借助其平台来发动UDP Flood攻击。UDP Flood攻击属于一种带宽型攻击,攻击者通过操控僵尸主机向目标服务器发送大量UDP数据包,这些UDP数据包通常具有庞大的字节数和极快的传输速率,其危害通常包括:

  1. 消耗网络带宽资源,可能导致链路拥塞,甚至使网络崩溃。
  2. 大规模UDP Flood攻击,涉及源IP地址和目标端口的变换,可能导致依赖会话转发的网络设备性能下降,甚至耗尽其会话资源,最终导致网络瘫痪。

与SYN Flood攻击不同,防火墙在防御UDP Flood攻击时无法像源探测那样建立连接。

在应对UDP Flood攻击时,防火墙最简单的防御方法是采用限流策略,通过限流来控制UDP数据包在网络链路上的传输速率,确保其保持在合理的带宽范围内。防火墙上有四种主要限流方式:

  1. 基于流量入接口的限流:以特定的入接口流量为统计对象,对通过该接口的UDP流量进行统计和限制,超出部分将被丢弃。

  2. 基于目标IP地址的限流:以某个IP地址作为统计对象,对到达该IP地址的UDP流量进行统计和限制,超出部分将被丢弃。

  3. 基于目标安全区域的限流:以某个安全区域作为统计对象,对到达该区域的UDP流量进行统计和限制,超出部分将被丢弃。

  4. 基于会话的限流:对每个UDP会话中的数据包传输速率进行统计,如果会话中的UDP数据包速率达到警戒阈值,该会话将被锁定,后续命中该会话的UDP数据包都将被丢弃。当会话在连续3秒或更长时间内没有流量传输时,防火墙将解锁该会话,允许后续的数据包通过。

另一种有效的防御方法是指纹学习,它基于事实,即UDP Flood攻击的数据包通常具有相似的特征字段,例如包含相同的字符串或整个UDP数据包的内容相似。攻击者通常使用相同的数据包构造方式和高频发送攻击目标,因此攻击数据包之间存在高度相似性。指纹学习利用这一特性来检测攻击数据包并采取相应措施。

综上所述,防火墙应对UDP Flood攻击主要采用限流和指纹学习两种方式,每种方式都有其优点和限制。限流方式虽然能够快速控制UDP流量,但可能导致丢弃正常数据包。指纹学习方式相对理性,不会轻易丢弃数据包,但需要一定的学习过程。对于网络安全,选择适合特定环境和需求的防御策略非常关键。

5、应用层攻击之DNS Flood攻击及防御

DNS Flood攻击指的是攻击者向DNS服务器发送大量的不存在的域名解析请求,导致DNS服务器瘫痪,无法处理正常的域名解析请求。

image-20231029220649978

DNS源探测方式可以很好地防御DNS Flood攻击,但是在现网的实际环境中,并不是所有场景都适用。因为在源探测过程中,防火墙会要求客户端通过TCP协议发送DNS请求,但并不是所有的客户端都支持用TCP协议发送DNS请求,所以这种方式在使用过程中也有限制。如果真实的客户端不支持用TCP协议发送DNS请求,使用此功能时,就会影响正常业务。

5、应用层攻击之HTTP Flood攻击及防御

HTTP Flood攻击是指攻击者操控僵尸主机向目标服务器发送大量HTTP请求,这些请求通常包含与数据库操作有关的统一资源标识符(Uniform Resource Identifier,URI)或其他消耗系统资源的URI,其目的是使目标服务器资源不堪重负,无法有效响应正常请求。对抗HTTP Flood攻击时,采用了HTTP中的一项技术:HTTP重定向。

HTTP重定向实际上相当于Web服务器进行“自我修复”。通常,当客户端请求一个已经过期的URL时,Web服务器会将客户端的请求重定向到一个新的URI,以确保客户端能够获得所需的内容。这一过程如下图所示。

在启用HTTP探测后,防火墙会接收到HTTP请求,并代替HTTP服务器回应该请求,将客户端的访问指向一个新的虚构URL。如果随后防火墙没有收到客户端对该URL的请求,就会将该客户端视为虚假源。但如果防火墙收到了客户端对该URL的请求,就会将该客户端标识为真实源,并将其IP地址添加到白名单中。此后,防火墙会继续向客户端发送HTTP重定向命令,将其访问重定向到最初的URL,即客户端最初请求的那个URL。在白名单的老化之前,防火墙将认为后续由该客户端发送的HTTP请求是合法的。

HTTP源探测方法能够有效地抵御HTTP Flood攻击,但在实际网络环境中,必须确认客户端是否支持重定向功能。例如,某些常见的设备,如机顶盒,可能不支持重定向功能。因此,在采用HTTP源探测时,必须确保网络中不存在这类不支持重定向的客户端,以免影响正常业务。

四、网络地址转化NAT

1、源NAT

源NAT技术对IP报文的源地址进行转换,将私网IP地址映射成公网IP地址,使众多私网用户能够借助有限数量的公网IP地址访问Internet,从而显著减少对公网IP地址的消耗。这个整个NAT转换过程对于内部网络中的用户和Internet上的主机来说都是完全透明的。

NAT地址池是一个抽象的概念,将”公网IP地址的集合”比喻为一个”IP地址池”或容器。防火墙在执行地址转换时,会从NAT地址池中随机选择一个公网IP地址,然后用它来代替私网IP地址进行转换。选择哪个公网IP地址是随机的,与配置时的顺序或IP地址的大小等因素无关。

NAT地址池配置完成后,将被NAT策略所引用。NAT策略类似于安全策略,由条件和动作组成。不同之处在于,NAT策略中的动作有两种选择:源NAT转换和不进行NAT转换。当动作选择为”源NAT转换”时,必须引用NAT地址池。

多个NAT策略之间存在匹配顺序。如果报文匹配了某个NAT策略,将按照该策略引用的地址池进行地址转换;如果报文没有匹配到任何NAT策略,将继续向下匹配。

image-20231029222840757

1、NAT No-PAT
“No-PAT”表示不进行端口转换,因此NAT No-PAT方式只进行IP地址转换,因此也被称为”一对一地址转换”。

image-20231029222914711

2、NAPT
NAPT(Network Address and Port Translation)表示网络地址和端口转换,即同时对IP地址和端口进行转换,也可以称为PAT(PAT不仅指端口转换,还包括IP地址和端口同时转换)。NAPT是一种最广泛应用的地址转换方式,可使用有限数量的公网IP地址满足众多私网用户访问Internet的需求。

image-20231029223102037

NAPT方式和NAT No-PAT方式在配置上的区别仅在于:NAPT方式的NAT策略在引用NAT地址池时不需要配置关键字”no-pat”,其他配置都相同。

此外需要注意,NAPT方式不会生成Server-map表,这一点与NAT No-PAT方式不同。