- 中文名
- 分布式拒绝服务攻击
- 外文名
- Distributed denial of service attack
- 目 标
- DoS攻击
- 借 助
- 服务器技术
目录
- 1 定义
- 2 攻击方式
- 3 攻击现象
- 4 攻击特点
- 5 攻击特性
- 6 分类
- ▪ 基于ARP
- ▪ 基于ICMP
- ▪ 基于IP
- ▪ 基于应用层
- 7 流程
- ▪ 搜集资料
- ▪ 占领
- ▪ 实际攻击
- 8 防范
- ▪ 主机设置
- ▪ 网络设置
- 9 Windows系统防御
- 10 攻击原理
- 11 攻击手段
- 12 防御基础
定义
编辑攻击方式
编辑-
通过使网络过载来干扰甚至阻断正常的网络通讯;
-
通过向服务器提交大量请求,使服务器超负荷;
-
阻断某一用户访问服务器;
-
阻断某服务与特定系统或个人的通讯。
-
IP Spoofing
-
LAND attack
-
ICMP floods
-
Application
攻击现象
编辑-
被攻击主机上有大量等待的TCP连接;
-
网络中充斥着大量的无用的数据包;
-
源地址为假 制造高流量无用数据,造成网络拥塞,使受害主机无法正常和外界通讯;
-
利用受害主机提供的传输协议上的缺陷反复高速的发出特定的服务请求,使主机无法处理所有正常请求;
-
严重时会造成系统死机。
攻击特点
编辑分布式拒绝服务攻击采取的攻击手段就是分布式的,在攻击的模 式改变了传统的点对点的攻击模式,使攻击方式出现了没有规律的情况,而且在进行攻击的时候,通常使用的也是常见的协议和服务,这样只是从协议和服务的类型 上是很难对攻击进行区分的。在进行攻击的时候,攻击数据包都是经过伪装的,在源IP 地址上也是进行伪造的,这样就很难对攻击进行地址的确定,在查找方面也是很难的。这样就导致了分布式拒绝服务攻击在检验方法上是很难做到的。
攻击特性
编辑对分布式攻击进行必要的分析,就可以得到这种攻击的特性。分 布式拒绝服务在进行攻击的时候,要对攻击目标的流量地址进行集中,然后在攻击的时候不会出现拥塞控制。在进行攻击的时候会选择使用随机的端口来进行攻击, 会通过数千端口对攻击的目标发送大量的数据包,使用固定的端口进行攻击的时候,会向同一个端口发送大量的数据包。
分类
编辑按照TCP/IP协议的层次可将DDOS攻击分为基于ARP的攻击、基于ICMP的攻击、基于IP的攻击、基于UDP的攻击、基于TCP的攻击和基于应用层的攻击。
基于ARP
ARP是无连接的协议,当收到攻击者发送来的ARP应答时。 它将接收ARP应答包中所提供的信息。更新ARP缓存。因此,含有错误源地址信息的ARP请求和含有错误目标地址信息的ARP应答均会使上层应用忙于处理 这种异常而无法响应外来请求,使得目标主机丧失网络通信能力。产生拒绝服务,如ARP重定向攻击。
基于ICMP
攻击者向一个子网的广播地址发送多个ICMP Echo请求数据包。并将源地址伪装成想要攻击的目标主机的地址。这样,该子网上的所有主机均对此ICMP Echo请求包作出答复,向被攻击的目标主机发送数据包,使该主机受到攻击,导致网络阻塞。
基于IP
TCP/IP中的IP数据包在网络传递时,数据包可以分成更小的片段。到达目的地后再进行合并重装。在实现分段重新组装的进程中存在漏洞,缺乏必要的检查。利用IP报文分片后重组的重叠现象攻击服务器,进而引起服务器内核崩溃。如Teardrop是基于IP的攻击。
基于应用层
流程
编辑搜集资料
占领
实际攻击
防范
编辑主机设置
网络设置
Windows系统防御
编辑下列值确定触发 SYN 保护的阈值。这一部分中的所有注册表项和值都位于注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的下面。这些注册表项和值是:
建议值: 5
有效值: 0 – 65535
说明:指定触发 SYN 洪水攻击保护所必须超过的 TCP 连接请求数的阈值。
值名称: TcpMaxHalfOpen
建议的数值数据: 500
有效值: 100 – 65535
说明:在启用 SynAttackProtect 后,该值指定处于 SYN_RCVD 状态的 TCP 连接数的阈值。在超过 SynAttackProtect 后,将触发 SYN 洪水攻击保护。
值名称: TcpMaxHalfOpenRetried
建议的数值数据: 400
有效值: 80 – 65535
说明:在启用 SynAttackProtect 后,该值指定处于至少已发送一次重传的 SYN_RCVD 状态中的 TCP 连接数的阈值。在超过 SynAttackProtect 后,将触发 SYN 洪水攻击保护。
这一部分中的所有注册表项和值都位于注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 的下面。这些注册表项和值是:
建议的数值数据: 2
有效值: 0 – 255
说明:控制在响应一次 SYN 请求之后、在取消重传尝试之前 SYN-ACK 的重传次数。
值名称: TcpMaxDataRetransmissions
建议的数值数据: 2
有效值: 0 – 65535
说明:指定在终止连接之前 TCP 重传一个数据段(不是连接请求段)的次数。
值名称: EnablePMTUDiscovery
建议的数值数据: 0
有效值: 0, 1
说明:将该值设置为 1(默认值)可强制 TCP 查找在通向远程主机的路径上的最大传输单元或最大数据包大小。攻击者可能将数据包强制分段,这会使堆栈不堪重负。对于不是来自本地子网的主机的连接,将该值指定为 0 可将最大传输单元强制设为 576 字节。
值名称: KeepAliveTime
建议的数值数据: 300000
有效值: 80 – 4294967295
说明:指定 TCP 尝试通过发送持续存活的数据包来验证空闲连接是否仍然未被触动的频率。
建议的数值数据: 1
有效值: 0, 1
说明:指定计算机在收到名称发布请求时是否发布其 NetBIOS 名称。
值名称
|
值 (REG_DWORD)
|
SynAttackProtect
|
2
|
TcpMaxPortsExhausted
|
1
|
TcpMaxHalfOpen
|
500
|
TcpMaxHalfOpenRetried
|
400
|
TcpMaxConnectResponseRetransmissions
|
2
|
TcpMaxDataRetransmissions
|
2
|
EnablePMTUDiscovery
|
0
|
KeepAliveTime
|
300000(5 分钟)
|
NoNameReleaseOnDemand
|
1
|
建议的数值数据: 0
有效值:0(禁用),1(启用)
说明:通过将此注册表值修改为 0,能够在收到 ICMP 重定向数据包时禁止创建高成本的主机路由。
值名称
|
值 (REG_DWORD)
|
EnableICMPRedirect
|
0
|
建议的数值数据: 0
有效值:0(禁用),1(启用)
说明:禁止攻击者强制切换到备用网关
值名称
|
值 (REG_DWORD)
|
EnableDeadGWDetect
|
0
|
建议的数值数据: 1
有效值:0(禁用),1(启用)
说明:指定 AFD.SYS 功能,以有效处理大量的 SYN_RCVD 连接。有关详细信息,请参阅“Internet Server Unavailable Because of Malicious SYN Attacks”,
值名称: MinimumDynamicBacklog
建议的数值数据: 20
有效值: 0 – 4294967295
说明:指定在侦听的终结点上所允许的最小空闲连接数。如果空闲连接的数目低于该值,线程将被排队,以创建更多的空闲连接
值名称:MaximumDynamicBacklog
建议的数值数据: 20000
有效值: 0 – 4294967295
说明:指定空闲连接以及处于 SYN_RCVD 状态的连接的最大总数。
值名称: DynamicBacklogGrowthDelta
建议的数值数据: 10
有效值: 0 – 4294967295
默认情况下是否出现:否
说明:指定在需要增加连接时将要创建的空闲连接数。
值名称
|
值 (REG_DWORD)
|
EnableDynamicBacklog
|
1
|
MinimumDynamicBacklog
|
20
|
MaximumDynamicBacklog
|
20000
|
DynamicBacklogGrowthDelta
|
10
|
网络地址转换 (NAT) 用于将网络与传入连接屏蔽开来。攻击者可能规避此屏蔽,以便使用 IP 源路由来确定网络拓扑。
建议的数值数据: 1
有效值:0(转发所有数据包),1(不转发源路由数据包),2(丢弃所有传入的源路由数据包)。
说明:禁用 IP 源路由,后者允许发送者确认数据报在网络中应采用的路由。
处理数据包片段可以是高成本的。虽然拒绝服务很少来自外围网络内,但此设置能防止处理数据包片段。
建议的数值数据: 1
有效值:0(禁用),1(启用)
说明:禁止 IP 堆栈接受数据包片段。
多播数据包可能被多台主机响应,从而导致响应淹没网络。
建议的数值数据: 0
有效范围:0 (false),1 (true)
说明:路由服务使用此参数来控制是否转发 IP 多播。此参数由路由和远程访问服务创建。
多主机服务器切勿在它所连接的网络之间转发数据包。明显的例外是防火墙。
建议的数值数据: 0
有效范围:0 (false),1 (true)
说明:将此参数设置为 1 (true) 会使系统在它所连接的网络之间路由 IP 数据包。
可以使用 ICMP 数据包请求主机的子网掩码。只泄漏此信息是无害的;但是,可以利用多台主机的响应来了解内部网络的情况。
建议的数值数据: 0
有效范围:0 (false),1 (true)
说明:此参数控制计算机是否响应 ICMP 地址屏蔽请求。
值名称
|
值 (REG_DWORD)
|
DisableIPSourceRouting
|
1
|
EnableFragmentChecking
|
1
|
EnableMulticastForwarding
|
0
|
IPEnableRouter
|
0
|
EnableAddrMaskReply
|
0
|
缺陷
攻击原理
编辑DDOS(分布式拒绝服务):凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。 也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。
虽然同样是拒绝服务攻击,但是DDOS 和DOS 还是有所不同,DDOS的攻击策略侧重于通过很多“僵尸主机”(被攻击者入侵过或可间接利用的主机)向受害主机发送大量看似合法的网络包, 从而造成网络阻塞或服务器资源耗尽而导致拒绝服务, 分布式拒绝服务攻击一旦被实施, 攻击网络包就会犹如洪水般涌向受害主机, 从而把合法用户的网络包淹没, 导致合法用户无法正常访问服务器的网络资源, 因此, 拒绝服务攻击又被称之为 “洪水式攻击” ,常见的 DDOS 攻击手段有 SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood 等;而 DOS 则侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、 主机死机而无法提供正常的网络服务功能, 从而造成拒绝服务, 常见的 DOS 攻击手段有 T earDrop、 Land、 Jolt、 IGMP Nuker、 Boink、 Smurf、 Bonk、OOB 等。就这两种拒绝服务攻击而言,危害较大的主要是 DDOS 攻击,原因是很难防范,至于 DOS 攻击,通过给主机服务器打补丁或安装防火墙软件就可以很好地防范DDOS 的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞, 合法网络包被虚假的攻击包淹没而无法到达主机; 另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU 被内核及应用程序占完,造成的无法提供网络服务。
相对于流量攻击而言, 资源耗尽攻击要容易判断一些, 假如平时 Ping 网站主机和访问网站都是正常的,发现突然网站访问非常缓慢或无法访问了,而 Ping 还可以 Ping 通,则很可能遭受了资源耗尽攻击 ,此时若在服务器上用Nistat -na命令观察到有大量的SYN_RECEIVED、TIME_W AIT、FIN_W AIT_1 等状态存在,而EST BLISHED 很少,则可判定肯定是遭受了资源耗尽攻击。还有一种属于资源耗尽攻击的现象是,Ping 自己的网站主机 Ping 不通或者是丢包严重,而 Ping 与自己的主机在同一交换机上的服务器则正常,造成这种原因是网站主机遭受攻击后导致系统内核或某些应用程序 CPU 利用率达到 100%无法回应 Ping 命令,其实带宽还是有的,否则就 Ping 不通接在同一交换机上的主机了。
攻击手段
编辑当前主要有三种流行的 DDOS:
这种攻击方法是经典最有效的 DDOS 方法, 可通杀各种系统的网络服务, 主要是通过向
受害主机发送大量伪造源 IP 和源端口的 SYN 或 ACK 包,导致主机的缓存资源被耗尽或忙
于发送回应包而造成拒绝服务, 由于源都是伪造的故追踪起来比较困难, 缺点是实施起来有
一定难度, 需要高带宽的僵尸主机支持。 少量的这种攻击会导致主机服务器无法访问, 但却
可以 Ping 的通, 在服务器上用 Netstat -na 命令会观察到存在大量的 SYN_RECEIVED 状态,
大量的这种攻击会导致 Ping 失败、TCP/IP 栈失效,并会出现系统凝固现象,即不响应键盘
和鼠标。普通防火墙大多无法抵御此种攻击。
2、TCP 全连接攻击:
这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过
滤 T earDrop、Land 等 DOS 攻击的能力,但对于正常的 TCP 连接是放过的,殊不知很多网
络服务程序(如:IIS、Apache 等 W eb 服务器)能接受的 TCP 连接数是有限的,一旦有大
量的 TCP 连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP 全连接攻
击就是通过许多僵尸主机不断地与受害服务器建立大量的 TCP 连接,直到服务器的内存等
资源被耗尽而被拖跨, 从而造成拒绝服务, 这种攻击的特点是可绕过一般防火墙的防护而达
到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的 IP 是暴露的,因此容易被
追踪。
3、刷 Script 脚本攻击:
这种攻击主要是针对存在 ASP、JSP、PHP、CGI 等脚本程序,并调用 MSSQLServer、
MySQLServer、Oracle 等数据库的网站系统而设计的,特征是和服务器建立正常的 TCP 连
接, 并不断的向脚本程序提交查询、 列表等大量耗费数据库资源的调用, 一般来说, 提交一
个 GET 或 POST 指令对客户端的耗费和带宽的占用是几乎可以忽略的,而服务器为处理此
请求却可能要从上万条记录中去查出某个记录, 这种处理过程对资源的耗费是很大的, 常见
的数据库服务器很少能支持数百个查询指令同时执行,而这对于客户端来说却是轻而易举
的, 因此攻击者只需通过 Proxy 代理向主机服务器大量递交查询指令, 只需数分钟就会把服
务器资源消耗掉而导致拒绝服务,常见的现象就是网站慢如蜗牛、ASP 程序失效、PHP 连
接数据库失败、数据库主程序占用 CPU 偏高。这种攻击的特点是可以完全绕过普通的防火
墙防护, 轻松找一些 Proxy 代理就可实施攻击, 缺点是对付只有静态页面的网站效果会大打
折扣,并且有些 Proxy 会暴露攻击者的 IP 地址。
怎么抵御 DDOS
仅仅依靠某种系统或产品防住 DDOS 是不现实的, 可以肯定的是, 完全杜绝 DDOS
是不可能的,但通过适当的措施抵御 90%的 DDOS 攻击是可以做到的,基于攻击和防御都
有成本开销的缘故,若通过适当的办法增强了抵御 DDOS 的能力,也就意味着加大了攻击
者的攻击成本,那么绝大多数攻击者将无法继续下去而放弃,也就相当于成功的抵御了
DDOS 攻击。
防御基础
编辑-
尽可能对系统加载最新补丁,并采取有效的合规性配置,降低漏洞利用风险;
-
采取合适的安全域划分,配置防火墙、入侵检测和防范系统,减缓攻击。
-
采用分布式组网、负载均衡、提升系统容量等可靠性措施,增强总体服务能力。
大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而 且还给黑客入侵带来不少麻烦,至少到为止关于 HTML 的溢出还没出现,新浪、搜狐、网易等门户网站主要都是静态页面, 若你非需要动态脚本调用, 那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器, 当然, 适当放一些不做数据库调用脚本还是可以的, 此外,最好在需要调用数据库的脚本中拒绝使用代理的访问, 因为经验表明使用代理访问你网站的80%属于恶意行为