泛洪攻击(Flood)与TCP代理(TCP proxy)

下文摘自H3C攻击防范指导手册

泛洪攻击

网络上常常会发生泛洪攻击和网络扫描攻击。泛洪攻击指攻击者向攻击目标发送大量的虚假请求,驱使被攻击者由于不断应付这些无用信息而筋疲力尽,合法的用户却由此无法享受到相应服务,即发生拒绝服务。扫描攻击是攻击者对网络进行主机或端口扫描,通常攻击者通过扫描了解网络的状况,为后续的攻击做准备。
防火墙通过检测网络流量,分析异常流量的特征,能成功检测出各种泛洪攻击和网络扫描攻击,具体功能包括:ICMP Flood 攻击检测、UDP Flood 攻击检测、SYN Flood 攻击检测、连接数限制和扫描攻击检测。

  1. ICMP Flood攻击检测
    短时间内向特定目标不断请求 ICMP 回应,致使目标系统负担过重而不能处理合法的传输任务,就发生了 ICMP Flood。启用 ICMP Flood 攻击检测功能时,要求设置一个连接速率阈值,一旦发现保护主机 ICMP 连接速率超过该值,防火墙会输出发生 ICMP Flood 攻击的告警日志,并且根据用户的配置可以阻止发往该主机的后续连接请求。

  2. UDP Flood攻击检测
    短时间内向特定目标不断发送 UDP 报文,致使目标系统负担过重而不能处理合法的传输任务,就发生了 UDP Flood。启用 UDP Flood 攻击检测功能时,要求设置一个连接速率阈值,一旦发现保护主机响应的 UDP 连接速率超过该值,防火墙会输出发生 UDP Flood 攻击的告警日志,并且根据用户的配置可以阻止发往该主机的后续连接请求。

  3. SYN Flood攻击检测
    由于资源的限制,TCP/IP 栈只能允许有限个 TCP 连接。SYN Flood 伪造 SYN 报文向服务器发起连接,服务器在收到报文后用 SYN_ACK 应答,此应答发出去后,不会收到 ACK 报文,造成一个半连接。若攻击者发送大量这样的报文,会在被攻击主机上出现大量的半连接,耗尽其资源,使正常的用户无法访问,直到半连接超时。在一些创建连接不受限制的实现里,SYN Flood 具有类似的影响,它会消耗掉系统的内存等资源。
    启用 SYN Flood 攻击检测功能时,要求设置一个连接速率阈值和半开连接数量阈值,一旦发现保护主机响应的 TCP 新建连接速率超过连接速度阈值或者半开连接数量超过半开连接数量阈值,防火墙会输出发生 SYN Flood 攻击的告警日志,并且可以根据用户的配置采取以下三种措施:

  • 阻止发往该保护主机的后续连接请求;
  • 切断保护主机上的最老半连接会话;
  • 向 TCP Proxy 添加受保护 IP 地址。
  1. 连接数限制
    连接数限制包括源 IP 连接数限制和目的 IP 连接数限制。启用连接数限制功能时,要求设置一个连接数阈值,一旦 IP 的连接数超过该值,防火墙会输出告警日志,并用可以根据用户配置阻止该 IP新建连接。
  2. 扫描攻击检测
    攻击者运用扫描工具探测目标地址和端口,用来确定哪些目标系统连接在目标网络上以及主机开启哪些端口服务。启用扫描攻击保护功能时,要求设置一个扫描速率阈值,一旦存在 IP 主动发起的连接速率超过该值,则判定该 IP 正在进行扫描探测,防火墙会输出发生扫描攻击的告警日志,阻止扫描者发起的后续连接,并且可以根据用户配置将扫描者加入到黑名单。

TCP代理

1. SYN Flood攻击详细介绍

一般情况下,TCP 连接的建立需要经过三次握手,即:
(1) TCP 连接请求的发起者向目标服务器发送 SYN 报文;
(2) 目标服务器收到 SYN 报文后,建立处于 SYN_RECEIVED 状态的 TCP 半连接,并向发起者回复 SYN ACK 报文,等待发起者的回应;
(3) 发起者收到 SYN ACK 报文后,回应 ACK 报文,这样 TCP 连接就建立起来了。利用 TCP 连接的建立过程,一些恶意的攻击者可以进行 SYN Flood 攻击。攻击者向服务器发送大量请求建立 TCP 连接的 SYN 报文,而不回应服务器的 SYN ACK 报文,导致服务器上建立了大量的 TCP 半连接。从而达到耗费服务器资源,使服务器无法处理正常业务的目的。

2. TCP Proxy功能简介

TCP Proxy 功能用来防止服务器受到 SYN Flood 攻击。客户端通过 TCP 代理请求与受保护的服务器建立连接时,TCP 代理首先验证客户端的请求是否为 SYN Flood 攻击,验证通过后客户端和服务器之间才能建立 TCP 连接,从而避免服务器受到攻击。
TCP Proxy 支持两种代理方式:单向代理和双向代理。单向代理方式是指仅对 TCP 连接的正向报文进行处理;双向代理是指对 TCP 连接的正向和反向报文都进行处理。用户可以根据实际的组网情况进行选择。
单向代理组网双向代理组网
例如:在如 图 1-1 所示的组网中,从客户端发出的报文经过TCP代理,而从服务器端发出的报文不经过TCP代理,此时只能使用单向代理方式;在如 图 1-2 所示的组网中,从客户端发出的报文经和从服务器端发出的报文都经过TCP代理,此时可以使用单向代理方式,也可以使用双向代理方式。

3. TCP Proxy处理流程

3.1. 单向代理

单向代理方式下,TCP Proxy的处理流程如 图 1-3 所示。
单向代理方式的TCP Proxy处理流程
TCP 代理收到某客户端发来的与受保护服务器(匹配某个受保护 IP 表项)建立 TCP 连接的请求(SYN 报文)后,先代替服务器向客户端回应序号错误的 SYN ACK 报文。如果收到客户端回应的RST 报文,则认为该 TCP 连接请求通过 TCP 代理的验证。一定时间内,TCP 代理收到客户端重发的 SYN 报文后,直接向服务器转发,在客户端和服务器之间建立 TCP 连接。TCP 连接建立后,TCP代理直接转发后续的报文,不对报文进行处理。

3.2. 双向代理

双向代理方式下,TCP Proxy的处理流程如 图 1-4 所示。
双向代理方式的TCP Proxy处理流程
TCP 代理收到某客户端发来的与受保护服务器建立 TCP 连接的请求(SYN 报文)后,先代替服务器向客户端回应正常的 SYN ACK 报文(窗口值为 0)。如果收到客户端回应的 ACK 报文,则认为该 TCP 连接请求通过 TCP 代理的验证。TCP 代理再向服务器发送同样的 SYN 报文,并通过三次握手与服务器建立 TCP 连接。双向代理方式中,在客户端和 TCP 代理、TCP 代理和服务器之间建立两个 TCP 连接。由于两个 TCP 连接使用的序号不同,TCP 报文交互过程中,TCP 代理接收到客户端或服务器发送的报文后,需要修改报文序号,再转发给对端,这样才能保证通信正常。