60只蚊子写作文:DNS攻击是什么,怎么防止dns攻击

创建以来,DNS一直被认为是现存最重要的互联网服务之一。它是让您的计算机在您眼前展示内容的关键组件。电子邮件服务,聊天服务甚至社交网络依靠DNS每周7天,每天24小时工作,将IP地址解析为主机名。

是的,DNS非常重要。同时,当任何组织对其基础架构进行安全加固时,它是最容易被忽视的部分之一。这是基于DNS的攻击发生时 – 因为许多组织没有意识到DNS是一个关键的攻击媒介。它经常被发现没有适当的保护,过时或完全脆弱。

今天我们将讨论可能影响贵公司的最流行的DNS攻击类型。

DNS攻击的类型

让我们回顾一下不同类型的攻击以及它们如何影响您的在线状态。

域名劫持

此类攻击可能涉及DNS服务器和域名注册商的更改,这些更改可能会将您的流量从原始服务器转移到新目标。

域名劫持通常是由许多与利用域名注册商系统中的漏洞相关的因素引起的,但也可以在攻击者控制您的DNS记录时在DNS级别实现。

一旦坏人劫持了您的域名,它可能会用于发起恶意活动,例如设置PayPal,Visa或银行机构等虚假页面的支付系统。攻击者将创建一个相同的真实网站副本,用于记录关键的个人信息,如电子邮件地址,用户名和密码。

幸运的是,你可以避免这种情况。只需看看我们的“ 如何防止域名劫持”指南。

DNS泛洪攻击

这是最基本的DNS攻击类型之一。在此分布式拒绝服务(DDoS)中,攻击者将访问您的DNS服务器。

这种DNS泛洪的主要目标是简单地使服务器过载,使其无法继续提供DNS请求,因为资源记录的解析受所有托管DNS区域的影响。

由于源通常来自单个IP,因此这种攻击很容易减轻。但是,当它成为涉及数百或数千个主机的DDoS(分布式拒绝服务)时,它会变得困难。

虽然很多请求会立即被检测为恶意请求,但会提出许多法律请求以混淆防御机制。这有时使缓解系统的工作变得更加困难。

分布式反射拒绝服务(DRDoS)

谈到DDoS,规则会发生变化。正如我们之前告诉过的,为了扩散攻击源,它将分布在大量主机上。任何DDoS的最终目标都是使用大量数据包或大量带宽消耗请求使网络过载,从而使网络容量过载或耗尽硬件资源。

DDoS和DRDoS有什么区别?

虽然简单的DDoS是通过使用洪水请求拒绝其在线服务来使任何目标不可用的行为,但DRDoS有点不同,并且通常更有效。

这种攻击通常涉及并由运行受损系统或服务的僵尸网络生成,最终将用于创建放大效应并攻击目标,如2016年KrebsOnSecurity被DRDoS攻击时所见。

缓存中毒

DNS缓存中毒(也称为DNS欺骗)是每天发生的最常见的DNS攻击之一。

这种攻击的诀窍很容易理解。通过利用系统漏洞,攻击者将尝试将恶意数据注入DNS解析器的缓存中。这是一种经常用于将受害者重定向到另一台远程服务器的攻击技术。

一旦缓存中毒攻击生效并正常工作,攻击者将收到他们自己的服务器中的所有合法流量,这些流量通常用于显示基于网络钓鱼的页面以窃取访问者的个人信息。

它是如何工作的?

大部分时间都是由脆弱的系统引起的; 打开包含恶意链接的垃圾邮件可能会使您遭受系统攻击,并最终修改您的DNS解析程序缓存,最终导致您进入恶意网站 – 以窃取您的个人信息或感染您的间谍软件,广告软件,病毒等。

DNS隧道

这是一种网络攻击,用于包括来自DNS响应和查询内的其他应用程序的编码数据。

虽然这种技术最初并不是为攻击主机而创建的,而是为了绕过网络控制,但现在它主要用于执行远程攻击。

为了执行DNS隧道,攻击者需要访问受感染的系统,以及访问内部DNS服务器,域名和DNS权威服务器。

它是如何工作的?

  • DNS客户端发送对给定域名的请求,包括在主机名中编码的数据。
  • DNS服务器回复并在两个部分之间建立双向连接。
  • 现在,攻击者可以将恶意数据与任何DNS应答一起转移,以获得远程访问权限。

DNS劫持

虽然DNS欺骗通常与DNS劫持混淆,因为两者都发生在本地系统级别,但它们是两种不同类型的DNS攻击。

大多数情况下,DNS欺骗或缓存中毒只涉及使用虚假网站覆盖您的本地DNS缓存值,因此您可能会被重定向到恶意网站。

另一方面,DNS劫持(也称为DNS重定向)通常涉及恶意软件感染,以劫持这一重要的系统服务。在这种情况下,本地计算机上托管的恶意软件可以更改TCP / IP配置,以便它们可以指向恶意DNS服务器,该服务器最终会将流量重定向到网络钓鱼网站。

这是执行DNS攻击的最简单方法之一,因为它不涉及复杂的技术。此外,脚本小子使用许多自动脚本来执行此类攻击。

随机子域攻击

这不是最常见的DNS攻击类型,但它可能会在某些网络上不时发生。随机子域攻击通常可以标记为DoS攻击,因为它们的性质与普通的DoS一致。

在这种情况下,攻击者会针对有效和现有的域名发送大量DNS查询。但是,查询不会以主域名为目标,而是以大量不存在的子域为目标。此攻击的目标是创建一个DoS,它将使托管主域名的权威DNS服务器饱和,最终导致所有DNS记录查找中断。

这是一种很难被发现的攻击,因为查询将来自受感染用户的僵尸网络,这些用户甚至不知道他们是从最终合法的计算机发送这些类型的查询。

NXDOMAIN攻击

NXDOMAIN攻击涉及DDoS攻击,因为它们通常涉及大量远程DNS客户端,这些客户端将使用针对不存在的域的查询来充斥您的DNS权威服务器。因此,这将导致DNS递归和NXDOMAIN回复。

如果您不进行常规DNS审核,远程攻击者可以将此视为对您的网络执行恶意攻击的有吸引力的机会。

此攻击的主要目的是使您的DNS服务器在非法请求中花费时间,软件和硬件资源,以防止并导致合法的服务失败,因为DNS服务器缓存将完全填满NXDOMAIN失败结果。

幻影域名攻击

幻影域攻击有点类似于随机子域攻击。

在这种攻击中,坏人会攻击您的DNS解析器并强制它耗尽资源来解析我们称之为“幻影”的域,因为这些域永远不会回复查询。

此攻击的目标是让DNS解析器服务器长时间等待答案,最终导致DNS性能问题失败或性能下降。

结论

如您所见,DNS服务对于保持公司网站和在线服务日常工作非常重要。

如果您不进行常规DNS审核,远程攻击者可以将此视为对您的网络执行恶意攻击的有吸引力的机会。因此,始终监控DNS服务器和流量至关重要。

DNS是互联网的核心和灵魂。它就像一台巨大的电话簿,您的计算机将其用于将主机名映射到IP地址,以便与公共服务(如网站)进行交互。

在SecurityTrails,我们大量分析DNS服务器,DNS区域,域和IP地址,正如我们在过去的博客文章中看到的那样,这些技术可以揭示许多关于任何信息安全调查的潜在有用信息。

今天,我们将向您展示如何使用一般最佳实践来防范常见的DNS攻击。请遵循以下提示,以保护您的公司免受基于域名系统的攻击和信息泄露。

黑客如何攻击DNS基础设施?

DNS服务是最受欢迎的Internet服务之一,同时,它是SysAdmins,DevOps和网络管理员经常忘记强化的服务。

他们经常关注其他流行的服务,如数据库系统,SSH服务或Web服务器。

缺乏适当安全加固的DNS服务器配置有时会导致严重的问题,因为攻击者可以利用系统执行传输DNS区域,修改DNS解析器以报告不同的IP地址以欺骗人员,重定向Web和电子邮件流量或启动危险的DNS放大攻击,以及其他类型的攻击。

当发生这种情况时,网站访问者无法检测到他们的流量被重定向到另一台服务器,或者他们的电子邮件被发送到与受攻击域中的原始MX服务器不同的服务器。这就是为什么始终保持DNS服务器安全的重要性。

如何防止DNS攻击?

让我们从八个关键技巧开始,以加强您的DNS服务:

1.审核您的DNS区域

首先要做的事情。除了DNS服务器主要配置之外,您必须查看的最重要的事情是您的DNS区域。

随着时间的推移,我们往往忘记测试域名或子域有时会运行过时的软件或易受攻击的无限制区域,或者A记录错误地显示内部/保留的内部网区域。

使用SecurityTrails开始探索所有DNS公共记录:查看所有区域,记录和IP。立即审核您的A,CNAME和MX记录。正如我们在过去的博客文章中看到的那样,这很简单,就像我们探索Google DNSMicrosoft子域一样

2.使您的DNS服务器保持最新状态

运行您自己的名称服务器使您能够配置,测试和尝试您可能无法在私有DNS服务器上执行的操作,例如您的托管服务提供商为您提供的服务,或者您在Cloudflare注册帐户时。

当您决定运行自己的DNS服务器时,可能使用BIND,PowerDNS,NSD或Microsoft DNS等软件,以及作为操作系统软件的其余部分,保持这些软件包最新以防止服务至关重要利用针对错误和漏洞的攻击。

所有流行的DNS服务器的最新版本包括针对已知漏洞的补丁,以及对DNSSec和RRL(响应速率限制)等安全技术的支持,这些技术在防止DNS反射攻击方面非常有用。

如何更新绑定服务器?

在基于RHEL的发行版上,您可以通过运行来更新Bind:

yum update bind -y

在基于Ubuntu和Debian的发行版上:

apt-get update bind9 bind9-host

重新启动服务以应用更改:

service named restart

要么

service bind9 restart

3.隐藏BIND版本

虽然有些人不能将此视为安全实践,但通过默默无闻的安全性只是在攻击者对服务器执行初始安全审计时隐藏信息的另一种方法。

在这种情况下,例如,如果您运行Bind,攻击者可以通过运行如下的远程查询轻松获取您的DNS服务器版本:

dig @ns1.server.com -c CH -t txt version.bind

如果服务器没有隐藏版本号,它应该返回如下内容:

;; ANSWER SECTION:
VERSION.BIND. 0 CH TXT "named 9.8.2..."

如何隐藏BIND版本?

编辑您的named.conf文件,通常位于/etc/named.conf

找到options { … };配置块。在此块的末尾,您将找到一个版本变量(如果没有,请添加一个):

version "BIND";

要隐藏绑定版本,只需将其设置为其他内容,例如:

version "Forbidden";

保存并关闭配置文件。

重新启动BIND以应用更改:

service named restart

要么

service bind9 restart

4.限制区域转移

DNS区域传输只是DNS区域的副本,虽然这种技术通常由从属名称服务器用于查询主DNS服务器,但有时攻击者可以尝试执行DNS区域传输,以便更好地了解您的网络拓扑结构。

可以采取哪些措施来防止这些伎俩是限制允许哪些DNS服务器执行区域传输,或者至少限制可以发出此类请求的允许IP地址。

这就是为什么限制区域传输是保护您宝贵的DNS区域信息的最佳方法之一。防止这种情况的最佳方法是使用ACL,我们将在下面看到。

如何将DNS区域传输限制为特定的IP地址?

首先,让我们再次编辑BIND主配置文件。打开后,让我们添加这个新的配置块:

acl trusted-servers {  
173.88.21.10; // ns1  
184.144.221.82; // ns2  
};

现在,在同一文件中搜索您的域DNS区域配置。

在我们域名的DNS区域配置块中(securitytrails.com对我们而言),我们将添加“allow-transfer”变量以及我们之前创建的可信服务器ACL:

zone securitytrails.com {  
type master; file "zones/securitytrails.com";  
allow-transfer { trusted-servers; };  
};  

重新启动BIND以应用更改:

service named restart

要么

service bind9 restart

测试DNS区域传输

在测试来自远程服务器的任何DNS响应时,Dig,host和nslookup工具是您最好的朋友。让我们使用host命令来测试DNS区域传输是被拒绝还是被允许。

host -T axfr securitytrails.com

如果区域转移被拒绝,您应该看到类似的内容:

Connection to 12.34.56.78#53(12.34.56.78) for axfr failed: connection refused.

5.禁用DNS递归以防止DNS中毒攻击

默认情况下,在所有主要Linux发行版的大多数Bind服务器上启用DNS递归,这可能导致严重的安全问题,如DNS中毒攻击等。

当您的服务器配置启用DNS递归时​​,DNS服务器允许对位于同一名称服务器上的实际上不是真正主区域的其他域进行递归查询,这只允许第三方主机根据需要查询名称服务器。

此设置还会增加您对DNS放大攻击的风险,这就是为什么如果您的计划不接收递归DNS查询,您应该始终禁用DNS服务器上的DNS递归。

DNS中毒攻击如何工作?

DNS缓存中毒也称为DNS缓存污染,是最常见的DNS攻击之一,它发生在中间发生欺骗攻击时,向DNS服务器提供的信息不是来自权威DNS源的DNS服务器。

这将允许攻击者发送更改的信息以响应特定的DNS查询。结果可能是从一个主机到另一个主机的流量重定向,例如,www.securitytrails.com将重定向到www.microsoft.com

测试您的服务器是否容易受到DNS递归攻击

让我们使用host命令查看您的DNS服务器是否启用了DNS递归,请参阅以下示例:

\[webtech@localhost ~\]$ host securitytrails.com. 8.8.8.8  
Using domain server:  
Name: 8.8.8.8  
Address: 8.8.8.8#53  
Aliases:  
securitytrails.com has address 151.139.243.5  
securitytrails.com mail is handled by 1 aspmx.l.google.com.  
securitytrails.com mail is handled by 5 alt1.aspmx.l.google.com.  
securitytrails.com mail is handled by 5 alt2.aspmx.l.google.com.  
securitytrails.com mail is handled by 10 aspmx2.googlemail.com.  
securitytrails.com mail is handled by 10 aspmx3.googlemail.com.

在这种情况下启用DNS递归,因为我们能够从远程DNS服务器获得答案。现在让我们再做一次,替换ns1.google.com为真正的名称服务器。

\[webtech@localhost ~\]$ host securitytrails.com. ns1.google.com  
Using domain server:  
Name: ns1.google.com  
Address: 216.239.32.10#53  
Aliases:  
Host securitytrails.com not found: 5(REFUSED)  
\[webtech@localhost ~\]$

如果看到“REFUSED”,则DNS服务器配置上的DNS递归被禁用。

如何禁用DNS递归?

要禁用递归查询,您必须通过在named.conf文件中的选项配置块中添加以下行来更改绑定配置:

allow-transfer {“none”;};  
allow-recursion {“none”;};  
recursion no;

这也将照顾我们之前看到的DNS传输。

重新启动BIND以应用更改并再次测试您的服务器:

service named restart

要么

service bind9 restart

保护DNS服务器免受缓存中毒的另一种方法是启用DNSSEC,这是传统DNS协议的可靠安全扩展,它使用安全签名,以确保我们收到的查询响应在真实源服务器上进行身份验证。

6.使用隔离的DNS服务器

使用专用服务器或云运行您自己的DNS服务器,您可以在其中托管其他Web服务,如应用程序服务器,HTTP服务器或数据库服务器。

这是小型公司的常见做法,这些公司经常将所有服务器服务存储在单个cPanel或Plesk盒中。

如果您决定将所有鸡蛋放在一个篮子中,则必须确保此框对于您正在运行的每个守护程序以及在操作系统内运行的应用程序具有非常可靠的服务器强化。

虽然您可以做的最好的事情是使用您自己的专用DNS服务器环境,但是它是基于云服务器还是专用服务器并不重要,只要它100%专用于DNS服务。

将此DNS服务器与其他应用程序服务器隔离将有助于减少受到Web应用程序攻击的可能性。

关闭所有不需要的服务器端口,停止不需要的操作系统服务,使用防火墙过滤流量,只允许SSH和DNS服务器本身等基本服务。这将有助于减轻DNS攻击的可能性。

7.使用DDOS缓解提供程序

虽然可以通过调整网络过滤器,HTTP服务和来自操作系统的内核响应来减轻中小型DOS和DDOS,但当一个大型DDOS出现在您之后时,只有少数数据中心能够帮助他们的客户实现真正的反-DDOS服务。

如果您运行自己的DNS服务器并且受到大量DDOS攻击,如果您的服务提供商不首先将空路由应用于您的IP地址,那么您在带宽使用或每秒数据包方面的使用可能会导致大量停机时间。

这就是为什么你能做的最好的事情就是聘请像CloudflareIncapsulaAkamai这样的反DDOS专业服务,以最佳方式缓解DDOS,并始终保持DNS服务器的安全和响应。

8.双因素身份验证

如果您没有运行自己的DNS服务器并决定使用第三方DNS托管服务(如Cloudflare DNS或DNSMadeEasy),则可以确保其服务器安全性很高。

但是,没有人(甚至不是他们的首席执行官)在获得帐户妥协方面是安全的,但说实话,概率非常低。

而且,即使在最糟糕的情况下,攻击者也可以访问您的用户名和密码,但如果您使用双因素身份验证,仍然可以控制您的帐户。

这是我们的最终建议,以避免DNS区域危害:在您的DNS服务器提供商处设置双因素身份验证保护,如果可能,请避免通过电话或短信验证,并使用Google身份验证器 – 这样更安全。

结论

黑客将始终尝试针对您的上市公司服务,研究以找到您的域名系统内部的弱点。拥有可靠的DNS强化策略将有助于缓解上述大多数攻击