Linux之DNS服务器搭建及常见DNS攻击和防御

简介:

DNSDomain 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 ,负责亚太地区

wKioL1fZDBSS8su8AAEvKjJKipw092.png


根域: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 这个工具详细来说一下解析步骤:

wKiom1fZDDLSjMNcAAAuHMoWFwU521.png

从上图我们可以看到:

          第一行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工具会在本地计算机做迭代,然后记录查询的过程。

wKioL1fZDFGysfGmAAAhHR2ll4o229.png


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

wKioL1fZDHySrH77AABrQJOtYtk761.png


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

wKiom1fZDJehooUEAACG1NhAKkY899.png



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

wKioL1fZDLDT-XBAAAA3tFMdPfU856.png



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

wKioL1fZDMzBxyRsAAA_2uZNL0w217.png



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

wKiom1fZDPXjMLSSAAB76MLZH1o918.png



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

 

Linux DNS服务介绍

后台进程:named

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

使用端口:53tcpudp

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

相关路径:/var/named/

 

安装bind服务器

yum install bind* (先配置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     
保持退出


wKioL1fZDSPBTGJwAADCmnGVdHo310.png

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

 

BIND软件包包括三个部分:

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

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

 

/etc/named.conf

named.confBIND使用的默认配置文件

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

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

wKiom1fZDUWgU_vVAACUGnODSvE123.png



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




根域

wKioL1fZDWrRhkfmAAAPYxKDOcE686.png


1
2
3
4
5
6
7
修改主配置文件/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


wKiom1fZDYqSVRnvAACCeHEDFYA342.png





区域配置(zone 

zone 语句作用是定义DNS 区域,在此语句中可定义DNS 区域选项

zone区域设置,第一步,设置根区域

DNS服务器处理递归查询时,如果本地区域文件不能进行查询的解析,就会转到根DNS服务器查询,所以在主配置文件named.conf文件中还要定义根区域。 默认即可

wKiom1fZDbzSbujWAAAPGZuEWK8635.png

 

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


 

 

 

指定正向解析的配置文件

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

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

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

wKiom1fZDdry9-m8AAAbASO4tqM273.png


配置正向解析zone文件

wKioL1fZDgGhlvSIAAAR5WSqPNI209.png

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


wKiom1fZDgKDzIrNAAA64ZS1kds883.png

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(name server):设置域名服务器的域名
IN  是internet记录


 

 

service  named  restart    重新启动DNS服务

service  iptables  stop     关闭防火墙

 

测试DNS解析


使用nslookup测试下。

wKiom1fZDiXStpuoAAAeCsiZ_Ps380.png


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

 DNS分为ClientServerClient扮演发问的角色,也就是问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的端口号也是162进制,这样,与DNSID号相结合,号码的命中率就是1/4294967296(232次方)

 

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.使用DNSSECDNSSEC是替代DNS的更好选择,它使用的是数字前面DNS记录来确保查询响应的有效性,DNSSEC还没有广泛运用,但是已被公认为是DNS的未来方向,也正是如此,美国国防部已经要求所有MILGOV域名都必须开始使用DNSSEC




本文转自 wt7315 51CTO博客,原文链接:http://blog.51cto.com/wt7315/1852795

相关文章
|
3月前
|
存储 缓存 网络协议
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
|
2月前
|
域名解析 存储 网络协议
域名解析的终极指南:从基础到进阶,彻底搞懂 DNS 记录
域名解析是网站运行的基础,正确配置DNS记录至关重要。本文从基础到进阶全面解析DNS知识,涵盖A、AAAA、CNAME、MX、TXT、CAA等常见记录类型及其应用场景。通过学习,你将了解DNS的工作原理,掌握如何优化域名配置,确保网站与邮件服务高效运行。无论搭建个人博客还是企业官网,本文都能助你轻松搞定域名解析!
464 0
|
3月前
|
存储 缓存 负载均衡
阿里云服务器实例选择指南:热门实例性能、适用场景解析对比参考
2025年,在阿里云的活动中,主售的云服务器实例规格除了轻量应用服务器之外,还有经济型e、通用算力型u1、计算型c8i、通用型g8i、计算型c7、计算型c8y、通用型g7、通用型g8y、内存型r7、内存型r8y等,以满足不同用户的需求。然而,面对众多实例规格,用户往往感到困惑,不知道如何选择。本文旨在全面解析阿里云服务器实例的各种类型,包括经济型、通用算力型、计算型、通用型和内存型等,以供参考和选择。
|
3月前
|
域名解析 存储 缓存
深入学习 DNS 域名解析
在平时工作中相信大家都离不开 DNS 解析,因为 DNS 解析是互联网访问的第一步,无论是使用笔记本浏览器访问网络还是打开手机APP的时候,访问网络资源的第一步必然要经过DNS解析流程。
|
1月前
|
网络协议 安全 Linux
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
阿里云服务器国际站dns服务器不可用怎么办?dns可以随便改吗?
|
3月前
|
存储 机器学习/深度学习 应用服务中间件
阿里云服务器架构解析:从X86到高性能计算、异构计算等不同架构性能、适用场景及选择参考
当我们准备选购阿里云服务器时,阿里云提供了X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等多种架构,每种架构都有其独特的特点和适用场景。本文将详细解析这些架构的区别,探讨它们的主要特点和适用场景,并为用户提供选择云服务器架构的全面指南。
542 18
|
3月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
3月前
|
存储 弹性计算 安全
阿里云服务器ECS通用型规格族解析:实例规格、性能基准与场景化应用指南
作为ECS产品矩阵中的核心序列,通用型规格族以均衡的计算、内存、网络和存储性能著称,覆盖从基础应用到高性能计算的广泛场景。通用型规格族属于独享型云服务器,实例采用固定CPU调度模式,实例的每个CPU绑定到一个物理CPU超线程,实例间无CPU资源争抢,实例计算性能稳定且有严格的SLA保证,在性能上会更加稳定,高负载情况下也不会出现资源争夺现象。本文将深度解析阿里云ECS通用型规格族的技术架构、实例规格特性、最新价格政策及典型应用场景,为云计算选型提供参考。
|
3月前
|
存储 机器学习/深度学习 人工智能
阿里云服务器第八代通用型g8i实例评测:性能与适用场景解析
阿里云服务器通用型g8i实例怎么样?g8i实例采用CIPU+飞天技术架构,并搭载最新的Intel 第五代至强可扩展处理器(代号EMR),不仅性能得到大幅提升,同时还拥有AMX加持的AI能力增强,以及全球范围内率先支持的TDX机密虚拟机能力。这些特性使得g8i实例在AI增强和全面安全防护两大方面表现出色,尤其适用于在线音视频及AI相关应用。本文将深入探讨g8i实例的产品特性、优势、适用场景及规格族,以帮助您更好地了解这款产品,以供参考和选择。
|
4月前
|
域名解析 弹性计算 负载均衡
新手上云教程参考:阿里云服务器租用、域名注册、备案及域名解析流程图文教程
对于想要在阿里云上搭建网站或应用的用户来说,购买阿里云服务器和注册域名,绑定以及备案的流程至关重要。本文将以图文形式为您介绍阿里云服务器购买、域名注册、备案及绑定的全流程,以供参考,帮助用户轻松上手。

相关产品

  • 云解析DNS