DDoS(Distributed Denial of Service,分布式拒绝服务)
定义:
主要通过大量合法的请求占用大量网络资源,从而使合法用户无法得到服务的响应,是目前最强大、最难防御的攻击之一。
ddos攻击最大的难点在于攻击者发起的攻击的成本远低于防御的成本。比如黑客可以轻易的控制大量肉鸡发起10G,100G的攻击。而要防御这样的攻击10G,100G带宽的成本却是100W,1000W….
分类:
- 网络层攻击:SYN Flood、ACK Flood、ICMP Flood、UDP Flood、NTP Flood 、SSDP Flood、DNS Flood等等
- 应用层攻击:
效果:
- 占满网络带宽;
- 提交大量请求,使服务器超负荷运行,响应缓慢;
- 阻断某一用户访问服务器;
- 阻断某服务与特定系统或个人的通讯。
防护:
1.针对第一种,需要在运营商网络里进行攻击流量识别,清洗;
2.第二种需要对流量模型学习建模,防护引擎要有多种方式检测攻击流量并自动生成过滤特征。当然最重要是修复应用的脆弱设计;抗DDOS设备主要的技术难点在于如何准确判断流量是攻击流量还是正常流量。流量清洗回注是没多少技术含量的。当然光靠设备自动化防护是远远不够的,需要有应急团队的专业服务。那些直接说不能防护的人不知是神马心态.
防御手段:
防范 DDOS 的第一步,就是你要有一个备份网站,或者最低限度有一个临时主页。生产服务器万一下线了,可以立刻切换到备份网站,不至于毫无办法。
备份网站不一定是全功能的,如果能做到全静态浏览,就能满足需求。最低限度应该可以显示公告,告诉用户,网站出了问题,正在全力抢修。我的个人网站下线的时候,我就做了一个临时主页,很简单的几行 HTML 代码。
总体来说,从下面几个方面考虑:
- 硬件
- 单个主机
- 整个服务器系统
硬件:
1. 增加带宽
带宽直接决定了承受攻击的能力,增加带宽硬防护是理论最优解,只要带宽大于攻击流量就不怕了,但成本非常高。
2、提升硬件配置
在有网络带宽保证的前提下,尽量提升CPU、内存、硬盘、网卡、路由器、交换机等硬件设施的配置,选用知名度高、 口碑好的产品。
Web 服务器的前面可以架设硬件防火墙,专门过滤请求。这种效果最好,但是价格也最贵。
3、 硬件防火墙
将服务器放到具有DDoS硬件防火墙的机房。专业级防火墙通常具有对异常流量的清洗过滤功能,可对抗SYN/ACK攻击、TCP全连接攻击、刷脚本攻击等等流量型DDoS攻击
单个主机:
1、及时修复系统漏洞,升级安全补丁。
2、关闭不必要的服务和端口,减少不必要的系统加载项及自启动项,尽可能减少服务器中执行较少的进程,更改工作模式
3、iptables
4、严格控制账户权限,禁止root登录,密码登录,修改常用服务的默认端口
整个服务器系统:
1. 负载均衡
使用负载均衡将请求被均衡分配到各个服务器上,减少单个服务器的负担。
2、CDN
3. 分布式集群防御
分布式集群防御的特点是在每个节点服务器配置多个IP地址,并且每个节点能承受不低于10G的DDoS攻击,如一个节点受攻击无法提供服务,系统将会根据优先级设置自动切换另一个节点,并将攻击者的数据包全部返回发送点,使攻击源成为瘫痪状态,从更为深度的安全防护角度去影响企业的安全执行决策。
4、本机防火墙
操作系统都带有软件防火墙,Linux 服务器一般使用 iptables。比如,拦截 IP 地址1.2.3.4的请求,可以执行下面的命令。
$ iptables -A INPUT -s 1.2.3.4 -j DROP
iptables 比较复杂,我也不太会用。它对服务器性能有一定影响,也防不住大型攻击。
5、Web 服务器
Web 服务器也可以过滤请求。拦截 IP 地址1.2.3.4,nginx 的写法如下。
location / { deny 1.2.3.4; } Apache 的写法是在.htaccess文件里面,加上下面一段。
<RequireAll> Require all granted Require not ip 1.2.3.4 </RequireAll> 如果想要更精确的控制(比如自动识别并拦截那些频繁请求的 IP 地址),就要用到 WAF。这里就不详细介绍了,nginx 这方面的设置可以参考这里和这里。
Web 服务器的拦截非常消耗性能,尤其是 Apache。稍微大一点的攻击,这种方法就没用了
当然我也出手攻击过一些非法的网站,也被攻击过具体的可以联系我,如果遇到相关的问题。