大厂面试真题解析--Synflood攻击及Syncookies原理解析

书接上回,在服务端没有及时收到客户端三次握手的ACK报文,或者客户端永远不会回复ACK(SYN Flood攻击手段)之后,会发生什么,我们该如何应对

上篇回顾:面试八股(11) 字节真题,关于TCP半连接与全连接队列的所有面试题

往期一线大厂面试真题

大厂面试必问:CPU使用率100%怎么办?运维高手这样回答!
字节面试真题–用户反馈网页访问慢,可能会有哪些原因
字节面试真题–TCP建立连接为什么要三次握手?为什么不是两次或者四次?
面试八股(五) TCP的三次握手与四次挥手过程【是详述可不是简单几句话哦】
面试八股(六) 腾讯面试真题:close_wait状态的原因是什么?该怎么办?
面试八股(七) TCP Keepalive和HTTP Keep-Alive有什么区别?
面试八股(八) Linux服务器拔网线或者断电,已建立的TCP连接会中断吗?
面试八股(九) 关于TCP TIME_WAIT状态的所有面试题都在这里了
面试八股(11) 字节真题,关于TCP半连接与全连接队列的所有面试题
面试八股(12) 大厂真题,你了解synflood攻击吗?该如何应对
服务端处于TCP TIME_WAIT状态的连接,客户端重用这个连接还能连上吗?

一、Synflood攻击原理

如下图,客户端发送SYN包给服务端之后,就不再响应服务端发来的SYN+ACK报文,那半连接队列中的连接就无法转移到全连接队列,半连接队列溢出,那后续正常的连接也就无法进来。

这就是我们所说的synflood攻击,也是比较常见的DDOS攻击手段

在这里插入图片描述

二、SYN Flood攻击的应对策略

  • 网络入口接高防设备(一种DDOS流量清洗设备,会过滤攻击请求,将正常请求放行)
  • 降低syn+ack的重传次数(默认是两次,对于大流量时攻击效果不明显):sysctl -w net.ipv4.tcp_synack_retries=1
  • 开启syncookies : sysctl -w net.ipv4.tcp_syncookies=1
  • TCP代理场景下(LVS代理场景)开启synproxy

三、SYN Cookies的工作原理

SYN Cookies的核心思想时在不分配任何资源的情况下完成SYN握手。

服务端在接收到SYN包后,会根据当前状态(已建立的连接数、序列号、时间戳等信息)计算一个cookie值,放入到SYN+ACK数据包中,发送给客户端。

在接收到客户端的ACK报文之后,会取出cookie值,进行验证,验证成功之后才会建立连接

在这里插入图片描述

syncookies内核参数有三个可选值:

  • 0 :表示关闭syncookies
  • 1 :表示仅当SYN半连接溢出才会启用【默认值】
  • 2 :表示默认开启

四、Syn proxy

Synproxy的常用于在TCP的代理层。正常逻辑是TCP代理设备会直接转发SYN包给后端服务器,Synproxy的机制,TCP代理会先于客户端进行三次握手,直到收到客户端发来的ACK报文之后,才会模拟客户端的SYN报文,同Server建立连接。

在这里插入图片描述

在Linux 3.13的内核中也默认支持了SYNPROXY的能力,它基于netfilter framework 和 connection tracking 模块实现。

实验测试提示:

# 服务端配置
iptables -t raw -A PREROUTING -i ens33 -p tcp --dport 8080 --syn -j NOTRACK
iptables -A INPUT -i ens33 -p tcp --dport 8080 -m state --state UNTRACKED,INVALID -j SYNPROXY --sack-perm --timestamp --mss 1480 --wscale 7 --ecn
echo 0 > /proc/sys/net/netfilter/nf_conntrack_tcp_loose

客户端发包:

# -S     指定SYN包
# -p     指定测试端口
# --flood 以泛红方式发包
# IP地址是我可测试环境的IP
hping3 -S -p 8080 --flood 192.168.162.134

测试观测

在上边的iptables规则添加与不添加的情况下,观测SYN_RECV的多少,以及观测是否有SYN包丢弃

# SYN_RECV的数量
netstat -anpt |grep SYN_RECV | wc -l

# 观测是否有SYN包丢弃
netstat -s |grep -i 'syns to listen sockets dropped'

五、写在最后

关于TCP相关的面试题我整理大厂的高频内容,如下,如果您最近也准备找工作,关注我哦。

此外,我还整理了关于SRE, 运维的大量面试真题(带答案),关注我的公众号:Linux运维实战派,回复“面试题” 免费领取。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值