如果你的服务器主机中运行了DNS服务,那么一定要小心DdoS这个很现实的攻击行为。而如果你的DNS服务遭受到了DdoS攻击,那么可以想象,最低的损失也是丢失电子邮件和暂停Web服务。而如果你的DNS服务主机位于企业内部,并且与企业用户的网络浏览等服务共用网络连接,那么一旦遭受DdoS攻击,就意味着整个企业的网络服务暂停了。就算你的DNS服务只是用于测试或其它有限的目的,一旦被攻击,所波及的范围也会很广。
其它会威胁到DNS的情况还包括对外网开启FTP服务,这个服务本来不应该从企业内部对外开放的。因为管理员都明白,一旦你这样做了,黑客和各种机器人程序会通过各种手段,包括暴力破解方式,来取得FTP的账户和密码。就算你采用了很复杂的密码,当多个暴力破解程序运行时,由此产生的失败的FTP访问流量就足以耗光网络资源。
总之,企业自己搭建和管理DNS总会存在一定程度的安全风险。换句话说,目前公认的较好的解决方案就是DNS服务托管。对于那些还没有为自己管理DNS服务做好万全准备的企业来说,唯一的建议就是找个信任ISP或其它专业的托管机构,将这个事儿交给他们去做。
DDoS攻击亲身体验
之所以撰写这篇文章,也是因为我经历了一场真实的DdoS攻击。当时的受害者是位于北美的一个小办公室,拥有一个DSL路由器和一个静态IP地址。办公室的服务器对外开启了DNS。被攻击的早期征兆有两点,一是接收到的电子邮件数量比平时有所下降,二是Web浏览速度下降。在经过几天的不良症状后,该办公室再也收不到来自外界的电子邮件了,同时也无法进行网络浏览了。使用最简单的ping命令到互联网大型网站地址,得到的结果要么是失败,要么就是超过1000ms的响应时间,这也基本算是无法连接了。
很明显此时有某个网络进程充斥在DSL连接中。办公室中的每台电脑都关机重启了,并没有解决问题。重启DSL也没有解决问题。但是在重启DNS服务器后,会有短暂的时间恢复到正常的互联网连接状态,几分钟后,这种正常的连接速度再次变得不正常,并很快无法连接任何网站。考虑到可能是电子邮件系统或基于Web的进程出现故障,便先后将服务器中的Exchange服务和Web服务关停,但是没有效果。在接下来的逐项尝试中,我们发现关闭DNS服务会产生明显的效果,于是我们最终将问题锁定在DNS服务上。
但是DNS服务的日志中并没有任何警告事件,而且服务器本身也安装了最新的补丁,包括DNS服务补丁和DoS溢出补丁。另一个找寻线索的位置就是防火墙的日志文件。虽然这个办公室的防火墙没有历史日志文件,但是我们可以查看选定网络协议的实时日志。从实时的防火墙日志可以观察到,有两个互联网上的IP地址在不断向办公室的服务器发送DNS请求数据。这两个IP地址所代表的服务器都位于欧洲,分别属于两个不同的国家,但是它们都在向这个相同的DNS服务地址发送大量的数据。如果有两个或两个以上的远程地址在进行DoS攻击,就可以将其归类为DDoS攻击,即分布式DoS攻击。。
在DDoS攻击下保护DNS
一旦你知道了攻击方的IP地址,就可以简单在防火墙中设置一个IP规则,阻止来自该IP地址的任何数据通过防火墙。在我们阻止了一个IP地址后,ping主流网站的结果已经达到300ms了。当我们将第二个IP地址阻挡后,ping主流网站的结果已经恢复到正常水平,大概30ms,并且所有网络功能恢复了正常。这个办公室很幸运,所遭受的DDoS攻击只有两个攻击源,两个固定IP地址。如果攻击源有几十甚至上百个(或者攻击源IP地址是变化的),该办公室的处境就艰难的多了,同时对日常业务的冲击也会更大。
正如我前面提到的,防止DNS服务器遭遇DDoS攻击的最佳方案是将DNS服务交给DNS服务供应商去实现,比如你的ISP或知名的DNS注册机构,或者可靠的托管机构。虽然这种做法无法从根本上杜绝黑客对于供应商展开DoS攻击的威胁,但是起码能够防止在发生DoS攻击时,你企业的各种网络功能会不受影响。
如果出于某种原因,你必须要在企业内部建立DNS服务,那么一定要制定一个针对DNSDoS攻击的应对策略。比如在不同地点建立多个DNS服务器,使用强化或专用的DNS服务器或应用程序并采用独立的互联网连接线路。Verisign在2011年5月发布了一份DNS可用性状态报告,确认就算是最顶级的电子商务网站,其DNS的可用性也面临潜在风险,尤其是那些自己建立和管理DNS服务的企业。