这是我参与8月更文挑战的第16天,活动详情查看:8月更文挑战
书接上回,看一看如何设置域名解析以及如何提升DNS的安全性
记录类型与设置
-
A: Address记录,域名对应的IPV4地址。这是DNS设置中最重要的信息。
- 一个IP地址可以对应多个域名,多个域名可以解析到同一个IP地址。
- 一个域名也可以对应多个IP地址,这样可以增加系统冗余,提高稳定性。
-
AAAA: IPV6地址记录,返回查询域名对应的IPV6地址,一个IP地址可以对应多个域名,多个域名可以解析到同一个IP地址。
-
CNAME:规范名称记录(Canonical Name),可以理解为别名,当前域名对应的另一个域名,它会返回另一个域名,即当前查询的域名到另一个域名的映射。
- CNAME的引入,增强了域名的灵活性,实现了域名间的跳转;
- 简化了域名管理,比如多个域名都解析到同一个IP,那么如果IP变了,就需要把所有域名记录都更改,但有了CNAME后,把其他域名指向它,只需要修改它一个域名的IP即可;
- CNAME不能指向IP地址;
- 使用CNAME后,在DNS查询时,会多一条查询请求,会增大系统时延;
- 域名一旦设置CNAME,为了防止冲突,就不能再设置A记录了
- CNANE还可用于接入CDN服务;
-
NS:域名服务器记录(Name Server),指定特定的DNS服务器去解析域名。它会返回保存下一级域名记录的服务器IP地址。
- NS记录只能设置为DNS域名,不能设置为IP地址。
- 为了服务的安全可靠,一般会有至少两条NS记录,这样就增加了系统冗余,提高了稳定性。
- NS 记录不能指向CNAME记录。
-
MX:邮件交换记录(Mail exchange),它返回的时接收电子邮件的服务器地址。当我们用email发邮件时,DNS会根据收件人邮箱地址的后缀来定位邮件服务器,比如xxx@gmail.com,邮件系统会对"gmail.com”进行DNS的MX记录解析。
- 记录值可以是域名,也可以是IP,根据邮箱服务提供商的设置
- 一个域名可以对应多个MX记录,并按照优先级排序,只有在高优先级的邮箱服务不可用时,才会尝试低优先级服务器,“优先级”的数字越小表示级别越高。
- MX记录不能指向CNAME记录
-
TXT:文本记录,为host或者域名设置特定的说明,一般用来做校验
-
关于TTL:生存时间Time to Live。这个值关乎到查询的频率。指示LDNS本地DNS服务器缓存一个查询结果的时间,单位是秒。
-
对于浏览器和本机上的DNS缓存,是不受这个时间限制的;
-
这个值如果设置过小,则会导致缓存时间过短,从而resolver发起的查询次数就会很多;这个值;
-
这个值如果设置大了,可能会导致DNS记录更新不及时,从而让客户端访问失败;
-
DNS安全
DNS作为我们上网的第一步,如果第一步就迈错了,或者迈不出去的话,后面也就无从谈起。
常见的几种DNS攻击:
-
DDOS:拒绝服务攻击,通过僵尸网络发送海量请求导致网络带宽或服务器资源耗尽而无法传送正常请求。
- 漏洞在于难以分辨攻击流量和正常流量,因为僵尸网络也都是合法的设备。
- 攻击可以分为应用层,传输层;如DNS放大(针对第 3/4 层),HTTP洪水(针对第7层)
- 识别DDOS的几个方式:发起请求的用户都有某个共同特征,例如设备类型、地理位置或 Web 浏览器版本;一天中固定时段或有规律的请求激增;对单个页面或子域名的请求激增;
- 防护:通过DNS防火墙,限制DNS流量,anycast路由方案来分化攻击,关于anycast的介绍可以参见《DNS的秘密(3) Anycast任播》;黑洞路由方案将所有请求都一起转移到空路由或黑洞并丢弃;
-
DNS劫持:通过修改CNAME或NS记录,修改路由等手段,最终稿将目标网站域名解析到错误的地址。
- 漏洞在于黑客通过病毒入侵或系统漏洞,对DNS解析记录进行直接修改,将其导向错误地址;
- 当然,有的时候修改解析地址,并不是被劫持,而是出于某种目的故意为之,比如2014年土耳其的封锁twitter事件,大家可以去搜一下。
- 解决方案:作为用户可以更换DNS服务器并及时杀毒,作为DNS服务商则可通过引入DNSSEC签名机制,及时更新系统安全补丁。
DNSSEC
域名系统安全扩展(DNS Security Extensions),时ICANN一直在推广的认证机制。
它是通过数字签名来保证DNS应答报文的真实性和完整性,可有效防止DNS欺骗和缓存污染等攻击。原理为非对称加密算法+证书链:
- 权威域名服务器用自己的私有密钥对域名相关记录进行签名,Resolver用权威服务器的公钥对收到的应答进行验证。如果验证失败,表明这一报文可能是假冒的,或者在传输过程、缓存过程中被篡改了。
- DNSSEC使用分层数字签名策略。和我们在HTTPS系列中提到的证书链是一个原理,根 DNS 服务器将为 .net 域名服务器做数字签名,然后 .net 域名服务器再为 163.net的权威性域名服务器签名。
- 根DNS服务器的域名信息则由ICANN自身对其签名,而有意思的是,这回是真人签名,下图是2010年ICANN第一次根密钥生成仪式上的签名记录:
DNS over TLS
我们知道DNS报文采用明文进行传输,这就很容易被黑客嗅探和劫持,而DNS over TLS则利用TLS的握手和加密特性,对DNS请求和响应进行了加密和认证,同时也不再使用UDP,而是改为TCP进行传输来承载更大的数据包。
感谢阅读,如有不准确和错误之处请留言指正,我会立即修正,感谢!
总结不易,请勿私自转载,否则别怪老大爷不客气
欢迎喜欢技术的小伙伴和我交流,微信1296386616
参考资料:
《添加解析记录》 阿里云 help.aliyun.com/knowledge_d…
《重启DNS根密钥服务器的七个人》 赛尔网络 www.cernet.com/wangluoyanj…
《DNSSEC:保护 DNS 的安全》 David Conrad www.icann.org/zh/system/f…
《A记录、CNAME、MX记录、NS记录的区别和联系》 FeelTouch www.huaweicloud.com/articles/59…
《DNS 安全问题研究》 郭巨侠 zhuanlan.zhihu.com/p/345791057