分布式拒绝服务(Distributed Denial of Service,简称DDoS)是指将多台计算机联合起来作为攻击平台,通过远程连接,利用恶意程序对一个或多个目标发起DDoS攻击,消耗目标服务器性能或网络带宽,从而造成服务器无法正常地提供服务。
1 攻击原理
通常,攻击者使用一个非法账号将DDoS主控程序安装在一台计算机上,并在网络上的多台计算机上安装代理程序。在所设定的时间内,主控程序与大量代理程序进行通讯,代理程序收到指令时对目标发动攻击,主控程序甚至能在几秒钟内激活成百上千次代理程序的运行。
DDoS攻击分为3层:攻击者、主控端和代理端,三者在攻击中扮演着不同的角色:
- 攻击者:
攻击者所用的计算机是攻击主控台,可以是网络上的任何一台主机,甚至可以是一个活动的便携机。攻击者操纵整个攻击过程,它向主控端发送攻击命令。 - 主控端:
主控端是攻击者非法侵入并控制的一些主机,这些主机还分别控制大量的代理主机。在主控端主机上安装了特定的程序,因此它们可以接收攻击者发来的特殊指令,并且可以把这些命令发送到代理主机上。 - 代理端:
代理端同样也是攻击者侵入并控制的一批主机,其上运行攻击器程序,接收和运行主控端发来的命令。代理端主机是攻击的执行者,真正向受害者主机发送攻击。
攻击者发起DDoS攻击的第一步, 就是寻找在Internet上有漏洞的主机,进入系统后在其上安装后门程序,攻击者入侵的主机(这些被控制的主机又被称为“肉鸡”)越多,其攻击队伍就越壮大;第二步在入侵主机上安装攻击程序,其中一部分主机充当攻击的主控端,另一部分主机充当攻击的代理端,最后各部分主机各司其职,在攻击者的调遣下对攻击对象发起攻击。由于攻击者在幕后操纵,所以在攻击时不会受到监控系统的跟踪,身份不易被发现。
2 DDoS攻击的危害
DDoS攻击会造成以下危害:
重大经济损失
在遭受DDoS攻击后,源站服务器可能无法提供服务,导致用户无法访问业务,从而造成巨大的经济损失和品牌损失。
例如:某电商平台在遭受DDoS攻击时,网站无法正常访问甚至出现短暂的关闭,导致合法用户无法下单购买商品等。数据泄露
黑客在对服务器进行DDoS攻击时,可能会趁机窃取业务的核心数据。恶意竞争
部分行业存在恶性竞争,竞争对手可能会通过DDoS攻击恶意攻击服务,从而在行业竞争中获取优势。
例如:某游戏业务遭受了DDoS攻击,游戏玩家数量锐减,导致该游戏业务几天内迅速彻底下线。
3 常见的DDoS攻击类型
DDoS攻击分类 | 攻击子类 | 描述 |
---|---|---|
畸形报文 | 畸形报文主要包括Frag Flood、Smurf、Stream Flood、Land Flood、IP畸形报文、TCP畸形报文、UDP畸形报文等。 | 畸形报文攻击指通过向目标系统发送有缺陷的IP报文,使得目标系统在处理这样的报文时出现崩溃,从而达到拒绝服务的攻击目的。 |
传输层DDoS攻击 | 传输层DDoS攻击主要包括Syn Flood、Ack Flood、UDP Flood、ICMP Flood、RstFlood等。 | 以Syn Flood攻击为例,它利用了TCP协议的三次握手机制,当服务端接收到一个Syn请求时,服务端必须使用一个监听队列将该连接保存一定时间。因此,通过向服务端不停发送Syn请求,但不响应Syn+Ack报文,从而消耗服务端的资源。当监听队列被占满时,服务端将无法响应正常用户的请求,达到拒绝服务攻击的目的。 |
DNS DDoS攻击 | DNS DDoS攻击主要包括DNS Request Flood、DNS Response Flood、虚假源+真实源DNS Query Flood、权威服务器攻击和Local服务器攻击等。 | 以DNS Query Flood攻击为例,其本质上执行的是真实的Query请求,属于正常业务行为。但如果多台傀儡机同时发起海量的域名查询请求,服务端无法响应正常的Query请求,从而导致拒绝服务。 |
连接型DDoS攻击 | 连接型DDoS攻击主要是指TCP慢速连接攻击、连接耗尽攻击、Loic、Hoic、Slowloris、 Pyloris、Xoic等慢速攻击。 | 以Slowloris攻击为例,其攻击目标是Web服务器的并发上限。当Web服务器的连接并发数达到上限后,Web服务即无法接收新的请求。Web服务接收到新的HTTP请求时,建立新的连接来处理请求,并在处理完成后关闭这个连接。如果该连接一直处于连接状态,收到新的HTTP请求时则需要建立新的连接进行处理。而当所有连接都处于连接状态时,Web将无法处理任何新的请求。Slowloris攻击利用HTTP协议的特性来达到攻击目的。HTTP请求以\r\n\r\n标识Headers的结束,如果Web服务端只收到\r\n,则认为HTTP Headers部分没有结束,将保留该连接并等待后续的请求内容。 |
Web应用层DDoS攻击 | Web应用层攻击主要是指HTTP Get Flood、HTTP Post Flood、CC等攻击。 | 通常应用层攻击完全模拟用户请求,类似于各种搜索引擎和爬虫一样,这些攻击行为和正常的业务并没有严格的边界,难以辨别。Web服务中一些资源消耗较大的事务和页面。例如,Web应用中的分页和分表,如果控制页面的参数过大,频繁的翻页将会占用较多的Web服务资源。尤其在高并发频繁调用的情况下,类似这样的事务就成了早期CC攻击的目标。由于现在的攻击大都是混合型的,因此模拟用户行为的频繁操作都可以被认为是CC攻击。例如,各种刷票软件对网站的访问,从某种程度上来说就是CC攻击。CC攻击瞄准的是Web应用的后端业务,除了导致拒绝服务外,还会直接影响Web应用的功能和性能,包括Web响应时间、数据库服务、磁盘读写等。 |
4 DDoS攻击常见工具
4.1 Trinoo
Trinoo的攻击方法是向被攻击目标主机的随机端口发出全零的4字节UDP包,在处理这些超出其处理能力的垃圾数据包的过程中,被攻击主机的网络性能不断下降,直到不能提供正常服务,乃至崩溃。
Trinoo对IP地址不进行修改,采用的通信端口如下:
- 攻击者主机到主控端主机:27665/TCP
- 主控端主机到代理端主机: 27444/UDP
- 代理端主机到主服务器主机: 31335/UDP
4.2 TFN
TFN由主控端程序和代理端程序两部分组成,它主要采取的攻击方法为SYN风暴、ping风暴、UDP炸弹和SMURF,具有伪造数据包的能力。
4.3 TFN2K
TFN2K是由TFN发展而来的,在TFN所具有的特性上,TFN2K又新增些特性。它的主控端和代理端的网络通信是经过加密的,中间还可能混杂了许多虚假数据包,而TFN对ICMP的通信没有加密。攻击方法增加了Mix和Targa3,并且TFN2K可配置代理端进程端。
4.4 Stacheldraht
Stacheldraht也是从TFN派生出来的,因此它具有TFN的特性。此外,它增加了主控端代理端的加密通信能力,它对命令源作假,可以防范一些路由器的RFC 2267过滤。 Stacheldraht中有一个内嵌的代理升级模块,可以自动下载并安装最新的代理程序。
5 如何判断业务是否已遭受DDoS攻击?
出现以下情况时,您的业务可能已遭受DDoS攻击:
- 网络和设备正常的情况下,服务器突然出现连接断开、访问卡顿、用户掉线等情况。
- 服务器CPU或内存占用率出现明显增长。
- 网络出方向或入方向流量出现明显增长。
- 您的业务网站或应用程序突然出现大量的未知访问。
- 登录服务器失败或者登录过慢。
6 防御DDoS攻击
及时安装系统补丁程序。对一些重要的信息建立完善的备份机制,如系统配置信息的备份。对一些特权账号(如管理 员账号)的密码设置要谨慎,最好采用强密码。通过这样一系列的措施可以把攻击者的可乘之机降低。
在网络管理方面,要经常检查系统的物理环境,禁止那些不必要的网络服务。经常检测系统配置信息,并注意查看每天的安全日志。
利用网络安全设备(如防火墙)来加固网络的安全性,配置好它们的安全规则,过滤掉所有可能的伪造数据包。
路由访问控制,如配置访问列表,过滤掉非法流量。
当发现正在遭受DDoS攻击时,应当及时启动应付策略,尽可能快地追踪攻击包,并且要及时联系ISP和有关应急组织,分析受影响的系统,确定涉及的其他节点,从而阻挡已知攻击节点的流量。
如果发现计算机被攻击者用作主控端和代理端时,不能因为系统暂时没有受到损害而掉以轻心。因此一旦发现系统中存在DDoS攻击的工具软件要及时把它清除,以免留下后患(可以通过使用DDoS检测工具来发现问题并删除代理脚本)。
尽量避免将非业务必需的服务端口暴露在公网上,从而避免与业务无关的请求和访问。
弹性和冗余架构,通过负载均衡或异地多中心架构避免单点故障影响整体业务。将用户访问流量均衡分配到各个服务器上,降低单台服务器的压力,提升业务吞吐处理能力,这样可以有效缓解一定流量范围内的连接层DDoS攻击。
-
优化DNS解析,通过智能解析的方式优化DNS解析,可以有效避免DNS流量攻击产生的风险。同时,建议将业务托管至多家DNS服务商,并可以从以下方面考虑优化DNS解析:
- 屏蔽未经请求发送的DNS响应信息
- 丢弃快速重传数据包
- 启用TTL
- 丢弃未知来源的DNS查询请求和响应数据
- 丢弃未经请求或突发的DNS请求
- 启动DNS客户端验证
- 对响应信息进行缓存处理
- 使用ACL的权限
- 利用ACL、BCP38及IP信誉功能
-
服务器安全加固,提升服务器自身的连接数等性能。对服务器上的操作系统、软件服务进行安全加固,减少可被攻击的点,增大攻击方的攻击成本:
- 确保服务器的系统文件是最新的版本,并及时更新系统补丁。
- 对所有服务器主机进行检查,清楚访问者的来源。
- 过滤不必要的服务和端口。例如,对于WWW服务器,只开放80端口,将其他所有端口关闭,或在防火墙上设置阻止策略。
- 限制同时打开的SYN半连接数目,缩短SYN半连接的timeout时间,限制SYN、ICMP流量。
- 仔细检查网络设备和服务器系统的日志。一旦出现漏洞或是时间变更,则说明服务器可能遭到了攻击。
- 限制在防火墙外进行网络文件共享。降低黑客截取系统文件的机会,若黑客以特洛伊木马替换它,文件传输功能将会陷入瘫痪。
- 充分利用网络设备保护网络资源。在配置路由器时应考虑针对流控、包过滤、半连接超时、垃圾包丢弃、来源伪造的数据包丢弃、SYN阈值、禁用ICMP和UDP广播的策略配置。
- 通过iptable之类的软件防火墙限制疑似恶意IP的TCP新建连接,限制疑似恶意IP的连接、传输速率。
做好业务监控和应急响应。
如果是使用云服务器,可以看下供应商有没有提供一些安全策略。
下面提供一个安全架构图给大家参考搭建