DDos

https://www.zhihu.com/question/22259175

概念

Distributed Denial of Service,翻译成中文就是分布式拒绝服务

一般来说是指攻击者利用“肉鸡”对目标网站在较短的时间内发起大量请求,大规模消耗目标网站的主机资源,让它无法正常服务。在线游戏、互联网金融等领域是 DDoS 攻击的高发行业。

举例

我开了一家有五十个座位的重庆火锅店,由于用料上等,童叟无欺。平时门庭若市,生意特别红火,而对面二狗家的火锅店却无人问津。二狗为了对付我,想了一个办法,叫了五十个人来我的火锅店坐着却不点菜,让别的客人无法吃饭。

DoS 拒绝服务

DDoS 分布式拒绝服务

DRDoS 分布式反射拒绝服务

CC Challenge Collapsar

0X1 A比B大,于是分出一部分资源,不停的对B网吧发起FLOOD攻击。导致A损失一部分资源,B关门了。 这就是DoS攻击。

0X2 A比B小。但是A有很多兄弟C,D,E,F,G网吧,甚至A还控制了一些肉鸡。一起对B发起FLOOD攻击。B又关门了。这就是DDoS攻击。

0X3 B很大,A和他的朋友打不动了。于是他们找到了很多公网提供的服务。如redis、mongodb、memcache、NTP、UPnP….. 然后一起对这些服务发送伪造的请求。如:Hi memcache,请把缓存的数据发给我。我的IP是B。(放大了几百倍) 这种攻击叫反射攻击。于是大量的反射攻击开始了。 全球几十万的弱验证开放服务一起给B发送数据。B又关门了。这就是DRDoS。

0X4 B很生气,于是在运营商层面部署了很多硬防来清洗流量。 DDoS DRDoS 也没办法了。这时候A突然发现B有一个数据查询接口,部署在公网。如:会员信息查询之类的。A又联合他的兄弟,甚至找了很多公开的免费代理。一起对这个接口进行请求。每秒几十万次查询。最终B的会员数据库挂了。B又关门了。这就是CC攻击。

最后B报警,把A抓起来了。。

类型

ICMP Flood

ICMP(Internet控制报文协议)用于在IP主机、路由器之间传递控制消息,控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。通过对目标系统发送海量数据包,就可以令目标主机瘫痪,如果大量发送就成了洪水攻击。

UDP Flood

UDP协议是一种无连接的服务,在UDP Flood 中,攻击者通常发送大量伪造源IP地址的小UDP包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。100k bps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。

上述传统的流量型攻击方式技术含量较低,伤人一千自损八百,攻击效果通常依赖受控主机本身的网络性能,而且容易被查到攻击源头,单独使用的情况已不常见。于是,具有四两拔千斤效果的反射型放大攻击就出现了。

NTP Flood

NTP是标准的基于UDP协议传输的网络时间同步协议,由于UDP协议的无连接性,方便伪造源地址。攻击者使用特殊的数据包,也就是IP地址指向作为反射器的服务器,源IP地址被伪造成攻击目标的IP,反射器接收到数据包时就被骗了,会将响应数据发送给被攻击目标,耗尽目标网络的带宽资源。一般的NTP服务器都有很大的带宽,攻击者可能只需要1Mbps的上传带宽欺骗NTP服务器,就可给目标服务器带来几百上千Mbps的攻击流量。

因此,“问-答”方式的协议都可以被反射型攻击利用,将质询数据包的地址伪造为攻击目标地址,应答的数据包就会都被发送至目标,一旦协议具有递归效果,流量就被显著放大了,堪称一种“借刀杀人”的流量型攻击。

SYN Flood

这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。建立TCP连接,需要三次握手——客户端发送SYN报文,服务端收到请求并返回报文表示接受,客户端也返回确认,完成连接。

SYN Flood 就是用户向服务器发送报文后突然死机或掉线,那么服务器在发出应答报文后就无法收到客户端的确认报文(第三次握手无法完成),这时服务器端一般会重试并等待一段时间后再丢弃这个未完成的连接。一个用户出现异常导致服务器的一个线程等待一会儿并不是大问题,但恶意攻击者大量模拟这种情况,服务器端为了维护数以万计的半连接而消耗非常多的资源,结果往往是无暇理睬客户的正常请求,甚至崩溃。从正常客户的角度看来,网站失去了响应,无法访问。

CC 攻击

DNS Query Flood

混合攻击

如何应对 DDoS 攻击?

高防服务器

还是拿我开的重庆火锅店举例,高防服务器就是我给重庆火锅店增加了两名保安,这两名保安可以让保护店铺不受流氓骚扰,并且还会定期在店铺周围巡逻防止流氓骚扰。

高防服务器主要是指能独立硬防御 50Gbps 以上的服务器,能够帮助网站拒绝服务攻击,定期扫描网络主节点等,这东西是不错,就是贵

黑名单

面对火锅店里面的流氓,我一怒之下将他们拍照入档,并禁止他们踏入店铺,但是有的时候遇到长得像的人也会禁止他进入店铺。这个就是设置黑名单,此方法秉承的就是“错杀一千,也不放一百”的原则,会封锁正常流量,影响到正常业务。

DDoS 清洗

DDos 清洗,就是我发现客人进店几分钟以后,但是一直不点餐,我就把他踢出店里。

DDoS 清洗会对用户请求数据进行实时监控,及时发现DOS攻击等异常流量,在不影响正常业务开展的情况下清洗掉这些异常流量。

CDN 加速

CDN 加速,我们可以这么理解:为了减少流氓骚扰,我干脆将火锅店开到了线上,承接外卖服务,这样流氓找不到店在哪里,也耍不来流氓了。

在现实中,CDN 服务将网站访问流量分配到了各个节点中,这样一方面隐藏网站的真实 IP,另一方面即使遭遇 DDoS 攻击,也可以将流量分散到各个节点中,防止源站崩溃。

IDS

入侵检测系统(intrusion detection system,简称“IDS”)是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它与其他网络安全设备的不同之处便在于,IDS是一种积极主动的安全防护技术。 IDS最早出现在1980年4月。 1980年代中期,IDS逐渐发展成为入侵检测专家系统(IDES)。 1990年,IDS分化为基于网络的IDS和基于主机的IDS。后又出现分布式IDS。目前,IDS发展迅速,已有人宣称IDS可以完全取代防火墙。

目前入侵检测系统研究的主流方向大都以提升异常检测的准确性或提高攻击行为特征提取的速率上。

准确性:使用机器学习算法或网络算法实现的、大数据相关技术

DPDK 高性能高速率包捕获框架

入侵检测系统中极其重要的一环就是对数据包的处理进而通过分析数据包来做出相应的反馈

目前比较流行的数据包处理技术主要有 Libpcap,PF_RING,Netmap 和 DPDK 等

Libpcap工作原理中,必须使用网卡的硬中断做通讯,每次硬中断大约消耗 100 微秒,中断会带来上下文的切换,从而会造成不同类型的 cache miss 和内核态用户态之间切换,一旦发生 cache miss,速度就会下降,而内核态和用户态的切换又发生数据拷贝,增加 CPU 以及内存的消耗。

PF_RING是 Luca Deri 研究出来的用来提高内核处理数据包效率的数据包捕获函数库。

使用 NAPI 减少 CPU 中断响应网卡的技术。NAPI的基本思想就是当数据包到来时网卡发出中断请求,CPU 响应中断请求进入中断处理程序,同时 CPU 会关闭接下来的中断处理请求。因为在 CPU 进入中断处理程序后,会使用轮询的方式获取数据包,轮询持续到接收了一定数量的数据包以后再退出,并打开中断。通过这种方式减少 CPU 中断次数。 (2) 使用 mmap 和 DMA 实现零拷贝减少数据在内存之间的拷贝。数据由 DMA从网卡直接拷贝到内核空间后,应用程序可以在用户态的内存空间中通过 mmap 直接访问内核数据从而减少内存数据在内核态空间和用户态空间的拷贝。

Netmap 也是一个基于零拷贝的高性能的数据包收发框架

(1)花费在系统调用以及处理数据包的时间少。 (2) 利用自带的网卡驱动直接接管网卡,运行时会申请一块固定的内存池,用于 存储接收网卡的数据包和需要发送给网卡的数据包。 (3) 使用 mmap 减少内存拷贝。

DPDK

相比于 Libpcap 过多的内核和系统操作,PF_RING 中无法避免的内核处理等,Netmap 中支持该驱动的网卡较少等问题有更大的优势

防火墙 (Firewall)

别名防护墙,于1993发明并引入国际互联网。

他是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。在网络中,所谓的防火墙是指一种将内网和外网分开的方法,他实际上是一种隔离技术

防火墙对流经它的网络通信进行扫描, 这样就能够过滤掉一些攻击,以免其在目标计算机上执行。

通常的防火墙主要工作第二到第四层,重心是在网络层,用于过滤IP和协议类型。

WAF

(Web Application Firewall) Web应用防火墙

Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略还专门为Web应用提供保护的一款产品。

与传统防火钱不同,WAF工作在应用层。