当前位置:   article > 正文

DDOS攻击与防御(一)_pingflood攻击原理

pingflood攻击原理

DDOS攻击与防御

1.常见DDOS类型

1.ICMP FLood
ping Flood 是一种拒绝服务攻击,攻击者试图用 ICMP 回显请求数据包淹没目标设备,导致目标设备无法访问正常流量。当攻击流量来自多个设备时,攻击就变成了DDoS或分布式拒绝服务攻击。
ICMP Flood 的攻击原理和ACK Flood原理类似,属于流量型的攻击方式,也是利用大的流量给服务器带来较大的负载,影响服务器的正常服务。由于目前很多防火墙直接过滤ICMP报文,因此ICMP Flood出现的频度较低。
Ping (ICMP) Flood 的 DDoS 形式可以分解为 2 个重复步骤:
1.攻击者使用多个设备向目标服务器发送许多 ICMP 回显请求数据包。
2.然后,目标服务器向每个请求设备的 IP 地址发送一个 ICMP 回显回复数据包作为响应。
Ping Flood 的破坏性影响与向目标服务器发出的请求数量成正比。与NTP放大、DNS放大等基于反射的DDoS攻击不同,Ping Flood攻击流量是对称的;目标设备接收的带宽量只是从每个机器人发送的总流量的总和。

防御方法:
通过禁用目标路由器、计算机或其他设备的 ICMP 功能,最容易禁用 ping 泛洪。网络管理员可以访问设备的管理界面并禁用其使用 ICMP 发送和接收任何请求的能力,从而有效地消除对请求的处理和回声回复。这样做的结果是所有涉及 ICMP 的网络活动都被禁用,使设备对 ping 请求、traceroute 请求和其他网络活动无响应。

2.TCP Flood
原理:
1.攻击者先向目标机发送SYN包,请求建立TCP连接
2.目标机接收到SYN包之后,便会进入SYN_RCVD状态,然后又给攻击者回一个SYN-ACK包
3.如果攻击者发送SYN包时用的是伪造IP地址,那么目标机发送的SYN-ACK就很可能不可达,得不到ACK来建立完整的三次握手连接,这时目标机就会保持SYN_RCVD状态直到timeout。想象一下,如果我们一直发送SYN包请求连接,但是又不和目标机器建立完整的TCP连接,一会大家看看我的攻击脚本就知道这是一件多么可怕的事了
4.如果攻击者用的是本主机真实的IP地址的话,那么攻击者接受到ACK之后正常情况下会回复一个RST包(为什么不是ACK呢,因为攻击时我们是用pyhton的scapy库来发包的,本地网卡并不认为自己发送了SYN包,莫名奇妙接收到一个SYN-ACK包当然会回复RST包啦)

攻击方法:
在KAli Linux上使用 Hping3工具进行攻击
hping3 -q -n -a 2.2.2.2 -S -s 53 --keep -p 445 --flood 192.168.73.138
(hping3 -q -n -a 伪造源IP -S -s 伪造源端口 --keep -p 目的端口 --flood 目的IP)然后查看Windows XP的任务管理器。可以看出,Windows XP的性能利用率已经达到100%(居高不下),表明已经攻击成功。

防御方法:
1.如果某个端口和同一个IP建立了多个不完整连接,直接禁IP
2.减少SYN-RECEIVED的过期时间
3.设置SYN Cookie
4.设置防火墙的进站和入站规则
5.记录日志方便溯源追踪真凶

3.udp flood
正是UDP协议的广泛应用,为黑客们发动UDP Flood攻击提供了平台。UDP Flood属于带宽类攻击,黑客们通过僵尸网络向目标服务器发起大量的UDP报文,这种UDP报文通常为大包,且速率非常快,通常会造成以下危害:
消耗网络带宽资源,严重时造成链路拥塞。
大量变源变端口的UDP Flood会导致依靠会话转发的网络设备,性能降低甚至会话耗尽,从而导致网络瘫痪。
防火墙对UDP Flood的防御并不能像SYN Flood一样,进行源探测,因为它不建立连接。那应该怎么防御呢?
最初防火墙对UDP Flood的防御方式就是限流,通过限流将链路中的UDP报文控制在合理的带宽范围之内。
防火墙上针对UDP Flood的限流有三种:
基于目的IP地址的限流:即以某个IP地址作为统计对象,对到达这个IP地址的UDP流量进行统计并限流,超过部分丢弃。
基于目的安全区域的限流:即以某个安全区域作为统计对象,对到达这个安全区域的UDP流量进行统计并限流,超过部分丢弃。
基于会话的限流:即对每条UDP会话上的报文速率进行统计,如果会话上的UDP报文速率达到了告警阈值,这条会话就会被锁定,后续命中这条会话的UDP报文都被丢弃。当这条会话连续3秒或者3秒以上没有流量时,防火墙会解锁此会话,后续命中此会话的报文可以继续通过。
限流虽然可以有效缓解链路带宽的压力,但是这种方式简单粗暴,容易对正常业务造成误判。为了解决这个问题,防火墙又进一步推出了针对UDP Flood的指纹学习功能。
在这里插入图片描述

指纹学习是通过分析客户端向服务器发送的UDP报文载荷是否有大量的一致内容,来判定这个UDP报文是否异常。防火墙对到达指定目的地的UDP报文进行统计,当UDP报文达到告警阈值时,开始对UDP报文的指纹进行学习。如果相同的特征频繁出现,就会被学习成指纹,后续命中指纹的报文判定这是攻击报文,作为攻击特征进行过滤。
因为大多数IP并不提供UDP服务,直接丢弃UDP流量即可。所以现在纯粹的UDP流量攻击比较少见了,取而代之的是UDP协议承载的DNS Query Flood攻击。简单地说,越上层协议上发动的DDoS攻击越难以防御,因为协议越上层,与业务关联越大,防御系统面临的情况越复杂。

4.DNS Query Flood攻击
DNS查询攻击全称UDP DNS Query Flood,攻击采用的方法是向被攻击的服务器发送大量的域名解析请求,通常请求解析的域名是随机生成或者是网络上根本不存在的域名,被攻击的DNS 服务器在接收到域名解析请求的时候首先会在服务器上查找是否有对应的缓存,如果查找不到并且该域名无法直接由服务器解析的时候,DNS 服务器会向其上层DNS服务器递归查询域名信息。域名解析的过程给服务器带来了很大的负载,每秒钟域名解析请求超过一定的数量就会造成DNS服务器解析域名超时。
根据微软的统计数据,一台DNS服务器所能承受的动态域名查询的上限是每秒钟9000个请求。而我们知道,在一台P3的PC机上可以轻易地构造出每秒钟几万个域名解析请求,足以使一台硬件配置极高的DNS服务器瘫痪,由此可见DNS 服务器的脆弱性。目前最常用的DNS服务器软件是Bind、PowerDNS等。
通常攻击者采用的手段包括:

  1. 利用发包程序向DNS服务器发送不带任何负载的NULL数据包。由于数据包本身不符合协议规定,服务器在收到报文的时候将直接丢弃。因此这种攻击方式除非攻击流量比较大,否则不会有明显的效果。
  2. 利用程序构造DNS解析请求固定的域名,由于DNS服务器在解析请求的时候会在系统cache存放上一次解析的结果,这种攻击方式也需要较大的流量。
  3. 向DNS服务器发起解析请求随机的、不存在的域名;这样DNS服务器就需要进行频繁的字符串匹配,由于在本地无法查到对应的结果,服务器必须使用递归查询向上层域名服务器提交解析请求,引起连锁反应。
    在UDP Flood的基础上对 UDP DNS Query Flood 攻击进行防护
    根据域名 IP 自学习结果主动回应,减轻服务器负载(使用 DNS Cache)
    对突然发起大量频度较低的域名解析请求的源 IP 地址进行带宽限制
    在攻击发生时降低很少发起域名解析请求的源 IP 地址的优先级
    限制每个源 IP 地址每秒的域名解析请求次数
    5.CC攻击原理
    HTTP Flood 俗称CC攻击(Challenge Collapsar)是DDOS(分布式拒绝服务)的一种,前身名为Fatboy攻击,也是一种常见的网站攻击方法。是针对 Web 服务在第七层协议发起的攻击。攻击者相较其他三层和四层,并不需要控制大量的肉鸡,取而代之的是通过端口扫描程序在互联网上寻找匿名的 HTTP 代理或者 SOCKS 代理,攻击者通过匿名代理对攻击目标发起HTTP 请求。匿名代理服务器在互联网上广泛存在。因此攻击容易发起而且可以保持长期高强度的持续攻击,同样可以隐藏攻击者来源避免被追查。
    HTTP/CC 攻击的特点:
    HTTP/CC 攻击的 ip 都是真实的,分散的
    HTTP/CC 攻击的数据包都是正常的数据包
    HTTP/CC 攻击的请求都是有效请求,且无法拒绝
    HTTP/CC 攻击的是网页,服务器可以连接,ping 也没问题,但是网页就是访问不了
    如果 IIS 一开,服务器很快就死,容易丢包。

CC攻击类型有一下几种
1、直接攻击:主要针对有重要缺陷的Web应用程序,这种情况比较少见,一般只有在程序写出错的时候才会出现。
2、代理攻击:代理攻击是黑客借助代理服务器生成指向受害主机的合法网页请求,实现DOS和伪装。攻击者模拟多个用户不停地进行访问那些需要大量数据操作,需要大量CPU时间的页面。
3、僵尸网络攻击:攻击者通过各种途径传播僵尸程序,然后当用户感染并激活病毒时,攻击者就可以控制电脑,并下发各种远程命令,最后随着被感染的电脑越来越多,就形成了庞大的僵尸网络。

CC攻击常见防御策略
1.完善日志
要有保留完整日志的习惯,通过日志分析程序,能够尽快判断出异常访问,同时也能收集有用信息,比如发现单一IP的密集访问,特定页面的URL请求激增等等。
2.屏蔽IP
通过命令或查看日志如果发现CC攻击的源IP,就可以在IIS(Web页面服务组件)、防火墙中设置屏蔽该IP,使该IP没有对Web站点的访问权限,从而达到防御的目的。
3.更改Web端口
通常情况Web服务器都是通过80端口提供对外服务,所以黑客发起攻击的默认端口也是80端口,那么修改Web端口,可以起到防护CC攻击的目的。
4.取消域名绑定
黑客发起攻击时,很可能使用攻击工具设定攻击对象为域名,然后实施攻击,取消域名绑定后,可以让CC攻击失去目标,Web服务器的资源占用率也能够迅速恢复正常,因为通过IP还是可以正常访问的,所以对针对IP的CC攻击取消域名绑定是没用的。
5.网站程序防御
利用网站程序限制IP访问频率,并对程序进行优化进少,生成纯静态页,减少动态情况,可一定程度上减少CC攻击的压力。
6.云防火墙
如高防CDN、高防IP,高防CDN会对CC攻击访问进行拦截,对正常访客放行,同时利用边缘节点缓存网站资源,适用于网站被大量CC攻击防御;高防IP则是DDOS防火墙,利用高带宽、高硬防的特点,对CC攻击进行识别拦截,如正常用户就放行,也适用于被大量CC攻击防御
CC攻击常见防御方法

  1. 利用Session做访问计数器:
    利用Session针对每个IP做页面访问计数器或文件下载计数器,防止用户对某个页面频繁刷新导致数据库频繁读取或频繁下载某个文件而产生大额流量。(文件下载不要直接使用下载地址,才能在服务端代码中做CC攻击的过滤处理)
  2. 把网站做成静态页面:
    大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给骇客入侵带来不少麻烦,至少到现在为止关于HTML的溢出还没出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器。
  3. 增强操作系统的TCP/IP栈
    Win2000和Win2003作为服务器操作系统,本身就具备一定的抵抗DDOS攻击的能力,只是默认状态下没有开启而已,若开启的话可抵挡约10000个SYN攻击包,若没有开启则仅能抵御数百个,具体怎么开启,自己去看微软的文章吧!《强化 TCP/IP 堆栈安全》。也许有的人会问,那我用的是Linux和FreeBSD怎么办?很简单,按照这篇文章去做吧!《SYN Cookies》。
  4. 在存在多站的服务器上,严格限制每一个站允许的IP连接数和CPU使用时间
    这是一个很有效的方法。CC的防御要从代码做起,其实一个好的页面代码都应该注意这些东西,还有SQL注入,不光是一个入侵工具,更是一个DDOS缺口,大家都应该在代码中注意。举个例子吧,某服务器,开动了5000线的CC攻击,没有一点反应,因为它所有的访问数据库请求都必须一个随机参数在Session里面,全是静态页面,没有效果。突然发现它有一个请求会和外面的服务器联系获得,需要较长的时间,而且没有什么认证,开800线攻击,服务器马上满负荷了。代码层的防御需要从点点滴滴做起,一个脚本代码的错误,可能带来的是整个站的影响,甚至是整个服务器的影响!
  5. 服务器前端加CDN中转
    (免费的有百度云加速、360网站卫士、加速乐、安全宝等),如果资金充裕的话,可以购买高防的盾机,用于隐藏服务器真实IP,域名解析使用CDN的IP,所有解析的子域名都使用CDN的IP地址。此外,服务器上部署的其他域名也不能使用真实IP解析,全部都使用CDN来解析。
    另外,防止服务器对外传送信息泄漏IP地址,最常见的情况是,服务器不要使用发送邮件功能,因为邮件头会泄漏服务器的IP地址。如果非要发送邮件,可以通过第三方代理(例如sendcloud)发送,这样对外显示的IP是代理的IP地址。
    总之,只要服务器的真实IP不泄露,10G以下小流量DDOS的预防花不了多少钱,免费的CDN就可以应付得了。如果攻击流量超过20G,那么免费的CDN可能就顶不住了,需要购买一个高防的盾机来应付了,而服务器的真实IP同样需要隐藏
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/717614
推荐阅读
相关标签
  

闽ICP备14008679号