DNS服务基础

  • 1、画出TSL链路的通信图
  • 2、如何让浏览器识别自签的证书
  • 3、搭建DNS服务器
  • 4、熟悉DNSPOD的解析类型

画出TSL链路的通信图

TSL:transport layer security 传输层安全性 是很多小协议的组合
安全协议SSL:Secure Socket Layer安全套接层
  TSL:Transport Layer Secyrity
    1995:SSL 2.0 Netscape
    1996:SSL 3.0
    1999:TSL 1.0
    2006:TSL 1.1 IETF(Internet工程任务组)RFC 4346
    2008:TSL 1.2 当前使用
    2015:TLS 1.3
  功能:机密性,认证,完整性,重放保护
两阶段协议,分为握手阶段和应用阶段
  握手阶段(协商阶段);客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证,)并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成。
  应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的秘钥进行安全通信。
tcp协议的分层,tcp,udp
应用层的数据到达ssl/tls封装头部,就算被截获,也看不到数据,之能通过抓包是可以看到ip地址,
SSLd 握手过程:

在这里插入图片描述
第一步: 爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。

第二步: 鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。

第三步: 爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。

第四步: 鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。

第五步: 爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

也可以这么理解:
在这里插入图片描述
上层应用协议有httpd协议,telnet协议
上层用httpd协议,下层用tls协议加密,就叫https协议

https如何实现中间通讯安全:
  第一步, 客户端向服务器发消息,hello,
  第二步 服务器回复hello,会把自己的证书发到客户端(证书包含CA签名过的公钥,CA信息描述,有效期,淘宝的公钥)
  第三步, 客户端由于信任ca有ca公钥,就可以把数据解开,拿到淘宝公钥,一般客户端会在自己的浏览器生成一个对称秘钥,用淘宝的公钥加密,发给淘宝;
  第四步, 淘宝解开得到对称秘钥
在这里插入图片描述

如何让浏览器识别自签的证书

在连接开启 HTTPS 网站的时候,服务器会发送证书链,但光有证书链,客户端是不能完成证书校验的,必须有一张根证书才能完成签名认证,也就是客户端必须信任根证书才能构建信任基础,那么根证书在哪儿呢?

在 windows 平台中,微软有专门的根证书库。
在 Linux 平台中,软件和服务一般使用 NSS 根证书库。
在苹果平台中,也有专门的根证书库。

每个 CA 机构为了发展业务,需要申请将自己的根证书嵌入到各个平台中,如果申请被拒绝,CA 机构将无法开展业务。
在开源软件领域,NSS 根证书库是最流行的,所以很多软件和服务会使用 NSS 根证书库,原因何在?关键就在于透明性,NSS 在审核方面做的很严格,坚决杜绝非法 CA 根证书的存在。

对于普通用户和开发者来说,一般情况下接触不到可信任根证书库,但是有些情况下,也有可能希望更新本地的可信任根证书库,比如:

  (1 在开发环境中应该避免使用线上证书,因为证书和私钥一起保存,由于开发环境比较混乱,容易泄露私钥,从而带来安全风险。
在这种情况下,可以生成一张自签名证书,由于浏览器不信任该证书,访问网站的时候总会提示安全风险,为了避免频繁的提示,可以手动将证书添加到浏览器的可信任根证书库中。
  (2 企业内部构建一个私有 CA,然后给自己的业务签发证书,这种情况很常见,比如一些内部管理系统完全可以使用自签发的证书,减少证书申请成本,为避免员工访问的时候提示安全风险,可以将证书添加到浏览器的可信任根证书库中。

让浏览器识别自签的证书:

获取一张自签名证书
在这里插入图片描述
安装证书
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
就完成了,现在浏览器就可以识别证书

另一种方法,基于linux 平台
使用 certutil 命令行工具可以管理 NSS 证书安装:

yum install nss-tools列出安全数据库中的证书:

certutil -L -d certdir      

说明:
列出指定的目录certdir的所有证书,-d 后面接上证书库的目录 -L表示列出所有证书。添加证书到数据库中: certutil -A -n 111@111.com -t “p,p,p” -i mycert.crt -d certdir
说明:
  -A表示添加证书到数据库中
  -n 表示证书的呢称
  -t 表示设置信任属性
  -i 表示输入文件,即crt文件
  -d 后面接上证书库的目录

搭建DNS服务器

在这里插入图片描述
在这里插入图片描述
域名不区分大小.

由最顶层到下层,可以分成:根域、顶级域、二级域、子域.

Internet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织.

“.”全球有13个根(root)服务器

DNS 根域下面是顶级域,也由Internet 域名注册授权机构管理.共有3 种类型的顶级域.

组织域:采用3 个字符的代号,表示DNS 域中所包含的组织的主要功能或活动.比如com 为商业机构组织,edu 为教育机构组织,gov 为政府机构组织,mil 为军事机构组织,net 为网络机构组织,org 为非营利机构组织,int 为国际机构组织.

地址域:采用两个字符的国家或地区代号.如cn 为中国,kr 为韩国,us 为美国.

反向域:这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询).

对于顶级域的下级域,Internet 域名注册授权机构授权给Internet 的各种组织.当一个组织获得了对域名空间某一部分的授权后,该组织就负责命名所分配的域及其子域,包括域中的计算机和其他设备,并管理分配域中主机名与IP 地址的映射信息.

FQDN全限定域名: 通常由一个完全合格域名(FQDN)标识.FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域google 来说,其完全正式域名(FQDN)为google.com.

FQDN组成是: 主机名或别名加上域名组合而成,需要把一个fqdn,转换成ip地址才能进行找到机器进行访问,把域名转换成IP地址就叫名字解析,比如之前的/etc/hosts,分散式的名字解析方案,这个文件需要在每个电脑上维护,分散在每个主机上的,分布式的解决方案,
缺点: 就是如果一个主机的主机名或ip发生变化,那就要更新所有主机的文件,主机越多,维护量太大,所以有集中式解决方案,
专门找一个主机,搭建数据库,IP地址和主机名。
但是这样的主机,放在互联网,数据太庞大,性能差,放在中国美国等都i是问题,所以完全集中只适合中小型环境,互联网超大环境就需要另外的,既分散又集中的解决方案,就是 DNS服务

例如,google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示.

注意: 通常,FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z和减号(-).点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用.

DNS:Domain Name Service 引用层协议
  C/S,53/udp,53/tcp
BIND:Bekerley Internet Name Domain
  ISC(www.isc.org
本地名称解析配置文件:hosts
  /etc/hosts
  %WINDIR%/system32/drivers/etc/hosts
     10.0.0.1 www.xxx.com
    x.x.x.x www.xxxx.com

DNS服务是C/S结构, **
著名的dns服务软件: BIND,isc。org这个组织做了两个非常著名软件,dhcp和dns
hosts文件在windos也有
windows的变量%windir%,有些人可能不装在C盘

DNS怎么解决分布式的解决方案的
如上图:dns在每个域都会有一个dns服务器,每个dns服务器都会有一个数据库,存到文本文件里都会有IP地址和主机名字的对应,跟域的服务器是存的每个下面域的dns服务器地址。
第一次访问需要从跟域层层查找,如果第一次访问www.sh.xxx.com下面访问www.xxx.com,由于子域不知道父域是谁,所以还需要从跟域开始重新查找。

搭建一个DNS服务器
第一步 安装bind,启动服务

root@centos7 ~]#yum install bind -y
root@centos7 ~]#systemctl start bind

第二步 修改配置文件,建议把域的信息放在这个文件夹/etc/named.rfc1912.zone

  root@centos7 ~]#vim /eytc/named.rfc1912.zones
  添加一个域                                                   #区域就是你要创建域的对应信息
zone "exchange.com" IN {                             #zone ”你的域名“IN(照抄,等于internet记录
        type master;  										  #type 主从(master
        file "exchange.com.zone";   数据解析文件的文件名    #file"数据库文件名"
};

第三步 修改服务配置文件

 root@centos7 ~]#/vim     etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };  注释掉
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
//      allow-query     { localhost; };  注释掉

第四步 创建解析文件

[root@centos7 ~]vi  /var/named/exchange.com.zone 

$TTL 1D
@ IN SOA dns1.exchange.com.   admin.exchange.com.  (1 1D 2H 3D 1H)    #sos起始授权记录必须有,记录谁是主服务器,邮箱地址     (版本号1,同步时间一天,同步失败2小时重试,失败三天从服务器失效,缓存有效期1小时)
        NS dns1    有两个服务器 1,2 
dns1 A 192.168.30.155   主服务器地址
websrv A 192.168.30.243	web服务器1
www CNAME websrv    别名
#保存之后
还需要改变文件的属性,所属组和权限
[root@centos7 ~]chgrp named /var/named/exchange.com.zone
[root@centos7 ~]chmod 640 /var/named/exchange.com.zone

最重要的记录。soa记录,记录的内容是此服务器。这个域里面谁是主服务器,
还有谁是这个域的管理员,管理员的邮箱联系方式。

第五步 检查配置文件是否正确,启动服务

     root@centos7 ~]named-checkconf
     root@centos7 ~] named-checkzone "exchange.com.zone" /var/named/exchange.com.zone 
 无问题,启动服务
      root@centos7 ~]service bind   start

第六步 测试是否成功

   root@centos7 ~]dig  -t  A   www.exchange.com  @Server   正向解析

熟悉DNSPOD的解析类型

资源记录:
区域解析库: 由众多RR组成:
  资源记录:RR resource record 资源记录
  记录类型:A,AAAA,PTR,SOA,NS,CNAME,MX
SOA: Start Of Authority ,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录

A: inertnet Address 记录是把名字解析成ipv4地址。正向解析 FQDN–>IP
  如:
  www.dns.la转到IP 116.255.202.1
  web.dns.la 转到IP 116.255.202.11
  mail.dns.la 转到IP 116.255.202.111

AAAA: FQDN -->IPV6 是把名字解析成ipv6地址
  该记录是将域名解析到一个指定的IPV6的IP上。

PTR: pointer 反向解析 IP–>FQDN
NS: Name Server 记录是表明当前域的dns服务器(整个exchangeideas.cn的域谁是dns服务器
  用来指定该域名由哪个DNS服务器来进行解析,可以把一个域名的不同二级域名分别指向到不同的DNS系统来解析。

cname: Canonical Name 别名记录 www一般都是别名(淘宝的真名就是cname后面的
  可以将注册的不同域名都转到一个域名记录上,由这个域名记录统一解析管理,与A记录不同的是,CNAME别名记录设置的可以是一个域名的描述而不一定是IP地址。

mx: Mail exchanger 邮件,邮件交换器
  用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操作控制所有的邮箱设置。

隐/显性URL记录: 将一个域名指向另外一个已经存在的站点,就需要添加URL记录 隐性转发:用的是iframe框架技术,非重定向技术;效果为浏览器地址栏输入http://a.com 回车,打开网站内容是目标地址http://www.dnspod.cn 的网站内容,但地址栏显示当前地址http://a.com 。如果目标地址不允许被嵌套时,则不能使用隐性转发(如QQ空间,不能使用隐性转发)。 显性转发:用的是301重定向技术;效果为浏览器地址栏输入http://a.com 回车,打开网站内容是目标地址http://www.dnspod.cn 的网站内容,且地址栏显示目标地址http://www.dnspod.cn 。
  如果您没有一台独立的服务器(也就是没有一个独立的IP地址)或者您还有一个域名B,您想访问A域名时访问到B域名的内容,这时您就可以通过URL转发来实现。
url转发可以转发到某一个目录下,甚至某一个文件上。而cname是不可以,这就是url转发和cname的主要区别所在。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值