人生不如意事十之九八,可与人言者并无二三
什么是DDoS,它如何运作,如何有效的抵御DDoS
什么是DDoS,它如何运作,如何有效的抵御DDoS

什么是DDoS,它如何运作,如何有效的抵御DDoS

| 1.什么是DDOS

DDOS,Distributed denial of service attack,即为分布式拒绝服务攻击,是互联网上最常见的网络攻击手段,他的目的是通过大量的请求以耗尽服务器资源以导致正常请求无法响应。当黑客是使用两台或以上的计算机(俗称肉鸡)向服务器发送拒绝服务攻击时,则被称为分布式拒绝攻击。

DDoS攻击中的“肉鸡”主要是计算机,移动网络设备以及IoT设备。随着物联网的发展,大量IoT[1]设备被劫持成为“肉鸡”,使得DDoS攻击强度逐年上升。 在线游戏,互联网金融和所有业务高度依赖互联网的行业都严重受到DDoS攻击的威胁。 DDoS攻击的影响包括直接的经济损失,包括收入损失,业务长时间瘫痪以及保险费的上升等。间接损失则更为严重,包括对公司声誉的致命打击,客户大量流失以及客户数据被窃等。

| 2.DDOS分为什么类型

为了理解DDOS攻击的原理,我们需要了解OSI网络七层模型,该模型将通信系统中的数据流划分为七个层,从分布式应用程序数据的最高层表示到跨通信介质传输数据的物理实现。每个中间层为其上一层提供功能,其自身功能则由其下一层提供。功能的类别通过标准的通信协议在软件中实现。

OSI七层模型的七层有

物理层

通俗的讲,把数据链路层提供的比特流,转换(调制)成适用于不同介质的,稳定的信号并发送。

数据链路层

将传来的比特合成字节然后转换成帧,再加上帧头帧尾

网络层

进行逻辑地址寻址,实现不同网络之间的路径选择,将网络表头加至数据包,表头包含网络数据,例如:IP

传输层

把传输表头加至资料以形成分组。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。

会话层

会话层需要控制维护两台计算机之间的通信链接

表示层

表示层即为将数据转换为接收者兼容的并且适合传输的格式

应用层

应用层即为专门为应用而设计的接口,以设置应用间的通信,例如:HTTPS,HTTP,SSH,POP3,FTP

而分布式拒绝攻击一般存在在第四层和第七层,即为传输层和应用层。而传输层的攻击方式也与应用层不一样,传输层有tcp协议和udp协议。

| 3.DDoS攻击如何对目标造成影响

按OSI模型DDoS攻击主要分成网络层攻击,传输层攻击,应用层攻击。

网络层DDoS攻击是利用大流量堵塞目标网站的带宽,使目标网站无法正常响应客户访问。常见的网络层DDoS攻击包括UDP Flood, ICMP Flood,NTP Flood等。

传输层DDoS攻击是通过占用服务器的连接资源从而消耗系统资源而达到拒绝正常请求的攻击目的。常见的传输层DDoS攻击包括SYN Flood, ACK Flood等。

应用层DDoS攻击是通过占用服务器的应用处理资源来耗尽服务器处理性能从而达到拒绝服务的目的。常见的应用层DDoS攻击包括DNS Flood,HTTP Flood等。

你可以将DDoS造成的效果理解为:“车辆在马路上来来往往的行驶着,突然有一群伪装成有人驾驶的无人汽车冲进了马路,使马路交通堵塞,车辆移动十分缓慢甚至不能移动,直到这群无人汽车同有人驾驶的汽车从马路中缓慢离开,交通恢复正常为止”

显而易见的,有人驾驶的汽车,指用户正常访问产生的流量;无人汽车,指攻击者通过“肉鸡”发送大量请求,以用来使正常用户请求无法送达服务器;而马路,自然是指服务器以及宽带。由此可见,DDoS攻击的实质便是通过大量的请求以耗尽服务器资源以导致正常请求无法响应。

| 4.如何防御DDoS攻击

通过适当的措施抵御DDoS攻击是可以做到的。DDoS攻击会在短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下线。到目前为止,进行DDoS攻击的防御还是比较困难的。首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。不过这不等于我们就没有办法阻挡DDoS攻击,我们可以尽力来减少DDoS的攻击。

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

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

(2).尽量避免NAT[2]的使用

无论是路由器还是硬件防护墙设备要尽量避免采用网络地址转换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栈

WindowsServer操作系统本身就具备一定的抵抗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够大,就可以抵御很大的攻击。不过,这种方法有一个前提,网站的大部分内容必须可以静态缓存。对于动态内容为主的网站(比如论坛),就要想别的办法,尽量减少用户对动态数据的请求。

| 5.总结

  “网络攻防无绝对”,这是几代白帽黑客与黑帽交锋得到的结论,无论你的服务器多好,伪静态配置有多么高明,防御做的有多完善,总会有更厉害的人去恶意或非恶意的黑掉你的服务器。正如刘慈欣在《三体》中所说的:“你再快,也有比你快的,你再慢,也有比你慢的”遂我只能根据我自己微薄的经验提出一些建议,欢迎各位大佬随时提出问题并补充。

   最后,祝各位网站永远不被攻击,写代码永远没有BUG~

[1] IoT:指物联网,是指数十亿个通常不期望具有Internet连接的物理设备,现在已连接到Internet(和/或彼此),收集和共享数据。 您可以想到的几乎所有物理对象都可以转换为IoT设备,例如咖啡机,洗衣机,耳机,灯,可穿戴设备和机器组件。 物联网描述了一个几乎可以以智能方式连接和通信的世界。 随着物联网,物理世界正在成为一个大信息系统。 物联网如何运作 带有内置传感器的设备和对象已连接到IoT平台,该平台集成了来自不同设备的数据,并进行了分析以与为满足特定需求而构建的应用程序共享最有价值的信息。 这些强大的物联网平台可以准确指出哪些信息有用,哪些可以安全地忽略。

[2]NAT: Network Address Translation,是指网络地址转换,1994年提出的。

当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法。

这种方法需要在专用网(私网IP)连接到因特网(公网IP)的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址(公网IP地址)。这样,所有使用本地地址(私网IP地址)的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

另外,这种通过使用少量的全球IP地址(公网IP地址)代表较多的私有IP地址的方式,将有助于减缓可用的IP地址空间的枯竭。在RFC 2663中有对NAT的说明。

本文来源于LINXの橘味气泡水店(blog.apci.top)文中部分对于DDoS的定义与诠释内容来源于网络,如需转载请标明出处

4条评论

  1. 蔡徐坤

    抵御cc不一定是看ip和ua,你还需要考虑到请求的header是否合法,首字母是否大写,另外检查ua的一致性来封ip是不稳妥的,如果是单ip检查ua一致性,那是相对稳妥的。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注