DDOS的各种常见类型与防御

发布于 2020-07-08  1.02k 次阅读

           
百度已收录        

 每个网站都有可能会遭受到攻击,现在的互联网服务器遭受的最多的是DDOS攻击,本文总结了一些DNS服务器会遇到的DDOS攻击类型,以及相应的预防措施。

    铅笔将DDOS的攻击分为三种类型:

  1. 大数据洪水攻击(Volume Based Attacks):这种攻击的目标是通过使网络服务器所在的网路的带宽超负载,使你的服务器对外服务能力下降,甚至无法对外服务。这种攻击常见的有UDP floods, ICMP floods,欺骗性报文攻击等。这种攻击一般用Gbps来衡量。
  2. 协议攻击(Protocol Attacks):这种攻击的目标是通过消耗网络服务器、路由器、交换机、防火墙、负载均衡等设备的资源,使你的服务器对外服务能力下降,甚至无法对外服务。这种攻击常见的有SYN floods,IP碎片攻击,Ping of Death,Smurf DDOS攻击等。这种攻击一般用pps(packet per second)来衡量。
  3. 应用层攻击(Application Layer Attacks):这种攻击的目标是使服务器的软件产生运行错误而停止对外服务。

下面会扁平地一一介绍常见的DDOS攻击,不会根据分类来介绍,不会介绍全部

- UDP floods

 UDP是一种无连接(connectionless)无状态(sessionless)的传输协议,攻击者会向目标服务器的任意端口(port)发送大量的UDP报文,目标服务器收到这些UDP报文后,会查看有没有相应的服务监听这个请求端口,如果没有服务监听这个请求端口,则向请求者发送ICMP Destination Unreachable报文。目标服务器在发送大量的ICMP报文上会消耗过多的服务器资源,从而使得目标服务器对外服务过慢,甚至停止服务。

  UDP floods攻击防御的常用办法是过滤与所提供服务的包大小差别太大的请求包,或者限速,某一个请求IP所请求的UDP包的类型每秒不能超过一定的阈值,超过则丢弃。

- DNS 放大DDOS攻击

  这种攻击依然是利用了UDP协议的无连接无状态的特点,用户伪造一个IP地址向DNS服务器发起请求,DNS服务器处理后会将结果返回到伪造的IP所在的网络。如果这个DNS请求请求的是某个zone下面的所有资源记录,DNS服务器返回的数据包就可能特别大,大量的大包发向伪造IP所在的网络,就有可能阻塞那边的网络,或者消耗大量的服务器资源。因为DNS服务器返回的是一个合法的DNS消息,所以对于网络人员来说,对这种攻击的防御

  目前很多的DNS服务器只负责解析一个domain中的域名,关闭递归查询可以使你的DNS服务器不会成为DNS放大攻击中的傀儡,BIND9中的option{recursion no;};可以关闭递归;如果你的服务器还想提供递归功能的话,可以只对特定IP段的查询提供递归功能,BIND9中可以像下面这样设置:

options {
  allow-query { any; };
  allow-recursion { corpnets; };
};

可喜的是,BIND9.8及以上的版本为用户提供了限速的功能:

rate-limit {
    responses-per-second 5;
    window 5;
};

- NTP(Network Time Protocol)

NTP 是网络时间协议(Network Time Protocol)的简称,干嘛用的呢?就是通过网络协议使计算机之前的时间同步化。

那什么是 NTP 反射和放大攻击呢?如果听过 DNS 反射和放大攻击的话应该就会对这个比较容易理解了,协议不同,效果一样。

我们先来说说放射和放大攻击:

无论是基于 DNS 还是基于 NTP,其最终都是基于 UDP 协议的。在 UDP 协议中正常情况下客户端发送请求包到服务端,服务端返回响应包到客户端,但是 UDP 协议是面向无连接的,所以客户端发送请求包的源 IP 很容易进行伪造,当把源 IP 修改为受害者的 IP,最终服务端返回的响应包就会返回到受害者的 IP。这就形成了一次反射攻击。

放大攻击呢就是一次小的请求包最终会收到一个或者多个多于请求包许多倍的响应包,这样就达到了四两拨千斤的效果。

那我们接着来看什么是 NTP 的反射和放大攻击,NTP 包含一个 monlist 功能,也被成为 MON_GETLIST,主要用于监控 NTP 服务器,NTP 服务器响应 monlist 后就会返回与 NTP 服务器进行过时间同步的最后 600 个客户端的 IP,响应包按照每 6 个 IP 进行分割,最多有 100 个响应包。

那么如何防御NTP放大攻击呢

查看ntp服务器版本,升级到4.2.7p5以上

ntpd -v

关闭现在 NTP 服务器的 monlist 功能,在ntp.conf配置文件末尾增加disable monitor选项

关闭服务器 udp 123端口

firewall-cmd --remove-port=123/udp --permanent

当然,不管软防设置的多好,遇到特大流量攻击时,也防御不了,只能机房的流量清洗

- Memcached DDoS

3月3日,国家互联网应急中心通报了一条消息 关于利用memcached服务器实施反射DDoS攻击的情况通报 通告了 memcached 服务器漏洞被黑客利用的情况,因此将漏洞封堵的方法与大家分享一下。

攻击的原理

memcached反射攻击利用了在互联网上暴露的大批量memcached服务器(一种分布式缓存系统)存在的认证和设计缺陷,攻击者通过向memcached服务器IP地址的默认端口11211发送伪造受害者IP地址的特定指令UDP数据包(stats、set/get指令),使memcached服务器向受害者IP地址反射返回比原始数据包大数倍的数据(理论最高可达5万倍,通过持续跟踪观察攻击流量平均放大倍数在100倍左右),从而进行反射攻击。

本来Memcached提供的缓存服务应该只是对内部访问的,因此就设置了所有地址可访问,安全限制上就比较弱,黑客就利用这个特点,专门在互联网上找开放端口的 Memcached...

The web page caching utility was never designed to be internet-accessible and requires no authentication to access. But some administrators - as well as some Linux instances by default - have left TCP or UDP port 11211 open to internet-borne requests.

处置办法

互联网应急中心给出了3条建议:

1、在memcached服务器或者其上联的网络设备上配置防火墙策略,仅允许授权的业务IP地址访问memcached服务器,拦截非法的非法访问。
2、更改memcached服务的监听端口为11211之外的其他大端口,避免针对默认端口的恶意利用。
3、升级到最新的memcached软件版本,配置启用SASL认证等权限控制策略(在编译安装memcached程序时添加-enable-sasl选项,并且在启动memcached服务程序时添加-S参数,启用SASL认证机制以提升memcached的安全性)。


公交车司机终于在众人的指责中将座位让给了老太太