博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACK Flood攻击
阅读量:2397 次
发布时间:2019-05-10

本文共 960 字,大约阅读时间需要 3 分钟。

1 原理

ACK Flood攻击是在TCP连接建立之后,所有的数据传输TCP报文都是带有ACK标志位的,主机在接收到一个带有ACK标志位的数据包的时候,需要检查该数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。如果在检查中发现该数据包不合法,例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应RST包告诉对方此端口不存在。

这里,服务器要做两个动作:查表、回应ACK/RST。这种攻击方式显然没有SYN Flood给服务器带来的冲击大,因此攻击者一定要用大流量ACK小包冲击才会对服务器造成影响。按照我们对TCP协议的理解,随机源IP的ACK小包应该会被Server很快丢弃,因为在服务器的TCP堆栈中没有这些ACK包的状态信息。但是实际上通过测试,发现有一些TCP服务会对ACK Flood比较敏感,比如说JSP Server,在数量并不多的ACK小包的打击下,JSP Server就很难处理正常的连接请求。对于Apache或者IIS来说,10kpps的ACK Flood不构成危胁,但是更高数量的ACK Flood会造成服务器网卡中断频率过高,负载过重而停止响应。可以肯定的是,ACK Flood不但可以危害路由器等网络设备,而且对服务器上的应用有不小的影响。抓包:

如果没有开放端口,服务器将直接丢弃,这将会耗费服务器的CPU资源。如果端口开放,服务器回应RST。

2 ACK Flood防护

利用对称性判断来分析出是否有攻击存在。所谓对称型判断,就是收包异常大于发包,因为攻击者通常会采用大量ACK包,并且为了提高攻击速度,一般采用内容基本一致的小包发送。这可以作为判断是否发生ACK Flood的依据,但是目前已知情况来看,很少有单纯使用ACK Flood攻击,都会和其他攻击方法混合使用,因此,很容易产生误判。

一些防火墙应对的方法是:建立一个hash表,用来存放TCP连接“状态”,相对于主机的TCP stack实现来说,状态检查的过程相对简化。例如,不作sequence number的检查,不作包乱序的处理,只是统计一定时间内是否有ACK包在该“连接”(即四元组)上通过,从而“大致”确定该“连接”是否是“活动的”。

转载地址:http://mjfob.baihongyu.com/

你可能感兴趣的文章
即将步入2020年,程序员如何在新的一年更进一步?你需要这样做
查看>>
编程萌新注意:别再这样问问题了!学会这样快速定位错误内容
查看>>
Mysql explain-type使用详解
查看>>
RPC框架(一) - Java自带的RMI
查看>>
缓存篇(一)- Guava
查看>>
缓存篇(二)- JetCache
查看>>
别踩坑!使用MySQL唯一索引请注意
查看>>
Java8新特性学习(一)- 开篇介绍
查看>>
ForkJoin框架使用和原理剖析
查看>>
设计模式-观察者模式
查看>>
CacheLoader returned null for key分析和解决
查看>>
Top100案例参会总结
查看>>
Redis源码学习感悟
查看>>
Redis内存节省策略
查看>>
实测win8下安装使用QT4.8+qt creator2.8.0
查看>>
整理:深度学习 vs 机器学习 vs 模式识别
查看>>
深度学习 vs. 概率图模型 vs. 逻辑学
查看>>
IDL box plot
查看>>
IDL vector filed plot
查看>>
piecewise constant function 阶跃常函数
查看>>