域名系统(Domain Name System, DNS)负责域名和IP地址的转换。
DNS既可以使用TCP,又可以使用UDP,端口为53.
DNS主从服务器之间传输时使用TCP协议;
客户端和DNS服务器之间传输时使用的是UDP协议。
1.域名层次空间
域名分量:···.三级域名.二级域名.顶级域名
不区分大小写,除连字符-外,不能使用其它符号。
不同级别的域名中可能会有重复的域名。
每个域分别由不同的组织进行管理。每个组织都可以将它的域再划分成一定数目的子域,并将这些子域委托给其他组织去管理。例如,管理CN域的中国将EDU.CN子域授权给中国教育和科研计算机网CERNET来管理。
例如www.sina.com.cn,其实严格意义上讲,sina.com.cn才是域名,www是主机名,主机名.域名 称为完全限定域名(Full Quality Domain Name,FQDN)。
怎么理解主机名.域名?
例如新浪公司将sina.com.cn域名买下来了,然后想为大家提供网页服务,那么提供网页的那台服务器就叫www服务器,那么www.sina.com.cn就是指这台服务器。一般管理员在明明其主机的时候根据其主机的功能而定,比如网站是www,博客是blog,论坛是bbs,即www.sina.com.cn,blog.sina.com.cn,bbs.sina.com.cn,然而申请一个域名即"sina.com.cn"即可。
2.域名服务器
因特网的域名系统被设计成一个连接分布式的数据库系统,并采用B/S模型。域名到IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的范围成为区,各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。每一个域名服务器不但能够进行一些域名到IP地址的解析,而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地方去找别的域名服务器。
DNS使用了大量的域名服务器,他们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的DNS服务器上。主要有四种类型的域名服务器。
①根域名服务器
根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的IP地址。本地域名服务器在自己无法解析时,首先求助根域名服务器。根域名服务器通常并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
②顶级域名服务器
顶级域名服务器管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后结果,也可能是下一步应当查找的域名服务器的IP地址)。
③授权域名服务器
每一个主机都必须在授权域名服务器处登记。实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。授权域名服务器总是能够将其管辖的主机名转换为该主机的IP地址。
④本地域名服务器
本地域名服务器对域名系统非常重要。每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器(因为可能不信任互联网上的DNS服务器)。当一个主机发出DNS查询请求时,这个查询请求报文就发送给该主机的本地域名服务器。事实上,我们在Windows系统中配置“本地连接”时,就需要填写DNS服务器地址,这个地址就是本地DNS域名服务器的地址。
3.DNS解析种类
①按照查询方式分类:
- 递归查询:客户机与本地DNS服务器之间
- 迭代查询:本地DNS与根等其他DNS服务器之间
②按照查询内容分类:
- 正向解析:知域名,解析IP地址
- 反向解析:知IP,解析域名
4.域名解析过程
递归查询:一般客户机和服务器之间是递归查询,DNS服务器如果未能在本地找到相应的信息,就代替用户向其他服务器进行查询,这时它是代替用户扮演了解析器(Resolver)的角色,直到最后把结果找到,也可能根本没有结果,那就返回错误,并返回给用户为止。
反复查询(迭代查询):一般服务器之间属于反复查询。DNS服务器返回的要么是本地存在的结果信息,要么是一个错误码,告诉查询者你要的信息这里没有,然后再返回一个可能会有查询结果的DNS服务器地址,让查询者到那里去查一查。
递归与迭代结合的方式
5.DNS协议报文格式
6.安全缺陷
单点故障
软件实现漏洞
- 缓冲区溢出
- 拒绝服务
恶意攻击
- 欺骗
- 缓存中毒
- 缓冲区溢出漏洞攻击
- 拒绝服务攻击
- 信息泄露
DNS应答包被客户端接收需要满足以下条件:
- 应答包question域和请求包question域的域名信息一致;
- 应答包的Transaction ID和请求包中的Transaction ID一致;
- 应答包的源IP地址和请求包的目的IP地址一致;
- 应答包的目的IP地址和端口与请求包的源IP地址和端口一致;
- 第一个到达的符合以上四个条件的应答包。
这里存在很多漏洞。
DNS安全威胁
安全漏洞有以下三个方面:
1.DNS报文只使用一个序列号来进行有效性鉴别,序列号由客户程序设置并由服务器返回结果,客户程序通过它来确定响应与查询是否匹配,这就引入序列号攻击的危险。
2.从协议定义上来看,在DNS应答报文中可以附加信息,该信息可以和所请求的信息没有直接关系,这样,攻击者就可以在应答中随意添加某些信息。如:指示某域的权威域名服务器的域名及IP,导致在被影响的域名服务器上查询该域的请求都会被转向攻击者所指定的域名服务器上去,从而对网络的完整性构成威胁。
3.DNS的缓存机制,当一个客户端/DNS服务器,收到有关域名和IP的映射信息时,它会将该信息存放在缓存中,当再次遇到对此域名的查询请求时就直接使用缓存中的结果而无需重新查询。可以通过ipconfig /displaydns命令查看本地DNS缓存信息。通过ipconfig /flushdns清除缓存。
安全防范准则:
- 选择安全没有缺陷的BIND版本
- DNS服务器配置正确可靠
BIND安全配置:
- DNS服务器不应该再运行其他服务,尤其是允许普通用户登录,减小攻击者利用其他服务漏洞攻击DNS服务器的概率;
- 为BIND创建chroot,chroot是指更改某个进程所能看到的根目录,即将某个进程限制再指定的目录中,保证该进程只能对该目录及其子目录有所动作,从而保证整个服务器的安全。
- 隐藏BIND版本号,通过发送特殊的DNS查询包,DNS服务器会返回DNS的版本信息。(通常软件的BUG信息是和特定版本相关的,因此版本号是黑客寻求的最有价值的信息。黑客获得版本号就可以知道这个软件存在了哪里的漏洞。隐藏BIND版本配置比较简单,只需修改配置文件)
- 请求限制。DNS服务器响应任何人的任何请求这是不能接受的。限制DNS服务器的服务范围很重要,可以把许多入侵者拒之门外。修改BIND的配置文件/etc/named.conf,添加响应内容即可。
- 默认情况下BIND的区传送是全部开放的,如果没有限制,DNS服务器允许任何人进行区传送,那么网络架构中的主机名、主机IP地址表、路由器及路由IP表,甚至包括各主机所在的位置和硬件配置信息等情况很容易被入侵者得到。因此需要对去传送进行必要的限制。
7.win server 2008 部署DNS服务器
- 配置静态ip
- 安装dns服务插件:开始-管理工具-服务管理器-角色-添加角色-dns服务器
- 在正向查找区域中新建区域-新建主机...
- 将客户机dns指向dns服务器
区域配置文件中包含:资源记录(用于此记录解析的属性)
SOA:Start Of Authority,起始授权
NS:Name Server,域名服务器
A地址: 此记录列出特定主机名的 IP 地址。这是名称解析的重要记录。
CNAME:标准名称 此记录指定标准主机名的别名。
MX邮件交换器:此记录列出了负责接收发到域中的电子邮件的主机。
NS名称服务器:此记录指定负责给定区域的名称服务器。
PTR:反向解析记录
AAAA:记录ipv6的地址
DNS服务器的类型
-
主DNS服务器 :本身提供DNS 服务,并且本身含有区域数据文件。
-
辅助DNS服务器:和Master一起提供DNS服务,当Master服务器上的配置信息修改的时候,会同步更新到Slave服务器上。
-
缓存名称服务器:没有自己的区域数据文件,只是帮助客户端向外部DNS请求查询,然后将查询的结果保存到它的缓存中。
说明:在linux系统下DNS服务的功能是通过bind软件实现的,几乎每个linux发行版都自带了这个DNS服务软件。
区域传送
解析库文件同步的过程,即辅助DNS服务器从主DNS服务器或其他的辅助DNS服务器请求数据传输过程。
-
完全区域传送:传送区域的所有数据,简称AXFR
-
增量区域传送:传送区域中改变的数据部分,简称IXFR
客户机中DOS命令
nslookup #查看域名服务器
nslookup 域名 #解析域名