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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

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

相关文章
|
11天前
|
SQL 安全 网络安全
网络安全的护城河:漏洞防御与加密技术的深度解析
【10月更文挑战第37天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业资产的坚固堡垒。本文将深入探讨网络安全的两大核心要素——安全漏洞和加密技术,以及如何通过提升安全意识来强化这道防线。文章旨在揭示网络攻防战的复杂性,并引导读者构建更为稳固的安全体系。
27 1
|
20天前
|
SQL 安全 测试技术
网络安全的盾牌与剑——漏洞防御与加密技术解析
【10月更文挑战第28天】 在数字时代的浪潮中,网络空间安全成为我们不可忽视的战场。本文将深入探讨网络安全的核心问题,包括常见的网络安全漏洞、先进的加密技术以及提升个人和组织的安全意识。通过实际案例分析和代码示例,我们将揭示黑客如何利用漏洞进行攻击,展示如何使用加密技术保护数据,并强调培养网络安全意识的重要性。让我们一同揭开网络安全的神秘面纱,为打造更加坚固的数字防线做好准备。
39 3
|
7天前
|
安全 算法 网络安全
网络安全的盾牌与剑:漏洞防御与加密技术解析
【10月更文挑战第42天】在数字时代的海洋中,网络安全是守护数据宝藏的坚固盾牌和锋利之剑。本文将揭示网络安全的两大支柱——漏洞防御和加密技术,通过深入浅出的方式,带你了解如何发现并堵塞安全漏洞,以及如何使用加密技术保护信息不被窃取。我们将一起探索网络安全的奥秘,让你成为信息时代的智者和守护者。
16 6
|
5天前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
14天前
|
安全 算法 Linux
Linux 服务器还有漏洞?建议使用 OpenVAS 日常检查!
在数字化时代,Linux 服务器的安全至关重要。OpenVAS 是一款优秀的开源漏洞扫描工具,可以帮助及时发现并修复服务器中的安全隐患。本文将介绍 OpenVAS 的主要功能、使用方法及应对漏洞的措施,帮助用户加强服务器安全管理,确保企业数字化安全。
35 7
|
16天前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
19天前
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
53 4
|
24天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
20天前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
22天前
|
安全 前端开发 Java
Web安全进阶:XSS与CSRF攻击防御策略深度解析
【10月更文挑战第26天】Web安全是现代软件开发的重要领域,本文深入探讨了XSS和CSRF两种常见攻击的原理及防御策略。针对XSS,介绍了输入验证与转义、使用CSP、WAF、HTTP-only Cookie和代码审查等方法。对于CSRF,提出了启用CSRF保护、设置CSRF Token、使用HTTPS、二次验证和用户教育等措施。通过这些策略,开发者可以构建更安全的Web应用。
61 4

相关产品

  • 云解析DNS
  • 下一篇
    无影云桌面