【HBZ分享】如何规避TCP的洪水攻击

常规洪水攻击的原理

  1. 在TCP第二次握手建立半连接时,此时就可以发动洪水攻击
  2. 就是大量的请求发起TCP连接,当第二次握手时,服务器会把这些请求放到半连接队列中,由于这些恶意攻击的客户端不会再确认第三次握手,就导致这些半连接无法被释放,服务器会一直等直到超时,此时半连接队列会被塞满,正常请求连接就无法被应答,这就是洪水攻击的方式

常规如何解决洪水攻击

  1. 开启syncookies方式,第一次握手时,服务器会根据(源地址,源端口,目的地址,目的端口等) 和一个随机数,计算出来一个哈希值(SHA1), 然后第二次握手会把这个生成的syncookies一并返回给客户端,客户端确认第三次握手时,会把这个syncookies再发送给服务端,服务端会校验该syncookie是否和之前的匹配, 如果匹配则建立TCP连接。
  2. 这种做法好处:当服务端没有收到 或 收到的syncookies不匹配时是不会建立TCP连接的。并且使用syncookies时,服务端不会去维护半连接队列,也就是不存在半连接状态,因为使用syncookies对比就无需半连接了,所以就避免了半连接队列被打满导致无法接收新的连接。

syncookies无法解决的场景

  1. 当发动大量DDOS攻击时,syncookies这种方式也会瘫痪,瘫痪原因是因为CPU要计算大量的syncookies,导致CPU被打死了。因为在计算syncookies时也是消耗CPU性能的,面临巨量的DDOS,CPU是扛不住的,此时只能增大带宽,用配置硬顶。

其他解决方案

  1. 增大半连接队列和全连接队列(海量攻击该方法基本无效)
  2. 减少SYN+ACK的重传次数(TCP是靠重传维持稳定连接的),即收到大量syn请求的洪水攻击时,服务端接收不到回应会不断重试,直到最大次数,降低这个最大次数就能缓解一下

如何查询判断是否被洪水攻击了

复制代码
1. 先进行流量查看:
sar -n DEV 1 -h

然后只看eth0即可-->用rxkb/s 和 rxpck/s 这两列相除-->如果得出的包就50-60几字节,
那就说明是小包搞鬼,有可能遭受洪水攻击了,一般来说最大MTU = 1460

2. 如果发现是小包搞鬼,那就再进行网络抓包, 输入如下命令
tcpdump -i eth0 -n tcp port 80

3. 看有多少个[S], 这个表示发起TCP请求阶段,如果[S]过多,那就说明是洪水攻击,这是洪水攻击的特征


4. 进一步确认是洪水攻击,查询半连接的池子大小,以及当前半连接数量
半连接总大小: cat /proc/sys/net/ipv4/tcp_max_syn_backlog
当前半连接数: ss -s 或 netstat -n -p | grep SYN_RECV | wc -1



[S]: SYN,开始连接
[P]: PSH, 推送数据
[F]: FIN, 结束连接
[R]: RST, 重置连接
[.]: 没有Flag,可能是ACK 也可能是URG
相关推荐
济南凡维44 分钟前
CODESOFT中如何将标签保存为PDF文件
网络·人工智能·打印机·codesoft
德迅云安全杨德俊1 小时前
高防IP:构建“防护-加速-管控”三位一体的全链路安全体系
网络·安全·ddos
猫哥随身wifi1 小时前
随身WiFi 怎么选?2026 主流品牌随身 WiFi 对比与选购避坑参考
网络·人工智能·5g·智能手机
en.en..1 小时前
TCP套接字编程 完整流程解析(服务端 + 客户端)
网络
Quanqiucard2 小时前
“十五五”数字乡村建设提速,平安乡村监控物联网卡怎么选才稳定
网络·物联网
2501_916008892 小时前
全平台抓包工具,Windows、iPhone、Linux三个平台抓包测试
网络协议·计算机网络·网络安全·ios·adb·https·udp
小程序设计2 小时前
5G移动网络中设备与设备通信技术研究
网络·安全
Cx330❀3 小时前
【Linux网络】网络层 IP 协议:从网段划分到内核源码解析
大数据·linux·服务器·网络·tcp/ip·性能优化·langchain
艾芯微科技4 小时前
B16WS SOD-323 肖特基二极管参数、应用电路与选型踩坑指南
网络·单片机·嵌入式硬件·集成测试·51单片机
努力的lpp4 小时前
【攻击溯源四步法 · 面试讲解稿】
网络·网络协议·安全