0%

SYN Flood攻击

SYN Flood 攻击:原理、危害与防御机制

SYN Flood 攻击是一种针对 TCP 协议缺陷的经典 DoS(拒绝服务)攻击,通过耗尽服务器的连接资源,导致正常用户无法建立连接。其核心原理利用了 TCP 三次握手的机制漏洞,尤其是服务器对未完成连接的超时处理机制。以下从攻击原理、危害到防御措施展开详细解析。

SYN 超时重试:攻击的 “突破口”

TCP 三次握手过程中,若服务器发送 SYN-ACK 后未收到客户端的 ACK(第三次握手),会触发SYN 超时重试机制,这一机制成为 SYN Flood 攻击的关键目标。

超时重试流程:

  1. 服务器收到客户端的 SYN 请求,回复 SYN-ACK 后进入SYN_RECV状态,同时将该连接放入SYN 队列(半连接队列)。
  2. 若客户端未回复 ACK(如客户端掉线、恶意不回复),服务器会周期性重发 SYN-ACK:
    • 默认重试5 次,间隔时间呈指数递增(1s → 2s → 4s → 8s → 16s)。
    • 第五次重发后,服务器需等待 32s 确认超时,总耗时 63s后才会从 SYN 队列中移除该连接。

风险点:

  • 服务器的 SYN 队列容量有限(默认通常为几百至几千)。
  • 若大量未完成的连接占用 SYN 队列,新的正常连接请求会因队列满而被拒绝,导致服务器 “拒绝服务”。

SYN Flood 攻击:利用漏洞的恶意行为

SYN Flood 攻击正是利用了上述超时重试机制,通过伪造大量虚假的 SYN 请求,耗尽服务器的 SYN 队列资源,使正常连接无法建立。

攻击过程:

  1. 攻击者向目标服务器发送大量伪造源 IP 的 SYN 请求(源 IP 可能不存在或不可达)。
  2. 服务器收到 SYN 后,回复 SYN-ACK,但由于源 IP 虚假,永远收不到 ACK,连接被放入 SYN 队列并等待超时。
  3. 随着虚假连接不断增加,SYN 队列很快被占满,服务器无法处理新的正常 SYN 请求,导致合法用户无法建立 TCP 连接。

攻击特点:

  • 隐蔽性强:攻击者使用伪造 IP,难以溯源。
  • 低成本高破坏:少量攻击流量即可耗尽服务器资源(因每个虚假连接需占用 63s 资源)。
  • 针对 TCP 服务:所有基于 TCP 的服务(如 HTTP、FTP、SSH)均可能受影响。

防御机制:从系统配置到协议优化

针对 SYN Flood 攻击,可通过系统参数调整、协议优化等方式缓解或防御,核心思路是减少半连接资源占用时间区分正常与恶意连接

TCP Syncookies:协议级防御

tcp_syncookies是 Linux 内核提供的核心防御机制,通过 “cookie 验证” 区分正常连接与恶意连接:

  • 原理:

    1. 当 SYN 队列满时,服务器不将连接放入队列,而是根据源 IP、端口、目标 IP、端口及时间戳生成一个加密的 SYN Cookie(作为 seq 序号),并回复 SYN-ACK。
    2. 若为正常客户端,会返回 ACK,其中包含该 Cookie(作为 ack 确认号)。
    3. 服务器验证 Cookie 有效性,若合法则直接建立连接(跳过 SYN 队列),若为恶意攻击(无 ACK 或 Cookie 无效)则忽略。
  • 启用方式:

    1
    2
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies  # 临时启用
    # 永久生效需修改/etc/sysctl.conf,添加net.ipv4.tcp_syncookies = 1
  • 优势:无需依赖 SYN 队列,可抵御大规模 SYN Flood 攻击。

调整系统参数:减少资源占用

通过修改 Linux 内核参数,缩短半连接存活时间或增大队列容量:

  • tcp_synack_retries:减少 SYN-ACK 重试次数(默认 5 次),缩短超时时间。

    1
    echo 2 > /proc/sys/net/ipv4/tcp_synack_retries  # 重试2次,总耗时1+2=3s
  • tcp_max_syn_backlog:增大 SYN 队列容量(默认值较小,如 1024)。

    1
    echo 8192 > /proc/sys/net/ipv4/tcp_max_syn_backlog  # 队列容量增至8192
  • tcp_abort_on_overflow:当 SYN 队列满时,直接拒绝新连接(默认 0,会丢弃请求;设为 1 则发送 RST,告知客户端重试)。

    1
    echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow

其他防御手段

  • 防火墙过滤:通过防火墙规则限制单 IP 的 SYN 请求频率(如每秒不超过 10 个),过滤明显的伪造 IP(如内网 IP 对外发起的请求)。
  • 负载均衡:将流量分散到多台服务器,避免单台服务器被耗尽。
  • DDoS 清洗:通过专业抗 DDoS 服务(如阿里云 Anti-DDoS),在流量进入服务器前过滤恶意 SYN 请求。

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10