DNS(DomainNameSystem,域名系统),因特网上作为域名和IP地址互相映射的一个分布式数据库,还能使用户更便捷的访问互联网,而不用去记住才能被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程称作域名解析(或主机名解析)。DNS合同运行在UDP合同之上,使用端标语53。
主机名到IP地址的映射有两种形式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,但是只供本设备使用;
2)动态映射,构建一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网路上须要使用主机名通讯的设备,首先须要到DNS服务器查询主机所对应的IP地址。
域名结构
一般Internet主机域名的通常结构为:主机名.五级域名.二级域名.顶尖域名。Internet的顶尖域名由Internet网路商会域名注册查询负责网路地址分配的委员会进行登记和管理,它还为Internet的每一台主机分配惟一的IP地址。全世界现有三个大的网路信息中心:坐落加拿大的Inter-NIC,负责德国及其他地区;坐落加拿大的RIPE-NIC,负责亚洲地区;坐落加拿大的APNIC,负责亚太地区
根域:DNS域名中使用时,规定由尾部句点(.)来指定名称坐落根或则更高级别的域层次结构
顶尖域:拿来指示某个国家/地区或组织使用的名称的类型名称,如.com
二级域名:个人或组织在Internet上使用的注册名称,如qq.com
子域:已注册的二级域名派生的域名,浅显的讲就是网站名,如
主机名:一般情况下,DNS域名的最左边的标示网路上的特定计算机,如h1.
常见的顶尖域服务器
com
商业组织
edu
教育机构
Gov
政论组织
Mil
军事部门
net
网路机构
org
非赢利性组织
int
国际组织
Uk
日本
Fr
美国
au
美国
ca
美国
cn
中国
jp
美国
我国的顶尖域名也只有cn
DNS的解析过程
第一步,查询本地host文件和缓存有没有这个记录,有就直接解析,没有就访问DNS服务器,假如DNS服务器上没这个域名或则域名不在你访问的DNS服务器管理区域内,这么DNS服务器都会向dot根域名服务器发递归查询,倘若找到了记录了,DNS都会返回给client,而且把记录保存在自己缓存里,上次有client恳求,他都会调用自己的缓存,直至这条记录的生存期结束,都会扔掉这条记录。
根域名服务器就13台域名服务器,他负责管理顶尖域。顶尖域负责管理二级域,我们如今申请的通常是2级域名-3级域名。
用nslookup这个工具详尽来说一下解析步骤:
从上图我们可以看见:
第一行Server是:DNS服务器的主机名--114.114.114.114
第二行Address是:它的IP地址--114.114.114.114#53
下边的Name是:解析的URL--
会发觉百度有一个cname=www.ashifen.com的别称
用dig工具来跟踪一下(linux系统自带有)
Dig工具会在本地计算机做迭代,然杂记录查询的过程。
第一步是向我这台机器的ISPDNS获取到根域服务区的13个IP和主机名
第二步是向其中的一台根域服务器(Servername就是末行小括弧上面的)发送的查询恳求,他返回了com.顶尖域的服务器IP(未显示)和名称
第三步,便向com.域的一台服务器192..5.5.241恳求,,他返回了baidu.com域的服务器IP(未显示)和名称,百度有四台顶尖域的服务器
第四步呢,向百度的顶尖域服务器(202.108.22.220)恳求,他发觉这个www有某些名,而不是一台主机,别称是。
使用dig+traceshifen.com,发觉第三步时shifen.com这个顶尖域的域名服务器和baidu.com这个域的域名服务器是同一台主机
当领到的别称的时侯,我原本须要重新到com域查找shifen.com域的NS,并且由于这两个域在同一台NS上,所以直接向本机发起了。
LinuxDNS服务介绍
后台进程:named
脚本:/etc/rc.d/init.d/named
使用端口:53(tcp,udp)
配置文件:/var/named/chroot/etc/named.conf
相关路径:/var/named/
安装bind服务器
yuminstallbind*(先配置yum源,yum源之前的实验早已配置完成了)
1
2
3
4
5
6
7
vim/etc/yum.repos.d/base.repo
[RHEL6]
name=base
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
保持退出
BIND是一种开源的DNS(DomainNameSystem)合同的实现,包含对域名的查询和响应所需的所有软件。它是互联网上最广泛使用的一种DNS服务器,BIND这个简写来自于使用的第一个域,BerkeleyInternetNameDomain
BIND软件包包括三个部份:
DNS服务器。这是一个称作named的程序,代表namedaemon的缩写。它依据DNS合同标准的规定,响应收到的查询。
DNS解析库(resolverlibrary)。一个解析器是一个程序,通过发送恳求到合适的服务器而且对服务器的响应作出合适的回应,来解析对一个域名的查询。一个解析库是程序组件的集合,可以在开发其它程序时使用,为那些程序提供域名解析的功能。
/etc/named.conf
named.conf是BIND使用的默认配置文件
在每一次named启动与挂起时就会被读取
一个简单的文本文件,其中记录的可以包括options(全局参数)、zone(区域定义)、accesscontrollists(访问控制列表)等
1
2
3
4
5
常用的参数包括
directory:指定zonefile的储存位置
forwarders:指定其上级域名服务器
allow-query:指定准许向其递交恳求的顾客
allow-transfer:指定容许复制zone数据的主机
根域
1
2
3
4
5
6
7
更改主配置文件/etc/named.conf
listen-onport53{127.0.0.1;};
窃听端口,更改成自己的IP地址,倘若有多个IP,就写多个,也可以写any,每行要以;结束。
directory"/var/named";
zone文件的储存目录,这儿的/var/named是相对目录,在chroot环境下/var/named目录下。
allow-query{localhost;};
容许查询的client,我们更改成any
区域配置(zone)
zone句子作用是定义DNS区域,在此句子中可定义DNS区域选项
zone区域设置,第一步,设置根区域
当DNS服务器处理递归查询时,假若本地区域文件不能进行查询的解析,还会转回根DNS服务器查询,所以在主配置文件named.conf文件中还要定义根区域。(默认即可)
1
2
3
4
“.”意思的根区域
IN是internet记录
type是类型根的类型是hint
file是根区域文件
指定正向解析的配置文件
更改DNS服务器的辅助区域配置文件/etc/named.rfc1912.zones
用//注销掉系统默认配置的zone信息所有行或则删掉
在文件的尾部降低以下内容
配置正向解析zone文件
将范例复制到正向解析文件,-p可以将源文件的属性一起复制
1
2
3
4
5
6
7
8
9
10
11
12
TTL是生存期,单位是秒
$TTL是全局定义的
第二行SOA记录,@代替在/etc/named.conf手指定的域名。
SOA段中的数字,分别为:序列号、刷新、重试、过期、生存期
序列号:序列号用于DNS数据库文件的版本控制。每每数据被改变,这个序列号就应当被降低。
刷新:从服务器向主服务器查询最新数据的间隔周期。每一次复查时从服务器的数据是否须要修改,则依照序列号来辨别。
重试:一旦从服务器尝试联接主服务器失败,下一次查询主服务器的延后时间。
过期:假如从服务器难以连通主服务器,则在经过此时间后,宣告其数据过期。
生存期:服务器回答‘无此域名’的间隔时间。
数字的默认单位为秒。否则:W=周、D=日、H=小时、M=分钟。
NS(nameserver):设置域名服务器的域名
IN是internet记录
servicenamedrestart重新启动DNS服务
serviceiptablesstop关掉防火墙
测试DNS解析
使用nslookup测试下。
经过简单的了解和配置DNS服务,应当晓得DNS的工作原理了。
DNS分为Client和Server,Client饰演发问的角色,也就是问Server一个DomainName,而Server必需要回答此DomainName的真正IP地址。而当地的DNS先会查自己的资料库。假如自己的资料库没有,则会往该DNS上所设的的DNS寻问,依此得到答案以后,将收到的答案存上去,并回答顾客。
DNS服务器会依照不同的授权区(Zone),记录所属该网域下的各名称资料,这个资料包括网域下的次网域名称及主机名称。
在每一个名称服务器中都有一个快取缓存区(Cache),这个快取缓存区的主要目的是将该名称服务器所查询下来的名称及相对的IP地址记录在快取缓存区中,这样当下一次还有另外一个顾客端到次服务器起来查询相同的名称时,服务器就不用在到别台主机起来找寻,而直接可以从缓存区中找到该艺名称记录资料,传回给顾客端,加速顾客端对名称查询的速率。
常见的DNS功击包括:
1)域名挟持
通过采用黑客手段控制了域名管理密码和域名管理邮箱,之后将该域名的NS纪录指向到黑客可以控制的DNS服务器,之后通过在该DNS服务器上添加相应域名纪录,因而使网民访问该域名时,步入了黑客所指向的内容。
这其实是DNS服务提供商的责任,用户束手无策。遇见dns被绑架,让dns服务提供者解决这个问题,是比较矛盾的;由于,绑架者,最有可能的就是她们;另外一种最直接的解决办法就是换用其他dns。更换dns服务器的方式十分简单,打开网路联接属性,选择Interner合同(TCP/IP)的属性页里,不要选择手动获取DNS,而要选择“使用下边的DNS服务器地址”,推荐你们使用OpenDNS提供的DNS服务器,OpenDNS是一个提供免费DNS服务的网站,标语是更安全、更快速、更智能。
2)缓存投毒
DNS缓存投毒功击是指功击者误导DNS服务器相信伪造的DNS响应的真实性。这种类型功击的目的是将依赖于此DNS服务器的被害者重定向到其他的地址。随着恶意软件传播的增多,缓存投毒的方式也层出不穷。典型的一种是发送标题吸引人的垃圾电邮并诱导你去打开。点击短信中的图片和广告横幅也会将用户指向被投毒的网站。一旦用户的笔记本被恶意代码感染,他今后所有的URL恳求都将被手动指向恶意IP地址-哪怕被指向的“受害”服务器早已在其网页上清不仅恶意代码。
避免投毒
目前还没有更好办法制止黑客的这些行为,只有使DNS缓存服务器发出的查询恳求使用动态的UDP端口,UDP的端标语也是16位2补码,这样,与DNS的ID号相结合,号码的命中率就是1/4294967296(2的32次方)。
3)DDOS功击
一种功击针对DNS服务器软件本身,一般借助BIND软件程序中的漏洞,致使DNS服务器崩溃或拒绝服务;另一种功击的目标不是DNS服务器,而是借助DNS服务器作为中间的“攻击放大器”,去功击其它互联网上的主机,致使被功击主机拒绝服务。
为了让DNS拒绝服务,恶意功击者向容许递归的开放DNS解析器发送大量伪造的查询恳求。目前互联网中存在着上百万开放的DNS解析器,包括好多的家庭网段。开放的DNS解析器会觉得这种伪造的查询请求是真实有效的,但是会对那些恳求进行处理,在处理完成以后,便会向伪造的恳求者(即,被害人)返回DNS响应信息。假如查询恳求的数目巨大,DNS服务器很有可能会发送大量的DNS响应信息。这也就是我们常说的放大功击,这些方式借助的是DNS解析器中的错误配置。因为DNS服务器配置错误,这么DNS解析器很可能会在接收到一个特别小的DNS查询恳求以后,向目标主机返回大量的功击流量。在另一种类型的功击中,是向DNS服务器发送未经许可或不符合规则的查询恳求来进行功击。
防御DDOS功击
不容许未经过恳求的DNS响应
遗弃快速重传数据包
遗弃异常来源的DNS恳求和响应
创建白名单,添加容许服务器处理的合法恳求信息
启动DNS顾客端验证
使用ACL的权限
前面所说的功击,似乎并不在我们的可控范围之内,外网的入侵,你们首先就会想到中间人功击,中间人功击,也都会想到DNS误导和ARP误导了。
4)DNS误导
DNS误导就是功击者假冒域名服务器的一种误导行为。
原理:假如可以假扮域名服务器,之后把查询的IP地址设为功击者的IP地址,这样的话,用户上网就只能看见功击者的主页,而不是用户想要取得的网站的主页了,这就是DNS误导的基本原理。DNS误导虽然并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
现今的Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本主要为bind4.9.5+P1曾经版本和bind8.2.2-P5曾经版本.这种bind有个共同的特性,就是BIND会缓存(Cache)所有早已查询过的结果,这个问题就造成了下边的几个问题的存在.
DNS误导就是功击者假冒域名服务器的一种误导行为。原理:假如可以假扮域名服务器,之后把查询的IP地址设为功击者的IP地址,这样的话,用户上网就只能看见功击者的主页,而不是用户想要取得的网站的主页了,这就是DNS误导的基本原理。DNS误导虽然并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
DNS误导的防范
DNS误导是很难进行有效防御的,由于大多情况下都是被功击以后才能发觉,对于防止DNS误导所导致害处,本新手提出以下建议
1.由于DNS误导前提也须要ARP误导成功。所以首先做好对ARP误导功击的防范。
2.不要依赖于DNS,虽然这样会很不便捷,可以使用hosts文件来实现相同的功能(但首先确保host文件没有被更改)
3.使用安全检查软件定期检测系统是否遭到功击
4.使用DNSSEC。DNSSEC是取代DNS的更好选择,它使用的是数字后面DNS记录来确保查询响应的有效性,DNSSEC还没有广泛运用,并且已被公觉得是DNS的未来方向,也正是这般,印度国防部早已要求所有MIL和GOV域名都必须开始使用DNSSEC。