根域名服务器(root DNS Servers)会被DDoS打垮么?
域名服务作为互联网的基础设施,它的重要性不言而喻。目前全球的十三个根域名服务器和成千上万的授权域名服务器承担着超过万亿次的DNS查询,默默为全世界的网民做域名解析服务。
这样重要的基础设施,必然是全世界黑客的目标。
2002年10月21日,全球的十三台根域名服务遭受了持续将近一个小时的攻击,这些攻击形式多样,主要集中为:ICMP攻击、TCP SYN攻击、fragmented TCP攻击和UDP攻击。这次攻击导致了一些跟域名服务器瘫痪。
之后全世界的科学家们痛则思痛,对当时的根域名服务做了大量的防护工作。
2007年2月6日,黑客们又对根域名服务器发起了几次疯狂的攻击,此时的ROOT DNS SERVERS已经很健壮了,对正常服务没有造成什么影响。
根域名服务器采取了一些什么样的措施,使得DDoS攻击不会造成根域名服务器的全线瘫痪呢?
原因一:积极的反应
今天在公司内网看到公司的清洗软件前段时间抗住了对一个网页高达6Gbps(每秒6Gbit)的攻击,最后攻击者看到没有效果,只能灰溜溜夹尾巴收工,而我们的这个页面呢?用户访问感觉不到任何异常(顺便赞一下我们优秀的工程师同学们)。
俗话说:“道高一尺,魔高一丈”,如果黑客真的优秀,就不会做黑客了。优秀的大型网站不缺少优秀的工程师,所以也不缺少优秀的防攻击预案。当攻击来的时候,检测软件会检测到网络异常,并采取相应的清洗策略,把异常的攻击流量阻挡在正常服务器之外。这样普通的用户可能只会感觉到一小段时间的访问缓慢,当清洗开始后,就跟正常访问无异了。
清洗的办法,常用有:1)通过某种统计标准发现异常流量,限制某个IP的查询次数,或者直接拒绝为该IP服务;2)攻击流量会有一定的规律,比如包大小是特定的(比如768字节),则将该大小的包blocked(当然要确保该包大小跟正常请求的包大小不一样才可以用这种策略)。
原因二:十三台根域名服务器的多样性
十三台根域名服务器都可以解析根域名(.com, .net等),而且这些根域名服务器由不同的组织管理。它们唯一相同的是解析根域名的功能,其它的,比如说硬件环境;使用的域名服务器软件;安全策略等等都不一样,因为攻击都是有针对性的攻击,所以这样又无形中增加了攻击者的攻击难度。
原因三:Anycast
Anycast可以使一组提供DNS解析服务的主机通过一个对外的IP地址标识,这些主机可以位于不同的地址。这样当对某一个域名服务器的流量增加的时候,通过Anycast我们可以将攻击流量分发到各主机上。现在的根域名服务器都采用了Anycast技术,比如f-root,它后面就有四五十台主机在服务。
原因四:fat pipes
根域名服务器都位于全球的骨干网上,而不是在边缘网络中(你们家的宽带位于边缘网络中,你们小区的用户都在双十一购物狂欢节的时候一起抢东西,就会觉得巨慢无比:-) ),所以想通过打大流量堵塞根域名服务器的网络的黑客,你还是早点洗洗睡吧。
原因五:gTLD(generic Top-Level DNS Server) 域名服务器 和 缓存
根域名服务器只服务根域名,根域名服务器下面还有gTLD服务器,比如为所有.com后缀做域名解析的服务器。而且Local DNS会有缓存,在TTL期内不会对相同域名做重复请求。所以用发起DNS请求的方式攻击根域名服务器的话,基本上是不可能的,因为层层的缓存足以使到达根域名服务器的流量微乎其微。
参考资料:
1,http://en.wikipedia.org/wiki/Distributed_denial_of_service_attacks_on_root_nameservers
2,http://en.wikipedia.org/wiki/Anycast
根域名服务器(root DNS Servers)会被DDoS打垮么?的更多相关文章
- 根域名服务器 根服务器一般指根域名服务器 (DNS)
Why There Are Only 13 DNS Root Name Servers -------------------------------------------------------- ...
- rest-assured的根路径(root path)和URL编码(URL Encoding)
一.根路径(Root path) 为了避免在body方法中使用重复的路径来断言,我们可以指定一个根路径(root path),比如: 我们以前的写法是: when(). get("/some ...
- 根运动 (Root Motion) – 工作原理
http://blog.csdn.net/myarrow/article/details/45505085 1. 基本概念 在Unity3D动画中,模型的位置.角度经常会发生变化,我们需要决定是否将模 ...
- Best free and public DNS servers of 2019
1. OpenDNSPrimary, secondary DNS servers: 208.67.222.222 and 208.67.220.220 2. CloudflarePrimary, se ...
- 使用多个DNS供应商以缓解DDoS攻击
随着不安全物联网(IoT)设备的激增,针对域名系统(DNS)供应商的分布式拒绝服务(DDoS)攻击在数量和规模上正在不断增加.这些攻击随之影响依赖于这些供应商进行域名解析的网站.虽然DNS供应 ...
- Vue父子组件传值之——访问根组件$root、$parent、$children和$refs
Vue组件传值除了prop和$emit,我们还可以直接获取组件对象: 根组件: $root // 单一对象 表示当前组件树的根 Vue 实例,即new Vue({...根组件内容}).如果当前实例没有 ...
- 《DNS攻击防范科普系列2》 -DNS服务器怎么防DDoS攻击
在上个系列<你的DNS服务真的安全么?>里我们介绍了DNS服务器常见的攻击场景,看完后,你是否对ddos攻击忧心重重?本节我们来告诉你,怎么破局!! 首先回顾一下DDoS攻击的原理.DDo ...
- 【Linux】Could not resolve: www.test.com (Could not contact DNS servers)
在请求微信小程序服务时候报错了 从这个报错,可以很明显的发现是域名解析不了 1 故障排查:因为代码里调用的是curl,所以测试一下curl是否能够正常解析dns 果然不行, 2 解决办法: vi /e ...
- 如何证明一个数的数根(digital root)就是它对9的余数?
数根就是不断地求这个数的各位数之和,直到求到个位数为止.所以数根一定和该数模9同余,但是数根又是大于零小于10的,所以数根模9的余数就是它本身,也就是说该数模9之后余数就是数根. 证明: 假设有一个n ...
随机推荐
- etcd-v2第二集
参考文章:https://github.com/coreos/etcd/blob/master/Documentation/v2/api.mdhttp://www.cnblogs.com/zhengr ...
- ajax的另一种成功和失败回调函数
第一种: function engline(){ var oldmsg = $('#lineso').val() if(oldmsg == null || oldmsg == '' || oldmsg ...
- HTML中调用JavaScript的几种情况和规范写法
JavaScript执行在html中,引用有几种方式? 我知道的方法有3种: 第一种:外部引用远程JavaScript文件.如<script type="text/javascript ...
- 深入理解JVM(一)编译openJDK
此文总结的很不错:https://www.cnblogs.com/ACFLOOD/p/5528035.html 准备openJDK源码和环境 1.在linux和macOS上编译openJDK更加友好, ...
- Java并发编程:volatile关键字
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...
- 微信js sdk的使用初步理解
第一步引入js文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js 备注:支持使用 AMD/C ...
- 过滤器和拦截器filter和Interceptor的区别
1.创建一个Filter过滤器只需两个步骤 创建Filter处理类 web.xml文件中配置Filter 2.Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的 ...
- magic cube
搜索题, 每个状态能扩展出12种状态,最多进行5次旋转12^5 要用到iddfs,或者我看到网上其他人用的ida* 我也是参考了别人的代码,而且这个题vj上有点问题,我看数据看了半天,愣是没看明白第二 ...
- Android Service用法知识点的讲解
Android Service 学习Service相关知识点: android service 的基础知识,生命周期,service分类,运行地点(本地服务,远程服务),运行类型(前台服务,后台服务) ...
- 用redux-thunk异步获取数据
概述 最近学习redux,打算用redux-thunk给todo添加异步获取数据组件.记录下来,供以后开发时参考,相信对其他人也有用. 注意: 在todo下方,我异步获取我的react博客的标题,点击 ...