GMTC北京站两周后开幕,58个议题全部上线,点击查看 了解详情
写点什么

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

2017 年 1 月 15 日

随着不安全物联网(IoT)设备的激增,针对域名系统(DNS)供应商的分布式拒绝服务(DDoS)攻击在数量和规模上正在不断增加。这些攻击随之影响依赖于这些供应商进行域名解析的网站。虽然 DNS 供应商采取了各种方法来保护自己免受此类攻击,但网站保护自身的方法之一是使用多个 DNS 供应商。

2016 年发生了史上最大规模之一的 DDoS 攻击,这一攻击是针对 DNS 供应商 Dyn 的。此次攻击前后有三波,它通过已感染Mirai 恶意软件的物联网设备组成的僵尸网络进行攻击。许多公司都受到此次攻击的影响,比如Amazon、Paypal、Reddit 和Github。该攻击导致Dyn 无法响应由其域名服务器解析的域名的有效DNS 查询,以至于终端用户无法访问相关域名。

据Dyn 技术副总裁 Phil Stanhope 所说,此次 Dyn 攻击事件还包括一个基于 TCP SYN cookie 的攻击,该攻击利用了 Linux 内核的一个错误。SYN cookie 是一种用于缓解 SYN flood 攻击的方法,SYN flood 攻击通过连续发送 TCP SYN 请求来耗尽目标系统的资源。然而,SYN cookie 也有自己的问题,在 Linux 3.x 版本中,一个系统级别的锁用于生成 SYN cookie。由于这个级别的锁定,无论内核实际数量多少,系统均如单核系统一样运行,从而降低了其实际处理能力。Linux 4.x 版本通过使用针对各个 CPU 内核的局部锁来解决这个问题。

DNS 供应商采用了各种方法来防止攻击,比如清理(scrubbing)。清理是通过第三方来过滤所有流量。第三方以提供保护为服务,清除恶意流量,使合法流量通过并到达最终目的地。许多厂商提供这样的服务,比如Akamai、AT&T、Verizon 和Arbor Networks。

对某个网站或域名的任何HTTP(或其他协议)请求,都需进行DNS 查询,以将域名解析为一个或多个IP 地址。该请求穿行于域名中各个级别的授权服务器的多个解析器。例如,对www.infoq.com 的请求,首先是根服务器,然后再查询.com 的顶级域名(TLD)服务器,最后查询infoq.com 的授权服务器。整个过程中的解析器可能会缓存结果,以便更快地进行后续响应。缓存可以由DNS 响应中的生存时间(TTL)值控制。针对infoq.com 授权服务器的DDoS 攻击可能使得这些授权服务器无法响应有效查询,并且最终导致整个网站无法访问。

一般来说, DNS 服务器冗余可以防止此类中断。也就是说任何商业 DNS 供应商都将为一个既定域名提供多个 DNS 服务器。dig 或 drill 命令可用于查看域名服务器记录(下面以 infoq.com 为例)。

复制代码
# dig infoq.com ns
; <<>> DiG 9.10.3-P4-Ubuntu <<>> infoq.com ns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47143
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;infoq.com. IN NS
;; ANSWER SECTION:
infoq.com. 259200 IN NS ns1.contegix.com.
infoq.com. 259200 IN NS ns2.contegix.com.
;; Query time: 367 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Jan 03 23:47:46 IST 2017
;; MSG SIZE rcvd: 83

但是,如果某个供应商遭到 DDoS 攻击,那么可能其所有的域名服务器都会受到影响。因此使用多个 DNS 供应商有助于解决这一问题。

要使用多个 DNS 供应商,必须允许编辑各个 DNS 供应商的域名服务器记录,以便所有记录都可以作为响应的一部分进行发送。另外,每个供应商都将拥有多个域名服务器,并且各供应商的所有域名服务器的顺序是打乱的。这样对一个供应商的失败请求会引起对另一个供应商的请求,而不是一直在尝试第一个供应商的所有其他域名服务器,因为这些服务器可能也是失效的。

确保 DNS 可靠性的其他方法还有 Anycast,在这个方法中,多个域名服务器具有相同 IP 地址。进行 DNS 查询时,数据包被传送到最近的域名服务器。在失效的情况下,数据包由底层路由协议自动传送到最近的有效域名服务器。

设置正确的TTL 非常重要,这样即使记录由服务于响应的中间服务器进行缓存,也可以实现发生故障时切换到辅助服务器。正如Stanhope 在 Velocity 的演讲中所说,未来 NetOps、DevOps、SecOps 和 SRE 团队之间需要更多的协作来缓解这种攻击。

查看英文原文 Multiple DNS Providers to Mitigate DDoS Attacks


感谢刘志勇对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017 年 1 月 15 日 18:001578
用户头像

发布了 22 篇内容, 共 39393 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

硬核干货丨借助多容器Pod,轻松扩展K8S中的应用

RancherLabs

马特量化交易机器人系统开发网格策略

薇電13242772558

第五届广州4A干货大会成功举办;《王者荣耀》推出首部官方动画番剧并将与奢侈品品牌Burberry进项跨界联名

󠀛Ferry

七日更 3月日更

“七大属性加持,三个全新升级组件”这个高性能利器有点厉害

华为云开发者社区

数据库 数据湖 Clickhouse 华为云 集群

夺命剪刀脚(死锁)

Arvin

方法论 死锁

智慧公安政府系统集成软件开发,智慧警务平台搭建方案

WX13823153201

如果写文字只是自我表达「Day 19」

道伟

28天写作

Python yaml 使用的包

HoneyMoose

PostgreSQL高校数据库课程改革系列活动

PostgreSQLChina

数据库 postgresql 开源 软件 开源社区

使用 Flink 前需要知道的 10 个『陷阱』

Apache Flink

flink

四、MongoDB查询(2)

Kylin

读书笔记 分布式数据库mongodb 3月日更

Python 通过命令行安装包的时候 pip 提示错误

HoneyMoose

法大大完成D轮9亿元融资,腾讯领投

人称T客

醒一醒,讲到 ZooKeeper 的选举机制了

HelloGitHub

Java zookeeper ZooKeeper原理

Redis工具收费后新的开源已出现

happlyfox

学习笔记 工具软件 28天写作 3月日更

历史技术栈体系即将崩溃,我们如何应对?

VoltDB

数据库 5G 边缘计算 VoltDB

Elasticsearch Reindex & Index Alias

escray

elastic 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

(28DW-S8-Day19) 以太坊是什么

mtfelix

28天写作

问题剖析之消息队列的架构设计

Kylin

读书笔记 消息队列架构 3月日更

如何通过XMind 实践OKR 工作法

博文视点Broadview

习惯

lenka

3月日更

第二届开发者社区【金码奖】,揭晓了!

京东科技开发者

开发者 开发者社区

Everything is Serverless,从开源框架对比说起

华为云开发者社区

云计算 Serverless 云原生 无服务器 开源框架

LeetCode题解:64. 最小路径和,动态规划,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

软考备考视频的目录

IT蜗壳-Tango

3月日更 软考

Python 注释

HoneyMoose

正则表达式.06 - 断言

insight

正则表达式 3月日更

数据分析利器之Excel功能篇

小飞象@木木自由

MySQL原理

Sakura

28天写作 28天挑战 3月日更

你的决定我做主——锚定效应

Justin

心理学 28天写作 游戏设计

深入分析mysql为什么不推荐使用uuid或者雪花id作为主键

xcbeyond

MySQL MySQL优化 3月日更

Service Mesh的演化与未来

Service Mesh的演化与未来

使用多个DNS供应商以缓解DDoS攻击-InfoQ