欢迎关注:1,欢迎关注本博客,你可点击右手边的【QQ邮件订阅】订阅本博客!2,本博客推出江湖救急计划,主要为工作中遇到疑难杂症的兄弟提供远程技术支持和分析,如有需要,请在江湖救急计划页面给我留言!

关于《DDoS攻击原理及防护方法论》一文的疑问

作者:易隐者 发布于:2012-10-7 20:12 Sunday 分类:网络安全

       在网上查找ACK flood攻击相关资料时,发现了51CTO中的一篇名为《DDoS攻击原理及防护方法论》的文章,其链接为:http://netsecurity.51cto.com/art/200903/114969_3.htm,原文大家直接点击链接查看,在此不做引用。

       在这篇文章中对ACK flood攻击做了相关的描述,但是我个人对这篇文章有一些疑问,特将其罗列如下,供各位感兴趣的兄弟一起讨论:

1,“如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包

数据包本身并无状态可言,所谓状态是端系统或中间系统根据数据包的交互情况,自行判断的,因此,这里所指的“检查该数据包所表示的状态是否合法”不知到底是什么意思。

2,“例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应RST包告诉对方此端口不存在

所列举的例子不适用于前文描述的场景,前文描述为“主机在接收到一个带有ACK标志位的数据包的时候,需要检查该数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包”,而此处列举的例子为端口未开放的场景,既然端口未开放,又何来连接四元组信息?既然无四元组信息,则“检查该数据包所表示的连接四元组是否存在”有从何而来?

3,“可以肯定的是,ACK Flood不但可以危害路由器等网络设备,而且对服务器上的应用有不小的影响

ACK flood真的可以给路由器带来很大影响吗?首先我们需要明确概念:ACK为传输层的概念,路由为网络层设备,主要负责选路和转发(这个过程会消耗路由的CPU资源),路由器是不会管你是不是ACK报文,其工作的机制过程都是一样的,如果ACK flood攻击的目的主机都是固定的,那么路由器其实只需要在收到第一个ACK flood攻击报文时,调用CPU资源实现选路和转发,后续的ACK flood攻击报文由于目的主机是固定的,其甚至不需要调用CPU资源,直接使用快速转发表即可实现对ACK flood报文的转发,因此,这个说法不科学。值得进一步讨论和推敲。

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

未开放端口是直接发送RST报文,而不是直接丢弃报文,并且直接RST对CPU资源的消耗并不大;如果端口开放,则检查TCP连接表,有相关信息则做相应的处理,无则发送RST报文。作者后面的这段表述与前面“例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应RST包告诉对方此端口不存在”的表述出现差异,似乎从侧面反应写这篇文章的作者并未深入了解相关工作原理和机制,全文中出现前后矛盾的地方也说明作者很可能从其他地方照搬了很多作者本人未深入理解的内容。

5,“ACK Flood防护
利用对称性判断来分析出是否有攻击存在。所谓对称型判断,就是收包异常大于发包,因为攻击者通常会采用大量ACK包,并且为了提高攻击速度,一般采用内容基本一致的小包发送。这可以作为判断是否发生ACK Flood的依据,但是目前已知情况来看,很少有单纯使用ACK Flood攻击,都会和其他攻击方法混合使用,因此,很容易产生误判。
一些防火墙应对的方法是:建立一个hash表,用来存放TCP连接“状态”,相对于主机的TCP stack实现来说,状态检查的过程相对简化。例如,不作sequence number的检查,不作包乱序的处理,只是统计一定时间内是否有ACK包在该“连接”(即四元组)上通过,从而“大致”确定该“连接”是否是“活动的”。

到底如何防护的?作者在此并未提供什么有价值的信息,仅仅简单的说了一下ACK flood的分析判断。站在网络分析的角度,ACK flood攻击的分析判断跟SYN flood攻击的分析过程大致相同,不同的在于分析其报文的解码,看其TCP标志位。

阅读全文>>

标签: RST ACK flood 路由器 连接表 DDOS

评论(0) 引用(0) 浏览(4785)

Powered by 易隐者 基于emlog 皖ICP备12002343号-1