重学TCP协议(10)SYN flood 攻击
1.SYN flood 攻击
SYN Flood(半开放攻击)是一种拒绝服务(DDoS)攻击,其目的是通过消耗所有可用的服务器资源使服务器不可用于合法流量。通过重复发送初始连接请求(SYN)数据包,攻击者能够压倒目标服务器机器上的所有可用端口,导致目标设备根本不响应合法流量。
例如:客户端伪造了大量的虚假的IP地址,不断给我们服务器发SYN,而服务器回复ACK+SYN给大量虚假的IP地址,并且使得大量连接处于SYN_RCVD 状态,就会把我们服务器的半连接队列挤爆,从而无法响应那些合法的请求。
2. 如何应对 SYN Flood 攻击
2.1 增加 SYN 连接数:tcp_max_syn_backlog
但是这个只能延缓一下半连接队列爆满的情况
2.2 减少SYN+ACK重试次数:tcp_synack_retries
重试次数由 /proc/sys/net/ipv4/tcp_synack_retries控制,默认情况下是 5 次,而我们在被攻击的时候,调小这个值很有必要,可以减少重传的次数,加快连接取消的速度
2.3 tcp_syncookies 机制
SYN Cookie是对TCP服务器端的三次握手做一些修改,专门用来防范SYN Flood攻击的一种手段。它的原理是
- 在TCP服务器接收到TCP SYN包并返回TCP SYN + ACK包时,不分配一个专门的数据区,而是根据这个SYN包计算出一个cookie值。
- 这个cookie作为将要返回的SYN ACK包的初始序列号。
- 当客户端返回一个ACK包时,根据包头信息计算cookie,与返回的确认序列号(初始序列号 + 1)进行对比,如果相同,则是一个正常连接,然后,分配资源,建立连接。
重学TCP协议(10)SYN flood 攻击相关推荐
- 重学TCP协议(12)SO_REUSEADDR、SO_REUSEPORT、SO_LINGER
1. SO_REUSEADDR 假如服务端出现故障,主动断开连接以后,需要等 2 个 MSL 以后才最终释放这个连接,而服务重启以后要绑定同一个端口,默认情况下,操作系统的实现都会阻止新的监听套接字绑 ...
- 重学TCP协议(11)TFO(Tcp Fast Open)
1. TFO 为了改善web应用相应时延,google发布了通过修改TCP协议利用三次握手时进行数据交换的TFO(TCP fast open,RFC 7413). TFO允许在TCP握手期间发送和接收 ...
- 重学TCP协议(4) 三次握手
1. 三次握手 请求端(通常称为客户)发送一个 S Y N段指明客户打算连接的服务器的端口,以及初始序号.这个S Y N段为报文段1. 服务器发回包含服务器的初始序号的 S Y N报文段(报文段2)作 ...
- 重学TCP协议(3) 端口号及MTU、MSS
1. 端口相关的命令 1.1 查看端口是否打开 使用 nc 和 telnet 这两个命令可以非常方便的查看到对方端口是否打开或者网络是否可达.如果对端端口没有打开,使用 telnet 和 nc 命令会 ...
- 重学TCP协议(8) TCP的11种状态
TCP的11种状态 为了逻辑更加清晰,假设主动打开连接和关闭连接皆为客户端,被动打开连接和关闭连接皆为服务端 客户端独有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 ...
- 重学TCP协议(7) Timestamps 选项
1.Timestamps 选项的组成部分 时间戳选项占10个字节= kind(1字节) + length(1字节) + info (8字节),其中kind=8,length=10,info由times ...
- 重学TCP协议(9) 半连接队列、全连接队列
1. 半连接队列.全连接队列基本概念 三次握手中,在第一步server收到client的syn后,把相关信息放到半连接队列中,同时回复syn+ack给client(第二步),同时开启一个定时器,如果超 ...
- 重学TCP协议(6) 四次挥手
1. 四次挥手 客户端进程发出连接释放报文,并且停止发送数据.释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT ...
- 重学TCP协议(5) 自连接
1.自连接是什么 在发起连接时,TCP/IP的协议栈会先选择source IP和source port,在没有显示调用bind()的情况下,source IP由路由表确定,source port由TC ...
最新文章
- android怎么模拟返回,Android中障蔽返回键,HOME键以及模拟HOME键返回效果的方法...
- html 物流状态,css+html如何实现物流进度样式(代码示例)
- 【junit】junit4单元测试eclipse
- VS2010快捷键总结(一)
- Windows Azure SDK 1.6让Visual Studio下的Azure开发更高效
- 人物和背景分离的快速方法
- loadrunner vuser 限制修改
- 笔记《鸟哥的Linux私房菜》6 Linux的档案权限与目录配置
- 闲鱼Flutter混合工程持续集成的最佳实践
- JS设置Cookie过期时间
- oracle 扩充语句,Oracle扩充表空间语句
- SetupAPI简介与设备管理
- 机器视觉实用工具集NO.15——利用图像放射变换做类似文件扫描仪效果工具
- 【52】NVMe暴力热插拔对系统的要求
- 连线封面:2亿多支付宝用户选择的背后,一个数据与评分带来的「等级世界」
- 对创业团队的一点想法
- WIN10 VS2013 GTX960M NVIDIA显卡驱动和CUDA7.5安装 配置Caffe
- [APIO2018] New Home 新家
- 关于木马Autoit
- 定量/高光谱遥感之——大气校正(二)