-----如何部署DNS服务器
外面老吵吵嚷嚷说狼来了,但是狼究竟是怎么来的,也许很多人都不清楚,
以前的讨论里面都局限于针对各种漏洞的分析,但是少有系统的全面的对某个
问题的讨论,这段时间心情不错,决定专门整理出一个专题来,就是专门讨论
DNS的安全性。
也许有的人会觉得奇怪,DNS的安全性好像很少听人提到,其实,DNS的安全
尤胜过其它的网络安全。我先随便说说DNS的安全隐患:
1.防火墙不会限制对DNS的访问
2.DNS可以泄漏内部的网络拓朴结构
3.DNS存在许多简单有效的远程缓冲溢出攻击
4.几乎所有的网站都需要DNS
5.DNS的本身性能问题可是关系到整个应用的关键
6.国内关于DNS安全的资料太少,只怕狼真的来了的时候,大家来不及操家伙
...
哎呀,一下子扯开了,大家就当看评书把,;)
安全的一个重要标志是可用性。对于DNS服务器而言这点尤其重要,在现实
生活中经常定义攻击者入侵系统获取数据为一个安全问题,但是对于DNS服务器
来说,遭到了拒绝服务攻击则是一件更严重的问题。
失去了DNS服务器的话,任何在internet网络上的人将不能够再使用域名找到你
的服务器,不可想像让普通的网民们使用202.106.184.200来代替www.sina.com.cn
使用。更严重的是,没有了DNS的服务,所有的邮件发送都将失败,而你的内部
网络将由于解析域名的失败而失去和外部网络的联系。
DNS的一些注意事项
注册了一个域名以后,可以最大为你的域名设置6个DNS服务器名。
例如,microsoft.com公司的就为自己设置了五个DNS服务器来解析自己的域名:
Name Servers:
DNS4.CP.MSFT.NET 207.46.138.11
DNS5.CP.MSFT.NET 207.46.138.12
Z1.MSFT.AKADNS.COM 216.32.118.104
Z7.MSFT.AKADNS.COM 213.161.66.158
DNS1.TK.MSFT.NET 207.46.232.37
这样,即使这三个中的两个停止了工作,但是了,仍然可以有一个会对外提供服务,
而对于广大的用户而言,当出现这种多个DNS服务器停止服务带来的唯一的影响
就是查询域名的时候会延迟,因为它需要一个一个的去查询,直到找到最后的一个为止。
而上面这一个步骤也是你应付恶意攻击者对DNS服务器进行拒绝服务攻击的一个
保护手段。
一个能够放到电信局使用的DNS服务器,一般的基本配置是一个U,
它应该有足够的RAM来将数据库放入内存中。一般来说,512M是足够用了,
而且值得考虑的是,在你的DNS服务器前面加道防火墙,让防火墙把那些
成天只知道攻击的人阻挡在外面。
如果你有多个DNS服务器来进行解析域名的工作的话,一个值得考虑的
问题是,如果这些服务器都是处于接近100%的处理量,每个都接近饱和的时候,
那么你应该考虑多再给你的dns服务器减压的问题:一是为了应用上考虑,
其次从安全上来说,如果这样的系统,只要攻击者让一台DNS服务器瘫痪了,
那么繁重的处理工作自然会压垮其它的DNS服务器的。
如果纯粹从理论上出发,那么一台DNS服务器是完全可以完成所有任务的,
但是对于实际应用而言,应该是在考虑到在失去了一台服务器的情况下,剩下的
应该还能够正常的工作(这就是在做大项目的时候经常说的冗余性和高可用性)。
前段日子,微软就遭受了沉重的专门针对DNS服务器的攻击,这次是
放在4台DNS服务器前的防火墙成了攻击目标,大量的数据包涌向这个路有器,
从而干扰了正常的DNS通信。导致微软的好几个主要站点都无法给外界提供服务。
上面是关于DNS设计时的一个基本原则,下面我们来分析一下这则新闻。
微软求助Akamai帮忙加固其网络
--------------------------------------------------------------------------------
http://www.sina.com.cn 2001/01/30 17:15 ChinaByte
【ChinaByte综合消息】日前,微软的附属网站多次发生瘫痪,一度无法登录。
微软发言人称这是其DNS服务器所引起的故障。该公司承认,它配置基础设施的方式
,给了黑客可乘之机。该公司在某单一网络上运行着所有4台重要的DNS服务器。
攻击微软网站的黑客,显然将矛头对准了该网络中用来指引数据流量的路由器,
通过发送大量数据,使需要进行域名解析的数据无法抵达DNS服务器。
--------------------------------------------------------------------------------
对这次攻击的分析如下:
在1月30号前,可以查询微软的DNS的配置结果如下:
DNS4.CP.MSFT.NET 207.46.138.11
DNS5.CP.MSFT.NET 207.46.138.12
DNS6.CP.MSFT.NET 207.46.138.20
DNS7.CP.MSFT.NET 207.46.138.21
Z1.MSFT.AKADNS.COM 216.32.118.104
可以看到,在这个以前的DNS设计中,微软的用来解析自己网站的DNS服务器显然都在
同一个路由器(或防火墙设备)后面,而这次黑客的攻击只所以得逞,就是在于他们攻击
了这个路由器(或防火墙),让大量的数据包堵塞了这个路由器(或防火墙),而正常的
DNS解析请求无法到达内部的四个DNS服务器上。从而导致了,微软的附属网站多次发生瘫痪。
通过上面的分析,我们再来看看目前微软新的DNS布置计划,这是今天的微软的
DNS配置结果如下:
DNS4.CP.MSFT.NET 207.46.138.11
DNS5.CP.MSFT.NET 207.46.138.12
Z1.MSFT.AKADNS.COM 216.32.118.104
Z7.MSFT.AKADNS.COM 213.161.66.158
DNS1.TK.MSFT.NET 207.46.232.37
可以看到,最大的改变莫过于取消了4台放置在同一个路由器后面的DNS,而将DNS的解析
任务分布到了其它的地方,而这其它的DNS服务器显然已经不再是在同一个路由器后面了。
其实,这里面提到的只是对DNS的拒绝服务导致了网站整个瘫痪的示例以及如何防御的
办法,其实DNS的安全问题在许多安全威胁列表里面一向都是名列三甲之中的,以后我想陆续来
说明一下这个问题。
DNS(BIND)安全性之二
------目前DNS(BIND)存在的安全威胁
在DNS存在的安全隐患到底能够对系统造成多大的威胁,入侵者是对其中的
哪些内容感兴趣了,我将在下面稍微作一个简单的描述。只有知己知彼,才能够
百战不殆啊,:)。而且我相信只要是一个称职的管理员,当他在看了下面的内容
后,他就一定会把DNS的安全问题摆在当处理整个系统安全这个步骤中的重要地位了。
DNS带来的安全威胁主要来自一下几个方面:
1.拒绝服务攻击
有关这个的描述我在我的描述dns的第一篇文章里面已经有了详细的说明。
这里只是罗列出它而已。
2.设置不当的DNS将泄漏过多的网络拓朴结构
如果你的DNS服务器允许对任何人都进行区域传输的话,那么你的整个网络
架构中的主机名,主机IP列表、路由器名,路由器IP列表,甚至包括你的
机器所在的位置等等。
下面举一个简单的例子,以下是Redhat.com公司的DNS告诉我们的情况:
PS:由于列表太长,我有删节(一共213个地址)
redhat.com. SOA ns1.redhat.com noc.redhat.com. (200102060
2 3600 1800 604800 86400)
redhat.com. NS ns1.redhat.com
...
news CNAME stan.redhat.com
...
* MX 10 mail.redhat.com
lists A 199.183.24.247
juju A 199.183.24.212
updates A 216.148.218.193
...
wildstar.community A 199.183.24.202
...
acme A 199.183.24.76
rooter A 199.183.24.250
iad NS ns1.redhat.com
iad NS ns2.redhat.com
iad NS ns3.redhat.com
mail A 199.183.24.239
bridger A 199.183.24.75
archive A 216.148.218.195
mojo A 199.183.24.213
contrib CNAME ftp.redhat.com
...
router-ext.soma A 205.149.7.26
tunnel.soma A 205.217.45.82
firebox-ext.soma A 205.217.45.80
bugzilla A 199.183.24.198
...
ftp A 216.148.218.201
rh-mirror CNAME wallace.redhat.com
...
redhat.com. SOA ns1.redhat.com noc.redhat.com. (200102060
2 3600 1800 604800 86400)
从上面的这个列表里面我们可以很清楚的看到redhat.com这个网站的内部网络拓朴结构
这个方法可比使用nmap去扫描整个网段还来得轻松,并且还可以每台机器的关系获取
到对一个入侵者来说可能很要命的信息。
3.利用被控制的dns服务器入侵整个网络,破坏整个网络的安全完整性。
当一个入侵者控制了dns服务器后,他就可以随意篡改dns的记录信息,甚至使用这些
被篡改的记录信息来达到进一步入侵整个网络的目的。例如,将现有的dns记录中的主机信息
修改成被攻击者自己控制的主机,这样所有到达原来目的地的数据包将被重定位到入侵者手中,
在国外,这种攻击方法有一个很形象的名称,被称为dns毒药,因为dns带来的威胁会使得整个
网络系统中毒,破坏了完整性。
举例如下:如果一个做在线交易的网络公司www.DnsPoison.com的主dns服务器被人控制,
如果原来的www.DnsPoison.com是解析到192.168.0.2,那么入侵者可以篡改这个主dns
的记录,将其重新解析到10.0.0.2,而这个10.0.0.2上也运行一个模仿了www.DnsPoison.com
提供在线交易的网站,那么根本不知内情的用户就会在这个假的地址输入他们的密码和用户名
其实这些信息已经被入侵者盗窃。
4.利用被控制的dns服务器,绕过防火墙等其它安全设备的控制
现在一般的网站都设置有防火墙,但是由于DNS服务的特殊性,在*nix机器上,dns需要的端口
是UDP 53和TCP 53,它们都是需要有root执行权限的。这样防火墙很难控制对这些端口的访问,
入侵者可以利用dns的诸多漏洞获取到dns服务器的管理员权限。
如果内部网络的设置不合理,例如dns服务器上的管理员密码和内部主机管理员密码一致,
dns服务器和内部其它主机处于同一个网段,dns服务器处于防火墙的可信任区域等等,就相当于
给入侵者开了一个打开系统大门的捷径。
呵呵,有关DNS的安全威胁先介绍这么多把,其实上面还只是我所知道的有关dns安全威胁的
冰山一角而已。在后续的文章里面将逐一就如何来设置一个安全的dns服务器,以及如何来评估检测
一个安全的DNS服务器进行探讨。