域名系统(Domain Name System,DNS)响应消息中给出域名服务器的IP地址、完全合格的域名与IP地址之间的绑定关系等,因此,DNS响应消息的真实性和完整性直接关系用户访问网络过程的安全性。为了保证DNS响应消息的真实性和完整性,要求 DNS 响应消息的接收端能够鉴别DNS响应消息发送者的身份,并对DNS响应消息进行完整性检测。DNS安全扩展(Domain Name System Security Extensions,DNS Sec)就是在DNS基础上增加DNS响应消息源端鉴别和完整性检测的DNS安全协议。
1.域名服务器结构与资源记录配置
域名服务器结构
域名服务器采用层次结构,根域名服务器负责管理顶级域名,每一个顶级域名有着对应的域名服务器,根域名服务器通过类型为NS的资源记录建立每一个顶级域名与对应的域名服务器之间的关联。
域名服务器采用分层结构的好处是,可以由负责该域的组织决定该域的子域划分过程,在某个域中增加一个子域,只要在该域对应的域名服务器中增加用于建立该子域域名与对应的域名服务器之间关联的资源记录
域名解析过程
(1)终端A配置的本地域名服务器是终端A解析域名时访问的第一个域名服务器,因此,也称为默认域名服务器,一般选择由终端A所在组织负责的域名服务器作为终端A 的本地域名服务器
(2)DNS缓冲区和hosts文件终端A中分配DNS缓冲区,终端A完成域名解析后,建立某个完全合格的域名与对应的IP地址之间的映射,并将该映射保存在DNS缓冲区中一段时间。如果在该映射保存在DNS缓冲区期间,终端A需要再次解析该完全合格的域名,终端A可以通过访问 DNS缓冲区获得该映射。终端A中如果存在hosts文件,终端A向本地域名服务器发送域名解析请求之前,检索 hosts文件,如果 hosts文件中存在该完全合格的域名与对应的IP地址之间的映射,终端A直接使用该映射。
(3)迭代解析过程
本地域名服务器接收到终端A发送的完全合格的域名www.b.edu的解析请求后,首先在数据库中检索名字为www.b.edu,类型为A的资源记录。如果不存在这样的资源记录,检索名字为b,edu,类型为NS的资源记录。如果不存在这样的资源记录,检索名字为edu,类型为NS的资源记录。根据资源记录<edu,NS,dns.root>和<dns.root,A,192.1.3.7>确定根域名服务器,向根域名服务器发送完全合格的域名 www.b.edu 的解析请求。
DNS安全威胁和解决思路
一、DNS响应消息的接收端没有源端鉴别机制,使得黑客终端可以伪造DNS响应消息,并将伪造的DNS响应消息发送给终端或本地域名服务器,导致终端或本地域名服务器将某个完全合格的域名和错误的IP地址绑定在一起,而这个错误的 IP地址往往就是某个黑客终端的地址。
二、黑客可以篡改DNS响应消息,通过篡改DNS响应消息中域名服务器的IP地址或某个完全合格的域名与IP地址之间的绑定关系,使得终端或本地域名服务器得到错误的上级域名服务器地址或某个完全合格的域名与错误的IP地址之间的绑定关系。
解决思路
一、必须对DNS响应消息进行源端鉴别。
二、是必须对DNS响应消息进行完整性检测
对DNS响应消息进行源端鉴别和完整性检测的最简单方法是,由发送端对DNS响应消息进行数字签名。接收端能够获得经过验证的发送端公钥
资源记录配置
(1)每一个域生成私钥和公钥对每一个域生成私钥和公钥对,如 root 域的公钥是PKR,私钥是SKR,私钥 SKR 由根域名服务器掌握。同样,com域的公钥是PKC,私钥是SKC,私钥SKC由com域域名服务器掌握。
(2)域名服务器配置DNSKEY资源记录每一个域名服务器需要配置上一级域域名服务器的公钥,如 a.com 域域名服务器通过类型为NS的资源记录指定com域域名服务器和根域名服务器这两个上一级域域名服务器,因此,需要通过 DNSKEY类型的资源记录指定 com 域的公钥PKC和root域的公钥PKR。其他域名服务器中DNSKEY资源记录的配置过程与此相同。
安全解析过程
终端A配置的本地域名服务器为a.com域域名服务器,且终端A已经具有a.com域的公钥PKAC。
本地域名服务器接收到终端A发送的完全合格的域名www.b.edu的解析请求后,首先在数据库中检索名字为www.b.edu,类型为A的资源记录。如果不存在这样的资源记录,检索名字为b.edu,类型为NS的资源记录。如果不存在这样的资源记录,检索名字为 edu,类型为NS的资源记录。根据资源记录<edu,NS,dns.root>和<dns.root,A,192.1.3.7>确定根域名服务器,向根域名服务器发送完全合格的域名www.b.edu 的解析请求。
本地域名服务器接收到根域名服务器的DNS响应消息后,首先用root域的公钥PKR验证根域名服务器的数字签名,记录下 edu域的公钥 PKE。然后向 edu域域名服务器发送完全合格的域名www.b.edu的解析请求。edu域域名服务器同样向本地域名服务器回送b,edu域域名服务器的IP地址192.1.5.7、b.edu域的公钥PKBE和用edu域的私钥 SKE产生的数字签名Dsxe(SHA-1((dns.b.edu 192.1.5.7)|(b.edu PKBE))。本地域名服务器用根域名服务器发送的 edu域的公钥 PKE 验证 edu域域名服务器的数字签名。
本地域名服务器接收到b.edu域域名服务器发送的解析结果后,用 edu域域名服务器发送的b.edu域的公钥PKBE验证b.edu域域名服务器的数字签名。本地域名服务器完成对b.edu域域名服务器发送的解析结果的源端鉴别和完整性检测后,向终端A发送解析结果。本地域名服务器向终端A发送解析结果时,用a.com域的私钥SKAC产生解析结果的数字签名Dsxac(SHA-1(www.b.edu 192.1.5.2))。终端A用a.com域的公钥PKAC验证 a.com域域名服务器的数字签名。
IPSec,TLS和应用层安全协议
IPSec、TLS和应用层安全协议构成基于TCP/TP体系结构的安全协议体系结构,IPSec是网际层安全协议,用于实现IP分组两个终端之间的安全传输过程。TLS是传输层安全协议,用于实现数据两个应用进程之间的安全传输过程。应用层安全协议用于增强一些网络应用实现过程中的安全性。
IPSec是网际层安全协议,用于实现IP分组两个终端之间的安全传输过程,建立安全关联时,鉴别发送终端和接收终端的身份,如果安全关联采用ESP安全协议,整个TCP报文都是加密的,TCP首部信息对于端到端传输路径经过的结点都是不可见的。
TLS是传输层安全协议,用于实现数据两个应用进程之间的安全传输过程,建立安全连接时,需要鉴别两端应用进程的身份,如浏览器和Web服务器。经过安全连接传输的应用层数据是加密的,对端到端传输路径经过的结点都是不可见的。但TLS不对IP分组首部和TCP报文首部提供完整性检测和加密功能,IP分组首部和TCP报文首部对于端到端传输路径经过的结点都是可见的。
DNS Sec、SET、PGP和S/MIME 是应用层安全协议,每一种安全协议用于增强特定网络应用实现过程中的安全性。如 DNS Sec是为了实现 DNS响应消息的源端鉴别和完整性检测。SET是为了实现安全的电子交易过程。PGP和S/MIME是为了实现电子邮件的安全传输过程。