DNS(Domain Name System,域名系统),因特网上作为域名和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

子域:已注册的二级域名派生的域名,通俗的讲就是网站名,如www.qq.com

主机名:通常情况下,DNS域名的最左侧的标识网络上的特定计算机,如h1.www.qq.com

常见的顶级域服务器

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--    www.baidu.com

会发现百度有一个cname=www.ashifen.com的别名

用dig工具来跟踪一下(linux系统自带有)

Dig工具会在本地计算机做迭代,然后记录查询的过程。

第一步是向我这台机器的ISPDNS获取到根域服务区的13个IP和主机名

第二步是向其中的一台根域服务器(Servername就是末行小括号里面的)发送www.baidu.com的查询请求,他返回了com.顶级域的服务器IP(未显示)和名称

第三步,便向com.域的一台服务器192..5.5.241请求,www.baidu.com,他返回了baidu.com域的服务器IP(未显示)和名称,百度有四台顶级域的服务器

第四步呢,向百度的顶级域服务器(202.108.22.220)请求www.baidu.com,他发现这个www有个别名,而不是一台主机,别名是www.a.shifen.com。

使用dig +trace  shifen.com,发现第三步时shifen.com这个顶级域的域名服务器和baidu.com这个域的域名服务器是同一台主机

当拿到www.baidu.com的别名www.a.shifen.com的时候,我本来需要重新到com域查找shifen.com域的NS,但是因为这两个域在同一台NS上,所以直接向本机发起了。

Linux DNS服务介绍

后台进程:named

脚本:/etc/rc.d/init.d/named

使用端口:53(tcp,udp)

配置文件:/var/named/chroot/etc/named.conf

相关路径:/var/named/

安装bind服务器

yum install bind* (先配置yum源,yum源之前的实验已经配置完成了)

vim  /etc/yum.repos.d/base.repo
[RHEL6]
name= base
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
保持退出

BIND是一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件。它是互联网上最广泛使用的一种DNS服务器,BIND这个缩写来自于使用的第一个域,Berkeley Internet Name Domain

BIND软件包包括三个部分:

DNS服务器。这是一个叫做named的程序,代表name daemon的简写。它根据DNS协议标准的规定,响应收到的查询。   

DNS解析库(resolver library)。一个解析器是一个程序,通过发送请求到合适的服务器并且对服务器的响应做出合适的回应,来解析对一个域名的查询。一个解析库是程序组件的集合,可以在开发其它程序时使用,为这些程序提供域名解析的功能。

/etc/named.conf

named.conf是BIND使用的默认配置文件

在每一次named启动与挂起时都会被读取

一个简单的文本文件,其中记录的可以包括options(全局参数)、zone(区域定义)、access control lists(访问控制列表)等

常用的参数包括
directory:指定zone file的存放位置
forwarders:指定其上级域名服务器
allow-query:指定允许向其提交请求的客户
allow-transfer:指定允许复制zone数据的主机

根域

修改主配置文件/etc/named.conf
listen-on port 53 { 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文件中还要定义根区域。 (默认即可)

“.” 意思的根区域
IN 是internet记录
type是类型 根的类型是hint
file是根区域文件

指定正向解析的配置文件

修改DNS服务器的辅助区域配置文件/etc/named.rfc1912.zones

用//注销掉系统默认配置的zone信息所有行或者删除

在文件的尾部增加以下内容

配置正向解析zone文件

将范例复制到正向解析文件,-p可以将源文件的属性一起复制

TTL是生存期,单位是秒
$TTL是全局定义的
第二行 SOA记录,@取代在/etc/named.conf中指定的域名。
SOA段中的数字,分别为:序列号、刷新、重试、过期、生存期
序列号:序列号用于DNS数据库文件的版本控制。每当数据被改变,这个序列号就应该被增加。
刷新:从服务器向主服务器查询最新数据的间隔周期。每一次检查时从服务器的数据是否需要更改,则根据序列号来判别。
重试:一旦从服务器尝试连接主服务器失败,下一次查询主服务器的延迟时间。
过期:如果从服务器无法连通主服务器,则在经过此时间后,宣告其数据过期。
生存期:服务器回答 ‘无此域名’ 的间隔时间。
数字的默认单位为秒。否则:W= 周、D= 日、H= 小时、M= 分钟。
NS(name server):设置域名服务器的域名
IN 是internet记录

service  named  restart    重新启动DNS服务

service  iptables  stop     关闭防火墙

测试DNS解析

使用nslookup测试下。

经过简单的了解和配置DNS服务,应该知道DNS的工作原理了。

DNS分为Client和Server,Client扮演发问的角色,也就是问Server一个Domain Name,而Server必须要回答此Domain Name的真正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版本主要为bind 4.9.5+P1以前版本和bind 8.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。

转载于:https://blog.51cto.com/wt7315/1852795

Linux之DNS服务器搭建及常见DNS***和防御相关推荐

  1. Linux入门 21_企业dns服务器搭建之高速缓存dns搭建与dns正反向解析

    一.dns服务器部署 1.关于dns的名词解释 dns: domain name service(域名解析服务)是Internet上解决网上机器命名的一种系统.它作为将域名和IP地址相互映射的一个分布 ...

  2. Linux下的DNS服务器搭建

    Linux下的DNS服务器搭建 一.DNS介绍 1.dns域名系统 2.正向解析和反向解析 二.检查环境 三.搭建主DNS 1.安装dns相关包 2.设置服务开机自启 3.编辑DNS主配置文件 4.编 ...

  3. 企业dns服务器搭建

    企业dns服务器搭建 1关于dns的名词解释 2 dns服务的安装与启用 3 高速缓存dns 4 dns的正向解析 5 dns的反向解析 6 dns的双向解析 7 dns集群及更新 8 动态域名解析 ...

  4. linux ftp dns,Ubuntu下FTP与DNS服务器搭建教程PDF

    Linux服务器系统是Ubuntu 16.04 LTS,FTP软件选择的当然是vsftpd(very secure FTP daemon), Ubuntu装vsftpd还是很简单,一句命令就行: su ...

  5. linux:DNS服务器搭建(正向解析和反向解析)

    目录 dns域名解析过程 实验开始准备 实验:正向解析 实验:反向解析 dns域名解析过程 文字描述 1.如在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否 ...

  6. Linux随笔16-主从DNS服务搭建以及智能DNS服务搭建、基于CentOS7.6编译安装MySQL-5.7.32

    Contents 1. DNS主从服务器搭建 1.1. DNS简介 1.2. DNS主从服务搭建 1.2.1. 主DNS服务器配置 1.2.2. 从DNS服务器配置 1.2.3. Web服务器准备 1 ...

  7. CentOS下的DNS服务器搭建

    CentOS下的DNS服务器搭建 实验环境:VMware workstation 10         centos 6.4 说明: DNS是计算机域名系统或域名解析服务器(Domain Name S ...

  8. 企业 dns 服务器搭建

    企业 dns 服务器搭建 1. dns 的名词解释 2. dns 服务的安装与启用 3. 高速缓存 dns 4. dns 的正向解析 5. dns 的反向解析 6. dns 的双向解析 7. dns ...

  9. 内部DNS服务器搭建

    内部DNS服务器搭建 场景: 在没有域名的情况下,但是各项服务的ip,又不是固定不变,那么就需要一个内部的DNS域名 机器类型: Centos7 步骤 1. yum install bind bind ...

最新文章

  1. 移动端python开发_python前端之移动端库、框架及自动化和优化
  2. 功率曲线k值_什么叫离心泵的流量——功率曲线?它们之间有什么关系?
  3. acer清理工具 clear下载_免流量工具聚合下载,包含全部工具
  4. 安卓案例:表达式计算器
  5. coturn穿透服务器安装方法
  6. 前端框架VUE的基础使用
  7. springcloud 高可用的服务注册中心
  8. linux总线驱动程序,Linux驱动程序中的platform总线详解
  9. java计算机毕业设计计算机系教师教研科研管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  10. c语言数组可以强制转换,C语言数组访问及强制转换
  11. Python列表常用函数总结
  12. 在VUE框架的WEB网页端播放海康威视RTSP视频流完全方案
  13. Kettle8.2查询组件之数据库查询
  14. android 百度地图骑行路线颜色及宽度更改
  15. 基于FPGA的ADS1256讲解
  16. OULU-NPU数据说明
  17. 人世间有两种情感:一种叫喜欢,另一种叫爱
  18. 高新技术企业认定中涉及的领域有哪些?
  19. 【Flink系列2】时间窗口
  20. catia过载属性使用方法_catia属性自动提取

热门文章

  1. 说说你对binlog、redo log和undo log的理解
  2. java 好处_Java的优点
  3. python输出日志文件_python将print输出的信息保留到日志文件中
  4. angular中的依赖注入
  5. matlab缩小矩阵尺寸,Matlab中对矩阵使用矩阵尺寸的索引
  6. c++ 11新特性总结_JDK1.8新特性Stream和Collectors19个常用示例总结
  7. 基于物化视图优化_「PostgreSQL技巧」PostgreSQL中的物化视图与汇总表比较
  8. Swift初级入门【步步为营】
  9. android组合动画还原,Android - Fragment,View动画,组合动画,属性动画
  10. 数据结构实验之栈与队列五:下一较大值(一)