DNS 的 5 种攻击形式和应对举措(dns攻击防御手段)
nanshan 2024-10-25 13:07 9 浏览 0 评论
众所周知,DNS 是一种非常基本的协议 / 服务,它让互联网用户和网络设备能发现使用人类可读的域名,而非纯数字 IP 地址的网站。AWS 的这篇文章详细解释了 DNS 的工作原理。如果 DNS 服务受到攻击或无法正常工作,那么你的服务或网站很有可能无法访问。
在本篇博文中,我会详细解释 DNS 服务面临的主要威胁,以及相应的缓解策略。
文中使用的真实攻击数据和相关统计均来自 Imperva 云 WAF 保护服务。
DDoS
分布式拒绝服务( DDoS )会在攻击期间导致受害者服务无法访问。根据 Techradar 的这篇文章,DDoS 的受害者甚至包括前沿的云服务提供商,比如亚马逊AWS。
对DNS 基础设施上的DDoS 攻击分为以下几种:
1. Straightforward/Naive DDoS
黑客使用僵尸网络创建不同端点,在同一时间段向受害者域名服务器直接发送海量 DNS 请求。
这种攻击会在短时间内产生大量流量,利用无数请求堵塞 DNS 服务器,让其无法响应,从而达到拒绝正常用户访问的目的。
缓解措施
通过使用基于硬件的网络设备或云服务解决方案可以过滤或限制网络流量。在一场 naive DDoS 攻击中,攻击者不会欺骗源 IP,用于攻击的源数量也有限制。因此,限制策略可以是拦截攻击者使用的 IP。
2. IP 欺骗
DNS 默认依赖 UDP 协议,而由于 UDP 本身的特性导致,只需伪造数据包的 IP 地址,便可以轻易将源 IP 换成随机 IP。在这种情况下,拦截 IP 地址变成了无用功,我们需要求助于别的方案。
缓解措施
使用 DNS 缓存服务器吸收大部分的 DNS 流量。
DDoS 攻击者通常会使用不存在的域名以确保解析器会转发请求,已存在域名有可能会被保存在缓存中,这样的请求是不会被转发的。针对这种情况,我们建议在 DNS 缓存服务器中使用以下措施来限制来自不存在域名的 DNS 请求转发率。
如果传入请求的总数量超过阈值,则要求客户端从 UDP 切换到 TCP。切换后,由于 TCP 需要三次握手,则可以避免源 IP 欺骗。
下图显示了受到 Imperva 保护的权威 DNS 服务器在遭到一次 DDoS 攻击时的表现:
这次攻击持续了 24 小时,Imperva 的 DNS 代理通过过滤和限制传递到服务器的请求速率来缓解 DDoS 攻击。因此,服务器收到的请求速率没有超过配置阈值,超过这个限制的恶意流量会被拦截。
3. 反射型 DDoS
攻击者不仅会欺骗源 IP,连目的地 IP 也不会放过。来自正常 DNS 解析器的 DNS 回答会被发回给受害者(被欺骗的 IP),而不是原攻击者的 IP,从而导致受害者受到 DDoS 攻击。
这类攻击模式会放大 DDoS 的影响:黑客精心设计了能触发大量 DNS 回答的 DNS 请求,从而达到扩大伤害的效果。举例来说,“ANY”类请求或具有多个 DNS 记录的请求将触发大量 DNS 回答。
在这种情况下,合法的 DNS 服务器反而会协助攻击。
缓解措施
限制统一 IP 地址的 DNS 请求 / 回答速率。
因为 DNS 解析器会使用缓存,所以理论上来讲,请求转发率会十分低,一定的频率限制应当会有效。
下图显示了一位受到 Imperva 保护的客户基础架构,在遭到严重 DDoS 综合攻击后的表现:
在这次 DDoS 攻击中,黑客使用了两种不同方式:
- 反射并放大 DNS 的 DDoS 攻击:70 Gbps 的 DNS 应答数据包,图中以黄色表示
- UDP 欺骗 DDoS 攻击:30 Gbps 的 UDP 数据包,图中以蓝色表示
二者相结合,黑客成功实施了 100 Gbps 的 DDoS 攻击。
在这次攻击中,DNS 应答数据包平均是 1400 bytes,使得攻击的放大倍数为 20。通过利用 3.5 Gbps 带宽的 DNS 请求,黑客设法将 DNS 反射型 DDoS 攻击放大到 70 Gbps。反射型攻击方法非常普遍且强大。
4. 缓存投毒
与目标在于阻塞 DNS 服务器的 DDoS 攻击不同,缓存投毒的目标是将访客从真正的网站重定向到恶意网站。
攻击阶段
- 黑客发送 DNS 请求到 DNS 解析器,解析器会转发请求到 Root/TLD/ 权威 DNS 服务器并等待回答。
- 黑客随后发送大量包含恶意 IP 地址的投毒响应到 DNS 服务器。黑客需要抢在权威 DNS 回答之前用伪造响应命中正确的端口与查询 ID,这一步可以通过蛮力来提高成功机会。
- 任何正常用户请求该 DNS 解析器都会得到缓存中被投毒的响应,然后被重定向到恶意网站。
缓解措施
- 使用 DNSSEC。DNSSEC 通过提供签名过的 DNS 回答来阻止这类攻击。使用 DNSSEC 的 DNS 解析器会验证其从 Root/Top Level Domain (TLD)/ 权威 DNS 服务器得到的签名响应。
- 下列措施可以让黑客更难成功: 对每条请求使用随机查询 ID 对每条请求使用随机源端口 丢弃重复的转发请求 确保响应中所有区域均与请求相符合:query ID、name、class 和 type
详细清单请查看这篇文章。
结论
为确保网站的基础功能可以正常运转,网站管理者应确保DNS 服务能正常工作,并避免受到上述攻击。
原文地址:
https://www.imperva.com/blog/why-should-you-worry-about-dns-attacks/
关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~
相关推荐
- ssh终端xshell日志查看命令(xshell怎么看日志)
-
现在我们云服务器运维较多用的是SSH工具,其中常用的包括PUTTY、XSHELL等,其实大同小异界面UI稍微不同,但是都可以进入远程连接。这里有朋友提到如何查看服务器的日志文件,这个其实和是否使用XS...
- 使用 Fail Ban 日志分析 SSH 攻击行为
-
通过分析`fail2ban`日志可以识别和应对SSH暴力破解等攻击行为。以下是详细的操作流程和关键分析方法:---###**一、Fail2ban日志位置**Fail2ban的日志路径因系统配置...
- 如何高效读取Linux日志文件?这些命令要熟记于心!
-
在Linux系统中,日志文件通常存储在/var/log目录下。比如,/var/log/syslog(或/var/log/messages,视发行版而定)记录系统整体事件,/var/log/a...
- Windows服务器远程登录日志查询方法,linux查看登录日志方法
-
概述本文介绍Windows、Linux服务器查询系统的远程登录日志方法。根据服务器所使用的操作系统不同,有以下两种查询方法。Linux操作系统的登录日志查询通过远程连接登录Linux服务器,使用roo...
- iptables防火墙如何记录日志(防火墙日志查看)
-
例如:记录所有ssh服务的登录的日志首先,我们需要了解如何将所有的iptables的INPUT链数据包记录到/var/log/messages中。如果你已经有一些iptables规则了,那么将记录日志...
- 如何安全管理SSH密钥以防止服务器被入侵
-
SSH密钥安全管理实施指南(2025年更新版)一、密钥生成与存储规范高强度密钥生成bashCopyCodessh-keygen-ted25519-a100#生成ED25519算法密钥(比...
- 在CentOS上安装nginx服务器(centos搭建代理服务器)
-
一、环境描述1.虚拟机配置CPU:单核内存:2GB硬盘:120GBIP:10.24.17.1082.操作系统版本:CentOS6.6x86_64安装方式:Minimal3.虚拟化环境VM...
- CentOS7安全加固的一份整理规划建议
-
◆更新系统:及时更新CentOS7操作系统版本和安全补丁,确保系统以最新状态运行。◆关闭不必要的服务:在运行系统时,应关闭不需要的服务和端口,以减少系统暴露的攻击面。◆安装防火墙:使用iptables...
- 第四十七天-二叉树,centOS安装tomcat,Maven,vsftpd
-
学习笔记:1.Maven是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven...
- Linux远程桌面连接使用教程 Widows终端远程连接Linux服务器
-
一、前言为什么不是远程连接Linux服务器?因为我不会,远程连接window我就用电脑自带的“远程桌面连接”。以下所述都是在CentOS操作系统下的。服务器刚换成Linux的时候很迷茫,感觉无从下手...
- CentOS 安全加固操作,保护你的操作系统
-
系统加固是保障系统安全的重要手段,对于维护企业数据安全、用户隐私以及系统稳定运行具有重要意义。加固后的系统更加健壮和稳定,能够有效减少因安全问题导致的系统故障和停机时间,提高系统的可用性和可靠性。通过...
- Dockerfile部署Java项目(docker如何部署java项目)
-
1、概述本文主要会简单介绍什么是Docker,什么是Dockerfile,如何安装Docker,Dockerfile如何编写,如何通过Dockerfile安装jar包并外置yaml文件以及如何通过do...
- CentOS7云主机部署Fail2ban阻断SSH暴力破解
-
关于Fail2banFail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽)例如:当有人在试探你的HTTP、SSH、SMTP、FTP密...
- 在CentOS7上用源码编译安装PostgreSQL
-
1、新建postgres用户#useraddpostgres&&passwdpostgres2、安装依赖包#yum-yinstallmakegccgcc-c++readline...
- pure-ftpd 使用(ftp prompt命令)
-
pure-ftpd是一个免费的ftp软件,其他介绍就不多说了。我们直接开始主题安装centosyuminstallepel-releaseyuminstallpure-ftpd配置备份原配置...
你 发表评论:
欢迎- 一周热门
-
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WindowsServer2022|配置NTP服务器的命令
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)