DDOS的攻击与防御

版权声明:转载请注明出处 https://blog.csdn.net/Frank_qiaoqiaoqiao/article/details/83588868

声明:本实验教程仅供研究学习使用,请勿用于非法用途,违者一律自行承担所有风险!!!

DoS攻击与DDos攻击的区别

Dos(Denial of Service 拒绝服务攻击):

​ 短时间内对目标服务器产生大量请求,使服务器链路拥塞或忙于处理攻击请求,导致服务暂时中断或停止,导致其正常用户无法访问。

DDoS(Distributed Denial of Service 分布式拒绝服务攻击):

​ 强调是将多个计算机(僵尸网络)联合起来作为攻击平台,对一个或多个目标发起DoS攻击。

DOS DDOS
一对一攻击 多对一攻击
单一攻击类型 混杂攻击类型
流量依赖于单点 流量多点汇聚、放大
易追踪 难追踪
防御难度低 防御难度高

DDoS分类

网络带宽DDoS(流量攻击)

流量攻击使用UDP协议的优点:

  • UDP面向无连接,双方无需验证对方身份;
  • UDP协议有更高的传输效率。
直接攻击

流量对等

UDP flood

ICMP flood

反射型DDoS

​ 利用反射器放大流量,攻击效果更优。放大流量通常是使用UDP协议的应用服务器,如DNS、NTP、SNMPV2、Cldap、Memcached等。

​ 基础是向有缺陷的目标发送精心构造的伪造源IP地址的UDP包来实现,而且主机与缺陷主机之间有大小不对等的信息交换。

应用 放大倍数 利用原理
DNS 28-54 DNS中的any type查询
NTP 556 NTP中monlist命令
SNMPv2 6.3 GetBulk请求
TFTP 60 利用tftp重传5-6次
CLDAP· 56-70 未授权用户的基本查询
CharGEN 358 普通的udp请求,随机返回大小 0-512
Memcached 10000-51000 普通的udp请求,返回指定字段大小

SNMP协议:用以监测连接到网络上的设备是否有任何引起管理上关注的情况。

SNMP反射攻击:攻击者发送大量伪造IP(受害者IP)的GETBULK请求给开启了SNMP服务的设备,这些设备将返回的SNMP查询结果给伪造IP,成为放大器将SNMP响应报文回复给受害者。

DNS反射攻击:攻击者发送大量的伪造IP(受害者IP)的请求给DNS服务器,DNS服务器成为放大器将DNS响应回复给受害者。

NTP反射攻击:

​ 在NTP server 4.2.7p26之前的版本中,默认提供monlist功能,monlist主要用于监控NTP服务器,NTP服务器响应之后就会返回与NTP服务器进行过时间同步的最后600个客户端的IP。

NTP协议:用于网络连接延时不稳定时不同设备之间通过分组交换进行时钟同步的一个网络协议。

Memcache:一套分布式高速缓存系统,开源项目。

Memcache UDP反射放大攻击(Memcache DRDoS):发送大量带有被害者IP地址的UDP数据包给放大器主机,然后放大器主机对伪造的IP地址源做出大量回应,形成分布式拒绝服务攻击,从而形成DRDoS反射攻击。

系统资源攻击

​ 主要攻击操作系统资源,如操作系统的TCP端口,常见SYN flood,THC SSL DOC。多见于传输层与会话层。

​ 占用系统的TCP会话资源、SSL会话资源。

攻击TCP连接
  • SYN Flood攻击

    利用TCP三次握手漏洞,受控主机伪造源IP发送大量的TCP SYN报文,使服务器打开大量的半开连接,占满服务器的连接表,从而影响正常用户和服务器建立会话,从而造成拒绝服务。

  • ACK Flood攻击

    攻击者伪造大量的SYN+ACK包发送给目标主机,目标主机每收到一个SYN+ACK数据包时,都回去自己的TCP连接表中查看有没有与ACK的发送者建立连接,如果有则发送ACK包完成TCP连接,如果没有则发送ACK+RST断开连接。

    混合DDOS攻击,更具有攻击性。

  • Sockstress攻击

    利用TCP/IP三次握手来实现拒绝服务攻击。

    Sockstress攻击首先会完成TCP三次握手以建立TCP连接,但是在三次握手的最后一次ACK应答中,攻击者将其TCP窗口大小设置为0,随后进行数据请求,攻击目标在传输数据时,发现接收端的TCP窗口大小为0,就会停止传输数据,并发出TCP窗口探测包,询问攻击者其TCP窗口是否有更新,由于攻击者不会更改TCP窗口的大小,被攻击目标就会一直维持等待数据发送,并不断进行窗口更新的探测状态。

攻击SSL连接
  • THC SSL DOS攻击

    SSL(Secure Sockets Layer,安全套接层):及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

    SSL协议加密、解密和秘钥协商的过程中会消耗大量的系统资源,严重降低机器的性能,因此,通常只有在传输密码等机密信息时才使用SSL协议进行传输。

    原理:在进行SSL数据传输之前,通信双方首先要进行SSL握手,以协商加密算法交换加密秘钥,进行身份验证,但是在SSL协议中有一个Renegotiation选项,通过它可以进行秘钥的重新协商以建立新的密钥。

    THC SSL DOS攻击在进行SSL连接并握手后,攻击者反复不断的进行秘要重新协商过程,而秘钥重新协商过程需要服务器投入比客户端多15倍的CPU计算资源,以此来使服务器忙于协商秘钥而完全停止响应。

  • SSL FLood攻击

    若服务器不支持Renegotiation重协商秘钥,那么久采用SSL Flood攻击。

    SSL Flood,建议是在数据传输前,进行SSL握手的过程中发动攻击,攻击者并不需要完成SSL握手和秘钥交换,而只需要在这个过程中让服务器去解密和验证,就能够大量消耗服务器的计算资源。

应用层攻击

​ 常见攻击包括CC攻击、Slow http、Slowloris、DNS query

​ 主要攻击目标为DNS类应用攻击与WEB类应用攻击。

DNS QUERY

​ 针对DNS服务器发起的攻击。利用客户端的一次查询,服务器在未命中时需要多次查询来消耗DNS服务器的资源。

CC攻击

​ CC攻击发起的是合法请求,比如去论坛读一个贴子,服务器会先去查询你是否有权限访问该贴,服务器会先查询你是否有权限访问该贴,然后再从数据库里读出该贴。这里至少会访问两次数据库,如果数据库优化没有做好,这时服务器会消耗大量资源在数据库查询上。

Slow HTTP Dos AttACKs (慢速HTTP拒绝服务攻击)

​ HTTP慢速攻击对于基于线程处理的Web服务器影响显著,如apache、dhttpd,而对于基于事件处理的Web服务器影响不大,如nginx、lighttpd。

​ 攻击者在发送HTTP POST请求时,在请求头部中将Content-Length设置为一个很大的值,并将HTTP BODY以非常缓慢地速度一个字节一个字节的向Web服务器发送,这样攻击者会很长时间占有这个HTTP连接。

Slowloris

​ HTTP协议规定请求头以一个空行结尾,所以完整的请求头结尾是\r\n\r\n。

​ 使用非正常的\r\n来结尾,就会导致服务端认为我们的请求头还没有结束,等待我们继续发送数据直到超时时间。

DDOS防御

DDoS攻击的要素

  • 僵尸网络的广泛传播,尤其是今年来的IOT设备的兴起;
  • 互联网上基础设施安全缺陷,如DNS、NTP等;
  • 源IP的伪造非常容易;
  • 应用设计时未考虑资源利用问题。

DDOS防御的根本

将流量正确的 人机区分

僵尸网络

  • 可控制的网络
  • 采用一定恶意手段传播形成
  • 可以一对多地执行相同的命令

僵尸网络的治理

  • 僵尸网络是DDOS攻击的源头
  • 难以从终端治理
  • 获取僵尸样本分析,进行逆向分析,编写清除程序,分析网络特征
  • 在网络出口拦截僵尸网络流量
  • 未加密的僵尸网络流量可以直接进行流量分析,并拦截

用户端(终端)防御

  • 信息安全意识普及
  • 设置防火墙白名单
  • 更新杀毒软件
  • IOT设备的固件更新
  • 降低普通用户权限

基础设施的防御

​ 基础设施主要用于反射型DDOS放大流量,常见的有DNS、NTP、TFTP、SNMP、GENCHAR、SSDP等。

DNS反射器防御
  • 限制源地址的范围,降低被利用的可能性
  • 启用RLL(Response Rate Limiting)策略,限制响应速度
  • 普通用户不要在广域网上提供响应DNS数据包
NTP反射器防御
  • 关闭默认的monlist功能,在ntp.conf配置文件中增加disabled monitor选项
  • 升级NTP Server至4.2.7p26或更高
  • 在网络出口封禁UDP 123 端口
TFTP反射器防御
  • 限制源地址的范围,降低被利用的可能性
  • 配置TFTP重传次数

流量型防御

​ 有效的思想,稀释流量来提高服务的可用性。

使用CDN网络

​ CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

使用Anycast

​ Anycast最初是在RFC1546中提出并定义的,它的最初语义是,在IP网络上通过一个Anycast地址标识一组提供特定服务的主机,同时服务访问方并不关心提供服务的具体是哪一台主机(比如DNS或者镜像服务),访问该地址的报文可以被IP网络路由到这一组目标中的任何一台主机上,它提供的是一种无状态的、尽力而为的服务。目前对于Anycast的中文译称主要有,“任播”、“泛播”、“选播”等,本文一律使用“任播”一词,或者直接使用英文单词“Anycast”。

应用型防御

简单识别
  • IP信誉检查
  • 指纹识别技术
速度检查与限制
  • DDOS在数据包发送速度上往往有一定的特征
    • UDP flood是快速发包,通过海量的数据来消耗带宽
    • THC SSL DOS ,并不需要很快速度,只是在一个会话中不停地协商秘钥
    • Slow HTTP,发包速度慢,长时间占有会话
TCP检测与代理
  • TCP检测原地址
    • 防火墙发送SYN+ACK+错误SEQ
    • 正常客户端:回应RST后再发起SYN
    • 异常客户端:无响应
  • TCP代理原理

    流量清洗设备在建立三次握手后,再将数据发送给真实服务器

HTTP客户端验证
  • HTTP 302重定向

    客户端发送正常请求,流量清洗设备回应302重定向。根据客户端是否执行重定向动作来确认客户端的真伪。

  • HTTP启用Javascript验证

    在HTTP页面,执行javascript脚本,根据客户端的执行结果来判断客户端的真伪。

  • 验证码人机识别

    在HTTP页面,启用验证码,来判断客户端的真伪。

猜你喜欢

转载自blog.csdn.net/Frank_qiaoqiaoqiao/article/details/83588868