域名服务作为互联网的基础设施,它的重要性不言而喻。目前全球的十三个根域名服务器和成千上万的授权域名服务器承担着超过万亿次的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打垮么?的更多相关文章

  1. 根域名服务器 根服务器一般指根域名服务器 (DNS)

    Why There Are Only 13 DNS Root Name Servers -------------------------------------------------------- ...

  2. rest-assured的根路径(root path)和URL编码(URL Encoding)

    一.根路径(Root path) 为了避免在body方法中使用重复的路径来断言,我们可以指定一个根路径(root path),比如: 我们以前的写法是: when(). get("/some ...

  3. 根运动 (Root Motion) – 工作原理

    http://blog.csdn.net/myarrow/article/details/45505085 1. 基本概念 在Unity3D动画中,模型的位置.角度经常会发生变化,我们需要决定是否将模 ...

  4. 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 ...

  5. 使用多个DNS供应商以缓解DDoS攻击

        随着不安全物联网(IoT)设备的激增,针对域名系统(DNS)供应商的分布式拒绝服务(DDoS)攻击在数量和规模上正在不断增加.这些攻击随之影响依赖于这些供应商进行域名解析的网站.虽然DNS供应 ...

  6. Vue父子组件传值之——访问根组件$root、$parent、$children和$refs

    Vue组件传值除了prop和$emit,我们还可以直接获取组件对象: 根组件: $root // 单一对象 表示当前组件树的根 Vue 实例,即new Vue({...根组件内容}).如果当前实例没有 ...

  7. 《DNS攻击防范科普系列2》 -DNS服务器怎么防DDoS攻击

    在上个系列<你的DNS服务真的安全么?>里我们介绍了DNS服务器常见的攻击场景,看完后,你是否对ddos攻击忧心重重?本节我们来告诉你,怎么破局!! 首先回顾一下DDoS攻击的原理.DDo ...

  8. 【Linux】Could not resolve: www.test.com (Could not contact DNS servers)

    在请求微信小程序服务时候报错了 从这个报错,可以很明显的发现是域名解析不了 1 故障排查:因为代码里调用的是curl,所以测试一下curl是否能够正常解析dns 果然不行, 2 解决办法: vi /e ...

  9. 如何证明一个数的数根(digital root)就是它对9的余数?

    数根就是不断地求这个数的各位数之和,直到求到个位数为止.所以数根一定和该数模9同余,但是数根又是大于零小于10的,所以数根模9的余数就是它本身,也就是说该数模9之后余数就是数根. 证明: 假设有一个n ...

随机推荐

  1. 一 分析easyswoole源码(启动服务)

    分析easyswoole源码 1以启动为例 //检查是否已经安装 installCheck();//检查锁文件是否存在,不存在结束 //启动服务 serverStart showLogo();//显示 ...

  2. android studio 关闭SVN关联

    <?xml version="1.0" encoding="UTF-8"?> <project version="4"&g ...

  3. 充分利用CPU多核的处理能力 innodb_read_io_threads和innodb_write_io_threads

    https://book.2cto.com/201402/40300.html 在MySQL5.1.X版本中,innodb_file_io_threads参数默认是4,该参数在Linux系统上是不可更 ...

  4. POJ 1328 Radar Installation 贪心 A

    POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...

  5. Django积木块二——邮箱

    邮箱 django中自带的功能,因为登录注册都需要邮箱,因此新增了一个小的app--utils用来存放 # email_send.py import random from django.core.m ...

  6. ubuntu下搭建一个数据化处理的开发环境

    1.搭建matplotlib环境 构建matplotlib运行环境,需要满足相关软件环境. numpy库提供大数据集的数据的数据结构和数学方法.诸如元组.列表或字典等python的默认数据结构同样可以 ...

  7. FPGA的发展史及FPGA 的基础架构

    通过了解早期FPGA的发展,理解FPGA究竟是干什么的,FPGA到底在电子设计领域起到了什么样的作用,下面是一张早期的设计过程 早期的设计流程过程中,只有当硬件完成了才能够得到功能的验证,随着集成电路 ...

  8. 查看服务器tcp连接及服务器并发

    一.查看哪些IP连接本机netstat -an二.查看TCP连接数1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ...

  9. Swift5 语言指南(八) 控制流

    Swift提供了各种控制流程语句.这些包括while多次执行任务的循环; if,guard和switch基于特定条件执行不同代码分支的语句; 和语句,如break和continue对执行流在你的代码转 ...

  10. HttpRunnerManager接口测试平台部署在服务器上(Centos + python3.6 + Mysql5.7 + uwsgi + nginx)

    整个思路:HttpRunnerManager + python3.6 + Mysql5.7 + uwsgi + nginx 安装依赖环境,将源代码传到服务器,修改settings,增加uwsgi配置, ...