由于DNS(domain name system)协议存在缺乏必要的认证机制等设计缺陷,导致域名系统面临许多安全威胁。主要包括DNS欺骗、缓存毒化攻击和拒绝服务攻击等。主要的防御方法是通过引入DNS安全扩展协议(DNSSEC协议),以增强域名系统的安全性。
①DNS欺骗。攻击者通过伪造DNS应答信息发给受害者,使得受害者访问虚假的目标网站。由于DNS协议缺乏完善的验证机制,仅使用一个序列号(ID)对DNS请求报文进行标识,攻击者很容易根据监听到的DNS请求报文伪造DNS应答报文,劫持正常域名,进而阻止受害者正常访问网站或欺骗受害者访问钓鱼网站或挂马网站,造成受害者隐私泄露及经济损失。
②缓存毒化攻击。攻击者通过修改DNS服务器缓存信息,达到DNS请求不能正确响应的目的。当DNS客户端向DNS服务器发送DNS查询请求时,DNS服务器会首先查询本地的DNS缓存,若查询到相应条目,则返回给DNS客户端;若查询不到,DNS服务器则向上一级DNS服务器发送请求。此时,如果攻击者抢先向DNS服务器回应一个错误的DNS应答信息,DNS服务器会将错误的DNS信息缓存并回应给DNS客户端。DNS缓存的错误DNS信息将随着后续客户端的查询继续传播,从而欺骗更多的客户端。缓存毒化攻击影响范围较大,可能使受害者访问钓鱼网站及挂马网站等虚假网站,导致敏感信息被窃取。
③针对DNS协议存在的安全性问题,IETF域名系统安全工作组于1997年提出DNS安全扩展协议,即DNSSEC协议,在兼容现有协议的基础上引入公钥加密/认证体系,通过事务签名和区签名来提供端到端的数据真实性和完整性保护。同时,DNSSEC协议也存在一些不足。例如,大量签名和记录验证提高了负载,协议运行效率不高,且密钥管理问题较为突出,这些问题限制了DNSSEC协议大规模的部署。针对DNS的攻击,主要采用基于异常流量和异常行为的检测方法进行实时攻击行为检测,在此基础上对攻击进行实时阻断和防御。