dcsimg

加强BIND9防止缓存中毒

随着网络钓鱼和域欺骗攻击的增加,保护DNS服务器免受缓存中毒比以往任何时候都更加重要。

 By 查理·舒丁
第1页,共2页

DNS缓存中毒始于1993年。缓存中毒的概念是将错误信息简单地注入到DNS服务器中,并在其中进行缓存。然后,当一个毫无戒心的用户连接到他们银行的网站时,他们实际上是在连接到攻击者的IP地址。随着网络钓鱼攻击的增加,DNS缓存中毒技术在当今的Internet中有更多用途。在本文中,我们将研究缓存中毒的工作原理,以及如何确保DNS服务器不会受到攻击。

这怎么可能?
历史上有三个原因可能导致缓存中毒。早在1993年,ISC的BIND DNS服务器就允许在答复中包含额外的信息。这意味着攻击者所要做的就是发起查询,使易受攻击的DNS服务器向攻击者的服务器询问DNS数据,然后在响应中可能包含他们想要的任何恶意信息。当然,这是一个错误,已在后续的BIND版本中修复。

下一个漏洞是大约在1997年的BIND4。CERT咨询CA-1997-22发现了BIND的交易ID号是连续的这一事实。攻击者不能再简单地将恶意数据发送到DNS服务器,而是必须猜测下一个事务ID,然后将数据发送给该ID。攻击者的唯一障碍是猜测来自受害DNS服务器的合法请求的IP源端口。事实证明这很简单,因为BIND习惯于对大多数DNS事务一遍又一遍地使用相同的端口。交易ID被随机分配以解决此问题。

今天,仍然存在问题。 BIND 8和BIND 9都在生成真正的随机事务ID时遇到问题。交易ID是一个16位数字(即1-65536),用于标识单个DNS交易。 BIND 9使用操作系统的/ dev / random设备,因此其随机性比版本8中的存在好得多。在BIND 8中,利用数学异常(称为“生日攻击”),攻击者可以正确地猜测交易ID。 DNS尝试次数少于600次。当然,这需要在真正的DNS服务器有机会响应之前完成。在真实的DNS服务器上进行简单的拒绝服务攻击将使其速度降低到足以使攻击者有时间运行600个事务ID。 600个数据包是微不足道的数量,任何拥有宽带连接的人都可以成功执行此攻击。

在这一点上,所有人似乎都望尘莫及,但不要担心,情况会变得更糟:有统计方法可以猜测给定随机数生成器中随机数出现的可能性。 BIND 8的生成器可以预测出非常相似的数字,从而使攻击者猜测要做的猜测量非常小。但是,BIND 9做得更好。另一个DNS服务器djbdns做得更好,因为它随机化了源端口和事务ID。

接第2页:保护自己

本文最初于2005年4月8日发布
通过网络更新新闻获取最新消息