面试官:介绍一下SYN泛洪是什么?

当面试官问这个问题的时候,不要被 "SYN 泛洪" 这个名词给震慑到,其实面试官就是想知道计算机网络中关于 DDoS 攻击和 TCP 建立连接三次握手的相关知识的考核。不要担心,接下来将详细介绍一下 SYN 泛洪及其相关知识。

什么是 SYN 泛洪?

攻击者向目标服务器发送大量的伪造源 IP 的 SYN 报文,服务端每收到一次 SYN 请求就会为其分配资源,内核会把这个连接放到半连接队列里,并向客户端返回 SYN + ACK,如果客户端返回 ACK,就把其对应的连接放到全连接队列里。但是由于这些伪造的客户端不会返回 ACK,因此这些连接会一直待在半连接队列里。服务器为了维护这些连接会耗尽自身内存,然后拒绝为后续的连接请求服务。

解决方案

增强网络基础措施

提升网络带宽、增加服务器的处理能力和承载能力,通过增强基础设施的能力来抵御攻击

使用 SYN Cookie 的目的就是绕过半连接队列的情况下建立连接。服务端收到 SYN 报文后,不分配半连接资源,而是通过源 IP、目的 IP、端口、时间戳等信息,经加密算法生成一个 "SYN Cookie" 放到第二次握手 SYN+ACK 的序列号中。客户端收到带 Cookie 的 SYN + ACK 并回复 ACK 时,服务端验证序列号的合法性,若合法则直接建立连接。

半连接队列优化

增大内核参数 somaxconn (最大监听队列长度),提升服务端处理并发连接的能力。减少 tcp_synack_retries(SYN+ACK 报文的重传次数,默认 5 次,可降低至 2-3 次),缩短半连接的超时时间,加快资源释放。调大 netdev_max_backlog这个队列用于接收网络处理不过来的数据包,但个人感觉调大了用处不大,攻击者伪造的 SYN 请求也能更大

拓展:什么是 DDoS 攻击?

SYN 泛洪攻击只是 DDoS 攻击的一种,DDoS,即分布式拒绝服务。顾名思义,DDoS 攻击的目的就是通过某种手段让正常的请求无法获得其服务。

是通过什么手段呢?攻击者通过控制海量僵尸主机组成的僵尸网络,从多个分布式节点同时向目标(服务器 / 网络 / 应用)发起恶意流量或请求,耗尽其带宽、CPU、内存、连接数等核心资源,使目标无法处理合法用户请求,最终导致服务中断或瘫痪。

常见的攻击类型:

  • 网络层攻击,如 UDP 反射攻击
  • 传输层攻击,如 SYN 泛洪
  • 会话层攻击,如 SSL 连接攻击
  • 应用层攻击,如 DNS 泛洪,HTTP 泛洪
相关推荐
一灯架构7 小时前
90%的人答错!一文带你彻底搞懂ArrayList
java·后端
mldong9 小时前
Python开发者狂喜!200+课时FastAPI全栈实战合集,10大模块持续更新中🔥
后端
GreenTea9 小时前
从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码
前端·人工智能·后端
Moment11 小时前
AI 全栈指南:NestJs 中的 Service Provider 和 Module
前端·后端·面试
IT_陈寒11 小时前
为什么我的JavaScript异步回调总是乱序执行?
前端·人工智能·后端
Moment11 小时前
AI全栈入门指南:NestJs 中的 DTO 和数据校验
前端·后端·面试
小村儿12 小时前
Harness Engineering:为什么你用 AI 越用越累?
前端·后端·ai编程
小码哥_常12 小时前
为什么PUT和DELETE请求在大公司中逐渐被弃用?
后端
宫_商_角_徵12 小时前
动态代理到底在做什么?
后端
苍何12 小时前
我把微信 cli 开源了,群消息终于不用爬楼了!
后端