DDoS攻击原理及抵御应对方法

什么是DDoS攻击?

分布式拒绝服务(DDoS)攻击是一种恶意企图,通过大量互联网流量压倒目标或其周围的基础架构来破坏目标服务器,服务或网络的正常流量。DDoS攻击通过利用多个受损计算机系统作为攻击流量来源来实现有效性。被利用的机器可以包括计算机和其他网络资源,例如物联网设备。从高层次来看,DDoS攻击就像堵塞高速公路的交通堵塞,阻止了常规交通到达其所需的目的地。

DDoS攻击原理及抵御应对方法

如上图,ddos就是插队的那些车,造成交通瘫痪

DDoS攻击如何工作?

DDoS攻击需要攻击者控制在线计算机网络才能进行攻击。计算机和其他计算机(如物联网设备)感染了恶意软件,将每个计算机转变为机器人(或僵尸)。然后,攻击者可以远程控制僵尸程序组,这称为僵尸网络。

一旦僵尸网络建立,攻击者就可以通过远程控制方法向每个机器人发送更新的指令来指导机器。当受害者的IP地址被僵尸网络作为目标时,每个僵尸程序将通过向目标发送请求来响应,可能导致目标服务器或网络溢出容量,从而导致对正常流量的拒绝服务。由于每个机器人都是合法的Internet设备,因此将攻击流量与正常流量分开可能很困难。

DDoS攻击原理及抵御应对方法

什么是常见类型的DDoS攻击?

不同的DDoS攻击向量针对网络连接的不同组件。为了理解不同的DDoS攻击是如何工作的,有必要知道如何建立网络连接。因特网上的网络连接由许多不同的组件或“层”组成。就像从头开始建造房屋一样,模型中的每一步都有不同的目的。该OSI模型,如下所示,是用来描述在7不同的层的网络连接的概念框架

虽然几乎所有DDoS攻击都涉及压倒目标设备或网络流量,但攻击可分为三类。攻击者可以使用一个或多个不同的攻击向量,或者可能基于目标采取的反制措施来循环攻击向量。

1、应用层攻击

攻击的目标:

有时被称为第7层DDoS攻击(参考OSI模型的第7层),这些攻击的目标是耗尽目标的资源。攻击的目标是在服务器上生成网页并响应HTTP请求而传递的层。单个HTTP请求在客户端执行起来很便宜,并且目标服务器响应起来可能很昂贵,因为服务器通常必须加载多个文件并运行数据库查询才能创建网页。第7层攻击难以防御,因为流量很难被标记为恶意攻击。

应用层攻击示例:HTTP Flood

此攻击类似于同时在多个不同计算机上反复按Web浏览器中的刷新 - 大量HTTP请求泛滥服务器,导致拒绝服务。

这种类型的攻击范围从简单到复杂。更简单的实现可以访问具有相同范围的攻击IP地址,引用者和用户代理的一个URL。复杂版本可能使用大量攻击性IP地址,并使用随机引用和用户代理来定位随机URL。

协议攻击

攻击的目标:

协议攻击(也称为状态耗尽攻击)通过消耗Web应用程序服务器或防火墙和负载平衡器等中间资源的所有可用状态表容量来导致服务中断。协议攻击利用协议栈的第3层和第4层中的弱点来使目标不可访问。

协议攻击示例:


SYN Flood

SYN Flood类似于接收来自商店前面的请求的供应室中的工作人员。工作人员收到请求,去取得包裹,并在将包裹拿出前等待确认。然后,工作人员在没有确认的情况下获得更多的包请求,直到他们无法携带更多的包,变得不堪重负,并且请求开始无人接听。

此攻击通过向目标发送具有欺骗性源IP地址的大量TCP“初始连接请求”SYN数据包来利用TCP握手。目标机器响应每个连接请求,然后等待握手中的最后一步,这一步从未发生过,耗尽了进程中的目标资源。

2、容量攻击

攻击的目标:

此类攻击试图通过消耗目标与较大Internet之间的所有可用带宽来创建拥塞。通过使用放大形式或其他创建大量流量的方式(例如来自僵尸网络的请求)将大量数据发送到目标。

扩增示例:


DNS放大

一个DNS放大就像如果有人打电话给餐厅和说:“我所拥有的一切的一个,请给我打电话,告诉我,我的整个秩序,”他们给回调的电话号码是目标的数量。只需很少的努力,就会产生很长的响应。

通过向具有欺骗IP地址(目标的真实IP地址)的开放DNS服务器发出请求,目标IP地址然后从服务器接收响应。攻击者构造请求,以便DNS服务器以大量数据响应目标。结果,目标接收到攻击者初始查询的放大。

减轻DDoS攻击的过程是什么?

减轻DDoS攻击的关键问题是区分攻击和正常流量。例如,如果产品发布的公司网站被热切的客户所淹没,那么切断所有流量是错误的。如果该公司突然出现来自已知不良行为者的流量激增,则可能需要努力减轻攻击。困难在于它将真实客户和攻击流量区分开来。

在现代互联网中,DDoS流量有多种形式。设计的流量可以从未欺骗的单一来源攻击到复杂的自适应多向量攻击。多向量DDoS攻击使用多个攻击路径以不同方式压倒目标,可能会分散任何一条轨迹上的缓解措施。同时针对协议栈的多个层的攻击,例如与HTTP泛洪(目标层7)耦合的DNS放大(目标层3/4)是多向量DDoS的示例。

减轻多向量DDoS攻击需要各种策略以对抗不同的轨迹。一般来说,攻击越复杂,流量越难以与正常流量分离 - 攻击者的目标是尽可能地混合,使缓解尽可能低效。涉及不加选择地丢弃或限制流量的缓解尝试可能会带来良好的流量,并且攻击也可以修改和适应以规避对策。为了克服复杂的破坏尝试,分层解决方案将带来最大的好处。

3、黑洞布线

几乎所有网络管理员都可以使用的一种解决方案是创建黑洞路由并将流量汇集到该路由中。在最简单的形式中,当在没有特定限制标准的情况下实施黑洞过滤时,合法和恶意网络流量都被路由到空路由或黑洞并从网络中丢弃。如果Internet属性遇到DDoS攻击,则该属性的Internet服务提供商(ISP)可能会将所有站点的流量发送到黑洞作为防御。

4、限速

限制服务器在特定时间窗口内接受的请求数量也是减轻拒绝服务攻击的一种方法。虽然速率限制有助于减缓网络抓取工具窃取内容和减少强力登录尝试,但仅凭它可能不足以有效地处理复杂的DDoS攻击。然而,速率限制是有效DDoS缓解策略中的有用组件。了解Cloudflare的速率限制

5、Web应用防火墙

甲Web应用防火墙(WAF)是一种工具,可以有助于减轻层7 DDoS攻击。通过在Internet和源服务器之间放置WAF,WAF可以充当反向代理,保护目标服务器免受某些类型的恶意流量的影响。通过基于用于识别DDoS工具的一系列规则过滤请求,可以阻止第7层攻击。有效WAF的一个关键值是能够快速实施自定义规则以响应攻击。了解Cloudflare的WAF

6、任播网络扩散

此缓解方法使用Anycast网络将攻击流量分散到分布式服务器网络中,直至网络吸收流量。就像将湍急的河流引入不同的较小通道一样,这种方法可以将分布式攻击流量的影响扩展到可管理的程度,从而扩散任何破坏性功能。

如何抵御ddos攻击?

1. 采用高性能的网络设备

首先要保证网络设备不能成为瓶颈,因此选择路由器、交换机、硬件防火墙等设备的时候要尽量选用知名度高、口碑好的产品。再就是假如和网络提供商有特殊关系或协议的话就更好了,当大量攻击发生的时候请他们在网络接点处做一下流量限制来对抗某些种类的DDoS攻击是非常有效的。

这就是传说中的技术不够,用钱凑。

2. 尽量避免NAT的使用

无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换NAT的使用,因为采用此技术会较大降低网络通信能力,其实原因很简单,因为NAT需要对地址来回转换,转换过程中需要对网络包的校验和进行计算,因此浪费了很多CPU的时间,但有些时候必须使用NAT,那就没有好办法了。

3. 充足的网络带宽保证

网络带宽直接决定了能抗受攻击的能力,假若仅仅有10M带宽的话,无论采取什么措施都很难对抗现在的SYNFlood攻击,当前至少要选择100M的共享带宽,最好的当然是挂在1000M的主干上了。但需要注意的是,主机上的网卡是1000M的并不意味着它的网络带宽就是千兆的,若把它接在100M的交换机上,它的实际带宽不会超过100M,再就是接在100M的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为10M,这点一定要搞清楚。

4. 升级主机服务器硬件

在有网络带宽保证的前提下,请尽量提升硬件配置,要有效对抗每秒10万个SYN攻击包,服务器的配置至少应该为:P4 2.4G/DDR512M/SCSI-HD,起关键作用的主要是CPU和内存,若有志强双CPU的话就用它吧,内存一定要选择DDR的高速内存,硬盘要尽量选择SCSI的,别只贪IDE价格不贵量还足的便宜,否则会付出高昂的性能代价,再就是网卡一定要选用3COM或Intel等名牌的,若是Realtek的还是用在自己的PC上吧。

5. 把网站做成静态页面或者伪静态

大量事实证明,把网站尽可能做成静态页面,不仅能大大提高抗攻击能力,而且还给黑客入侵带来不少麻烦,至少到现在为止关于HTML的溢出还没出现,看看吧!新浪、搜狐、网易等门户网站主要都是静态页面,若你非需要动态脚本调用,那就把它弄到另外一台单独主机去,免的遭受攻击时连累主服务器,当然,适当放一些不做数据库调用脚本还是可以的,此外,最好在需要调用数据库的脚本中拒绝使用代理的访问,因为经验表明使用代理访问你网站的80%属于恶意行为。

6. 增强操作系统的TCP/IP栈

Windows操作系统本身就具备一定的抵抗DDoS攻击的能力,只是默认状态下没有开启而已,若开启的话可抵挡约10000个SYN攻击包,若没有开启则仅能抵御数百个,具体怎么开启,自己去看微软的文章吧!

7. 安装专业抗DDOS防火墙

8. HTTP 请求的拦截

如果恶意请求有特征,对付起来很简单:直接拦截它就行了。

HTTP 请求的特征一般有两种:IP 地址和 User Agent 字段。比如,恶意请求都是从某个 IP 段发出的,那么把这个 IP 段封掉就行了。或者,它们的 User Agent 字段有特征(包含某个特定的词语),那就把带有这个词语的请求拦截。

9. 备份网站

你要有一个备份网站,或者最低限度有一个临时主页。生产服务器万一下线了,可以立刻切换到备份网站,不至于毫无办法。

备份网站不一定是全功能的,如果能做到全静态浏览,就能满足需求。最低限度应该可以显示公告,告诉用户,网站出了问题,正在全力抢修。这种临时主页建议放到 Github Pages 或者 Netlify,它们的带宽大,可以应对攻击,而且都支持绑定域名,还能从源码自动构建。

10. 部署CDN

CDN 指的是网站的静态内容分发到多个服务器,用户就近访问,提高速度。因此,CDN 也是带宽扩容的一种方法,可以用来防御 DDOS 攻击。

网站内容存放在源服务器,CDN 上面是内容的缓存。用户只允许访问 CDN,如果内容不在 CDN 上,CDN 再向源服务器发出请求。这样的话,只要 CDN 够大,就可以抵御很大的攻击。不过,这种方法有一个前提,网站的大部分内容必须可以静态缓存。对于动态内容为主的网站(比如论坛),就要想别的办法,尽量减少用户对动态数据的请求。

各大云服务商提供的高防 IP,背后也是这样做的:网站域名指向高防 IP,它提供一个缓冲层,清洗流量,并对源服务器的内容进行缓存。

这里有一个关键点,一旦上了 CDN,千万不要泄露源服务器的 IP 地址,否则攻击者可以绕过 CDN 直接攻击源服务器,前面的努力都白费。搜一下”绕过 CDN 获取真实 IP 地址”,你就会知道国内的黑产行业有多猖獗。

11. 其他防御措施

以上几条对抗DDoS建议,适合绝大多数拥有自己主机的用户,但假如采取以上措施后仍然不能解决DDoS问题,就有些麻烦了,可能需要更多投资,增加服务器数量并采用DNS轮巡或负载均衡技术,甚至需要购买七层交换机设备,从而使得抗DDoS攻击能力成倍提高,只要投资足够深入。

下面介绍一下linux 中iptable设置抵御ddos攻击的方法

Basic DoS Protection https://github.com/MPOS/php-mpos/wiki/Basic-DoS-Protection

# Rule 1: Limit New Connections To Something Sane.
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT

# Rule 2: Limit Existing Connections To Something Sane.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 50/second --limit-burst 50 -j ACCEPT

# Rule 3: Wow Lets Just Drop Anything We Don't Like The Look Of
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP

# Rule 4: Come In Or Go away, Don't Knock On My Door.
iptables -N PORT_SCANNING
iptables -A PORT_SCANNING -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN
iptables -A PORT_SCANNING -j DROP

# Rule 5: For You LAND Lovers Argghh!(Local Area Network Denial)
iptables -A INPUT -s YOURSERVERIP/32 -j DROP

# Rule 6: Ho-Ho-Ho, Wait.. Its Not Christmas.. (XMAS Packets)
iptables -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP

# Rule 7: OMG The Servers Seeing Blue (Smurf Attacks)
iptables -A INPUT -p icmp -m limit --limit 2/second --limit-burst 2 -j ACCEPT
or
iptables -A INPUT -p icmp -j DROP

# Rule 8: The More Advanced SYN Filter (Mod of top rule)
iptables -A INPUT -p tcp -m state --state NEW -m limit --limit 2/second --limit-burst 2 -j ACCEPT
or
iptables -D INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT

# Rule 9: NO UDP EXCEPT DNS - UDP CAN GO CLIMB A TREE
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp -j DROP
iptables -A OUTPUT -p udp -j DROP

iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 50/second --limit-burst 50 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,RST FIN,RST -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags ACK,URG URG -j DROP
iptables -A PORT_SCANNING -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN
iptables -A PORT-SCANNING -j DROP

DDoS攻击测试工具

1. 卢瓦(LOIC) (Low Orbit Ion Canon):LOTC是一个最受欢迎的DOS攻击工具。 这个工具被去年流行的黑客集团匿名者用于对许多大公司的网络攻击。它可以通过使用单个用户执行DOS攻击小型服务器,工具非常易于使用,即便你是一个初学者。 这个工具执行DOS攻击通过发送UDP,TCP或HTTP请求到受害者服务器。 你只需要知道服务器的IP地址或URL,其他的就交给这个工具吧。
2. XOIC:XOIC是另一个不错的DOS攻击工具。它根据用户选择的端口与协议执行DOS攻击任何服务器。XOIC开发者还声称XOIC比上面的LOIC在很多方面更强大呢。
3. R-U-Dead-Yet:R-U-Dead-Yet是一个HTTP post DOS攻击工具。它执行一个DOS攻击长表单字段,通过POST方法提交。这个工具提供了一个交互式控制台菜单,检测给定的URL,并允许用户选择哪些表格和字段应用于POST-based DOS攻击。
4. OWASP DOS HTTP POST:这是另外一个很好的工具。您可以使用这个工具来检查您的web服务器能否够捍卫得住别人的DOS攻击。当然,不仅对防御,它也可以用来执行DOS攻击哦。
5. DAVOSET:DAVOSET是另一个很好的执行DDOS攻击工具。 最新版本的工具新增支持COOKIE以及许多其他功能。


{{collectdata}}

网友评论0