本文由 网易云 发布。安全
原文地址:反射型 DDoS 攻击的原理和防范措施-网易云博客服务器
随着僵尸网络的兴起,同时因为攻击方法简单、影响较大、难以追查等特色,分布式拒绝服务攻击(DDoS,Distributed Denial of Service)获得快速壮大和日益泛滥。
成千上万主机组成的僵尸网络为 DDoS 攻击提供了所需的带宽和主机,造成了规模巨大的攻击和网络流量,对被攻击网络形成了极大的危害。更加可怕的是 DDoS 并无完全的解决办法,只能依靠各类手段和各个层次的防御进行缓解。网络
2015 年 12 月,国内一家云厂商声称部署在其云平台上的一家知名游戏公司遭遇了峰值流量达到每秒 453.8Gbps 的 DDoS 攻击。
2016 年 9 月,为全世界范围内提供网站托管服务的法国公司 OVH 的创始人兼 CTO 在 Twitter 上发出了一张截图,图中显示了 OVH 的多个服务器同时遭到了峰值接近 1Tbps 的 DDoS 攻击。以下图所示,能够发现此次 DDoS 攻击中单一攻击的吞吐量最高就可达每秒 9300 万个包,即 799Gbps。
分布式
2016 年 10 月,黑客经过互联网控制了美国大量的网络摄像头和相关的 DVR 录像机,而后操纵这些肉鸡攻击了美国多个知名网站,包括 Twitter、Paypal、Spotify 在内的网站被迫中断服务,这次攻击影响了大半个美国互联网。
工具
因而可知,DDoS 攻击正变得愈来愈严重,动辄上百 Gbps 的攻击都十分常见,而且,这样的攻击只会愈来愈大型。并且,随着网络安全界和黑帽子掌握愈来愈多的互联网资源,攻击复杂性也一直在增长,相应的,业务和应用所面临的网络 DDoS 挑战也不断增多。
所以,咱们必须在 DDoS 威胁、影响关键业务和应用以前,对流量进行检测并加以清洗,确保网络正常稳定的运行以及业务的正常开展。网站
通常而言,咱们会根据针对的协议类型和攻击方式的不一样,把 DDoS 分红 SYN Flood、ACK Flood、UDP Flood、NTP Flood、SSDP Flood、DNS Flood、HTTP Flood、ICMP Flood、CC 等各种攻击类型。
每一种攻击类型都有其特色,而反射型的 DDoS 攻击是一种新的变种。攻击者并不直接攻击目标服务 IP,而是利用互联网的某些特殊服务开放的服务器,经过伪造被攻击者的 IP 地址、向有开放服务的服务器发送构造的请求报文,该服务器会将数倍于请求报文的回复数据发送到被攻击 IP,从而对后者间接造成 DDoS 攻击。
以下图所示,这里的攻击者(Attacker,实际状况中更多的会利用傀儡机进行攻击)不直接把攻击包发给受害者,而是冒充受害者给放大器(Amplifiers)发包,而后经过放大器再反射给受害者。
ui
在反射型攻击中,攻击者利用了网络协议的缺陷或者漏洞进行 IP 欺骗,主要是由于不少协议(例如 ICMP,UDP 等)对源 IP 不进行认证。同时,要达到更好的攻击效果,黑客通常会选择具备放大效果的协议服务进行攻击。总结一下就是利用 IP 欺骗进行反射和放大,从而达到四两拨千斤的效果。spa
Smurf 攻击是经典的 DDoS 攻击,Smurf 攻击是以最初发动这种攻击的程序名 Smurf 来命名。这种攻击方法结合使用了 IP 欺骗和 ICMP 回复方法使大量网络传输充斥目标系统,引发目标系统拒绝为正常系统进行服务。
命令行
攻击的过程大体是这样的:Attacker 向一个具备大量主机和因特网链接的网络广播地址发送一个欺骗性 Ping 包,而欺骗性 Ping 分组的源地址就是 Victim(9.9.9.9)但愿攻击的目标。路由器接收到这个发送给 IP 广播地址(1.1.1.255)的分组后,因为 ICMP 并不会进行握手而验证源 IP 地址,路由器认为这就是广播分组,进而会对本地网段中的全部主机(1.1.1.2,1.1.1.3,1.1.1.4,1.1.1.5,1.1.1.6) 进行广播。网段中的全部主机都会向欺骗性分组的 IP 地址发送 echo 响应信息。若是这是一个很大的以太网段,可能会有上百台主机对收到的 echo 请求进行回复,这些目标系统很快就会被大量的 echo 信息吞没,这样就能垂手可得地阻止该系统处理其它任何网络传输,从而达到拒绝为正常系统服务的结果。
这种攻击不只影响目标系统,还影响目标公司的因特网链接。那么如何防止这种类型的攻击?
a. 阻塞 Smurf 攻击的源头。Smurf 攻击依靠攻击者的力量使用欺骗性源地址发送 echo 请求,用户可使用路由器的访问控制来保证内部网络中发出的全部传输信息都具备合法的源地址,以防止这种攻击。
b. 阻塞 Smurf 的反弹站点。用户能够有两种选择以阻塞 Smurf 攻击的反弹站点。第一种方法能够经过 ACL 阻止全部入站 echo 请求,这样能够防止这些分组到达本身的网络。若是不能阻塞全部入站 echo 请求,用户就须要让本身的路由器把网络广播地址映射成为 LAN 广播地址。3d
DNS 服务是整个互联网的基础服务,在咱们连接互联网的时候,须要经过 DNS 解析将域名转化成对应的 IP 地址。理论上来讲 ISP 的 DNS 服务器只响应来自它本身客户 IP 的 DNS Query 响应,但事实上互联网上大量 DNS 服务的默认配置缺失,致使了会响应全部 IP 的 DNS Query 请求。
同时,DNS 大部分使用 UDP 协议,UDP 协议没有握手过程让其去验证请求的源 IP。以下图所示,攻击者(其实是攻击者控制的傀儡机)发送大量伪造了 Victim IP 的请求给 DNS 服务器,DNS 服务器成为放大器将 DNS 响应回复给受害者。
下面再来看一下 DNS 如何将请求数据包进行放大,输入(x.x.x.x为 DNS 服务器 IP):
dig ANY isc.org @x.x.x.x
返回结果,这里为了节约篇幅,咱们省略了大部分的响应内容。咱们能够看到,响应的内容远远大于请求的数据包内容,这里就产生了放大的效果。
; <<>> DiG 9.7.3 <<>> ANYisc.org @x.x.x.x
;; global options: +cmd
;; Got answer:
………………………………….此处省略具体请求内容…………………………………………
isc.org. 484 IN RRSIG A 5 2 7200 20121125230752 20121026230752 4442 isc.org. ViS+qg95DibkkZ5kbL8vCBpRUqI2/M9UwthPVCXl8ciglLftiMC9WUzq Ul3FBbri5CKD/YNXqyvjxyvmZfkQLDUmffjDB+ZGqBxSpG8j1fDwK6n1 hWbKf7QSe4LuJZyEgXFEkP16CmVyZCTITUh2TNDmRgsoxrvrOqOePWhp 8+E=
不幸的是,目前互联网上存在大量的 DNS 服务器能够被利用,黑客使用网络扫描器工具能够很容易的发现这些 DNS 服务器并加以利用。这须要:
a. 若是您是 DNS 的管理员,须要加固 DNS 服务器,能够按照下面的配置关闭递归功能和限制可查询的 IP 地址。
options { recursion no;};
options { allow-query {192.168.1.0/24;};};
b. 若是是受害者,首先能够经过网络层的 ACL 规则来防护, 或者使用抗 DDoS 系统进行流量清洗,目前大部分的云服务商都有这类功能。
NTP 是网络时间协议(Network Time Protocol)的简称,是用来使计算机时间同步化的网络协议。NTP 包含一个 monlist 功能,也被称为 MON_GETLIST,主要用于监控 NTP 服务器,NTP 服务器响应 monlist 后就会返回与 NTP 服务器进行过期间同步的最后 600 个客户端的 IP,响应包按照每 6 个 IP 进行分割,最多有 100 个响应包。咱们能够经过 ntpdc 命令向一个 NTP 服务器发送 monlist 以及结合抓包来看下实际的效果。
ntpdc -n -c monlist x.x.x.x | wc -l
602
在上面的命令行中咱们能够看到一次含有 monlist 的请求收到了 602 行数据,除去头两行是无效数据外,正好是 600 个客户端 IP 列表,而且从上图中的 wireshark 中咱们也可看到显示有 101 个 NTP 协议的包,除去一个请求包,正好是 100 个响应包。
a. 若是做为 NTP 管理员,须要加固 NTP 服务,NTP 服务器升级到 4.2.7p26 或者更高的版本。关闭如今 NTP 服务的 monlist 功能,在ntp.conf 配置文件中增长选项
disable monitor
b. 若是是受害者,如何防护 NTP 反射和放大攻击?首先能够经过网络层的 ACL 规则来防护, 或者使用抗 DDoS 系统进行流量清洗,目前大部分的云服务商都有这类功能。
互联网上家用路由器、网络摄像头、打印机、智能家电等智能设备广泛采用 UPnP(即插即用)协议做为网络通信协议, 而 UPnP 设备的发现是经过源端口为 1900 的 SSDP(简单服务发现协议)进行相互感知。
利用 SSDP 协议进行反射攻击的原理与利用 DNS 服务、NTP 服务相似,都是伪形成被攻击者的 IP 地址向互联网上大量的智能设备发起 SSDP 请求,接收到请求的智能设备根据源 IP 地址将响应数据包返回给受害者。随着物联网和智能设备的快速发展和普及,利用智能设备展开 DDoS 攻击会愈来愈广泛。SSDP 的请求报文示例以下:
M-SEARCH * HTTP/1.1
HOST: 1.2.2.3:1900
MAN: “ssdp:discover”
MX: 1
ST: urn:dial-multiscreen-org:service:dial:1
返回的报文以下:
HTTP/1.1 200 OK
CACHE-CONTROL: max-age = 60
EXT:
LOCATION: 1.2.3.4:5200/Printer.xml
SERVER: Network Printer Server UPnP/1.0 OS 1.29.00.44 06-17-2009
ST: upnp:rootdevice
USN: uuid:Samsung-Printer-1_0-mrgutenberg::upnp:rootdevice
那么该如何防御 SSDP 攻击呢?
a. 对于不须要即插即用服务的设备,关闭即插即用服务。
b. 在被 SSDP DDoS 攻击的时候,经过网络设备的 ACL 规则过滤 SSDP 指纹过滤。或者引入 DDoS 防御系统。
这里咱们引入一个学术名词,带宽放大因子(BAF, Bandwidth Amplification Factor),它表示的是请求报文与响应报文的比例。对于各类协议的反射放大攻击,因为其不一样版本的实现机制各不相同,加上对请求数据支持的多样性,同一服务的 BAF 值也会存有必定的差别,咱们经过实验对比了各类协议的实验 BAF,可让你们直观感觉各类反射攻击的威力,了解攻击放大的倍数。
反射 DDoS 攻击因为难以追踪、且不须要大量的肉鸡等特色,愈来愈流行,势必会对业务形成很大的威胁。除了须要各方通力合做对互联网上的设备和服务进行安全管理和安全配置消除反射站点以外,还须要在服务端作好防护准备,好比增长 ACL 过滤规则和 DDoS 清洗服务。目前大量的云厂商都提供 DDoS 流量的清洗服务,能够直接使用。
了解 网易云 :
网易云官网:https://www.163yun.com/
新用户大礼包:https://www.163yun.com/gift
网易云社区:https://sq.163yun.com/