PSH:如果置位,接收端应尽快把数据传送给应用层, 不必等缓冲区满再发送 。
2.3 UDP报文结构
图2.4 ICMP报文结构
图 图
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页
三. DDOS攻击方式
3.1 SYN Flood攻击
SYN-Flood攻击是当前网络上最为常见的DDoS攻击,也是最为经典的拒绝服务攻击,它利用了TCP协议实现上的一个缺陷,通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。这种攻击早在1996年就被发现,但至今仍然显示出强大的生命力。很多操作系统,甚至防火墙、路由器都无法有效地防御这种攻击,而且由于它可以方便地伪造源地址,追查起来非常困难。它的数据包特征通常是,源发送了大量的SYN包,并且缺少三次握手的最后一步握手ACK回复。
3.1.1 原理
例如,攻击者首先伪造地址对服务器发起SYN请求(我可以建立连接吗?),服务器就会回应一个ACK+SYN(可以+请确认)。而真实的IP会认为,我没有发送请求,不作回应。服务器没有收到回应,会重试3-5次并且等待一个SYN Time(一般30秒-2分钟)后,丢弃这个连接。
如果攻击者大量发送这种伪造源地址的SYN请求,服务器端将会消耗非常多的资源来处理这种半连接,保存遍历会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。最后的结果是服务器无暇理睬正常的连接请求—拒绝服务。在服务器上用netstat –an命令查看SYN_RECV状态的话,就可以看到:
图
如果我们抓包来看:
图
可以看到大量的SYN包没有ACK回应。
3.1.2 SYN Flood防护
目前市面上有些防火墙具有SYN Proxy功能,这种方法一般是定每秒通过指定对象(目标地址和端口、仅目标地址或仅源地址)的SYN片段数的阀值,当来自相同源地址或发往相同目标地址的SYN片段数达到这些阀值之一时,防火墙就开始截取连接请求和代理回复SYN/ACK片段,并将不完全的连接请求存储到连接队列中直到连接完成或请求超时。当防火墙中代理连接的队列被填满时,防火墙拒绝来自相同安全区域(zone)中所有地址的新SYN片段,避免网络主机遭受不完整的三次握手的攻击。但是,这种方法在攻击流量较大的时候,连接出现较大的延迟,网络的负载较高,很多情况下反而成为整个网络的瓶颈;
Random Drop:随机丢包的方式虽然可以减轻服务器的负载,但是正常连接的成功率也会降低很多;
特征匹配:IPS上会常用的手段,在攻击发生的当时统计攻击报文的特征,定义特征库,例如过滤不带TCP Options 的syn 包等;
早期攻击工具(例如synkiller,xdos,hgod等)通常是发送64字节的TCP SYN报文,而主机操作系统在发起TCP连接请求时发送SYN 报文是大于64字节的。因此可以在关键节点上设置策略过滤64字节的TCP SYN报文,某些宣传具有防护SYN Flood攻击的产品就是这么做的。随着工具的改进,发出的TCP SYN 报文完全模拟常见的通用操作系统,并且IP头和TCP头的字段完全随机,这时就无法在设备上根据特定的规则来过滤攻击报文。这时就需要根据经验判断IP 包头里TTL值不合理的数据包并阻断,但这种手工的方法成本高、效率低。 图是某攻击工具属性设置。