面试官:介绍一下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 泛洪
相关推荐
颜酱9 小时前
DFS 岛屿系列题全解析
javascript·后端·算法
小码哥_常10 小时前
Java后端定时任务抉择:@Scheduled、Quartz、XXL - Job终极对决
后端
uzong10 小时前
Skill 被广泛应用,到底什么是 Skill,今天详细介绍一下
人工智能·后端·面试
小码哥_常10 小时前
Kafka平替!SpringBoot+Redis Stream+消费组打造极致消息队列
后端
IT_陈寒12 小时前
Redis缓存击穿:3个鲜为人知的防御策略,90%开发者都忽略了!
前端·人工智能·后端
uzong12 小时前
Harness Engineering 是什么?一场新的 AI 范式已经开始
人工智能·后端·架构
唐叔在学习13 小时前
Python桌面端应用最小化托盘开发实践
后端·python·程序员
yuhaiqiang13 小时前
被 AI 忽悠后,开始怀念搜索引擎了?
前端·后端·面试
二闹14 小时前
Python文件读取三巨头你该选择哪一个?
后端·python
苏三说技术14 小时前
推荐几个牛逼的AI Agent项目
后端