Linux学习(第九周)

第九周学习内容:加密算法、DNS与Bind

第九周作业:

1、简述常见加密算法及常见加密算法原理。

      密钥算法和协议主要有对称加密;公钥加密;单向加密和密钥交换。

      对称加密:加密和解密使用同一把密钥,有DES、3DES、AES、Blowfish、Twofish、IDEA等等。特点除了使用同一把密钥外,还有会将原始数据分割成为固定大小的块,逐个进行加密。缺点有密钥过多和分发困难。

      公钥加密:密钥分为公钥和私钥,首先通过工具生成私钥,再由私钥提取出公钥。公钥交给对方,私钥留给自己,并保证其私密性,所有用私钥加密的数据只能使用对应的公钥才能解密,反之亦然。主要作用有数字签名、密钥交换,很少将其直接应用于加密数据。数字签名:用私钥加密一段从数据中提取的特征码发给对方,对方用与其配套的公钥进行解密,这样就能确认私钥使用者的身份了,然后对传输过来的数据也做提取特征码操作与解密出的特征码进行比较,如果一致则表示数据完整性也得到了保障。算法有RSA、DSA、ELGamal等。

      单向加密:只能加密,不能解密,是一个单向操作的过程,前面提到的提取数据特征码就是单向加密。特点是不等长输入等长输出,还具有雪崩效应,数据中一点的变化,会改变整个特征码。主要功能就是验证数据完整性。算法有MD5、SHA1、SHA224、SHA256、SHA384、SHA512等。

      密钥交换:将前面三种加密方式结合起来,安全可靠有效地共享密钥的一种行为。最常用的密钥交换流程:(1)A计算出数据特征码;(2)A使用私钥加密特征码并将其附在真是数据之后;(3)A生成一对对称密钥,加密整段文件,包括数据和加密后的特征码;(4)A使用B事先发来的公钥加密自己生成的对称密钥将其附在整段文件之后并将其发送给B;(5)B使用私钥先解密整段最后的对称密钥;(6)B使用对称密钥解密整段文件;(7)B用A发来的公钥解密特征码,如果能解密则验证了A的身份(8)B自行计算数据特征码,并拿它与解密出的特征码作比较,如果一致则验证了数据的完整性。接下去AB之间就可以基于这对对称密钥进行通信了。

      密钥交换简单图解:

      主机A:

      image.png

      主机B:

      image.png

2、搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟。

      自建CA是一种私有CA,只有在私有范围内通信时有效,大方向分两大块一是CA自己的配置,二是用户主机的证书生成和签名。

      (1)CA主机生成私钥:

      image.png

      (2)CA主机生成自签证书:

      image.png

      (3)创建几个文件,并为第一张自签证书给上编号:

      image.png

      (4)用户主机生成私钥:

      image.png

      (5)用户主机生成证书:

      image.png

      (6)发送给CA,并让其签名:

      image.png

      由于公司名字大小写出错,第一次签名失败:

      image.png

      公司名字修好后,签名成功:

      image.png

      (7)nginx简单配置一下,主要是把证书和私钥指向签名证书和生成的私钥:

      image.png

      (8)成功访问https主页:

      image.png

3、简述DNS服务器原理,并搭建主-辅服务器。

       DNS:域名地址解析服务,可以把主机名和域名(FQDN)转换为主机可是别的网络地址,也就是IP地址。DNS将主机名做了层次划分,从最顶层开始依次往下:根域(.)——顶级域(.com、.org、.net、.gov等)和国家域(.cn、.hk、.tw、.uk等)——二级域(个人或公司可自己起名,需要注册并且不可重复)。DNS服务是一种分布式数据库系统,他会将本来一个非常庞大的数据库分不到多台服务器上实现,根据前面所说的层次划分,根域服务器只管理顶级域和国家域,而顶级域和国家域的服务器只管理属于其下面的二级域,而二级域服务器也只管理其旗下的主机,这样每个服务器的负担就笑了,当有某台具体主机发生更新时,只要更新与其相关的DNS服务器即可,无需惊动最上层的根域服务器。当一个用户想要访问某主机时,通过系统设置好的DNS服务器地址找到服务器,若该服务器也不知道该主机的IP地址,则它会直接向根域服务器发起请求,请求其帮忙解析。然而就如前面所说的,根域只管顶级域和国家域,他也是不知道具体某台主机的IP地址的,但他会把关于这台主机的顶级域或国家域信息告知请求者,这样请求者就又可以向顶级域或国家域发起请求了,以此类推,最终就能通过其他DNS服务器的帮助得知某主机的具体IP地址,在此过程中用户向DNS服务器发起的查询叫做递归查询,而DNS服务器向根域、顶级域服务器发起的查询叫做迭代查询。从域名到IP地址的解析叫正向解析,反之,从IP地址到域名的解析被称为反向解析,是完全不同的层级结构,根据IP地址的一段一段进行分层,根域叫做in-addr.arpa,比起正向解析复杂很多,所以在很长一段时间内是没有反向解析的。一次完整的DNS查询请求过程:客户端——本地host——本地缓存——指向的DNS服务器——指向的DNS服务器缓存——迭代查询找根域服务器——迭代查询找顶级域服务器——迭代查询找二级域服务器。

      区域数据库文件:每一行一个资源记录(RR),根据标记的资源类型不同有各种分类:SOA(起始授权记录)一个区域只能有一个,且必须放在第一条,标记了该区域的基础信息;NS(域名服务记录)一个区域可以有多条,具体某台DNS服务器的名字就是NS;A(地址记录)从FQDN解析为IPV4地址的记录;AAAA(地址记录)从FQDN解析为IPV6地址的记录;CNAME(别名记录)可以将多个主机设为同一个别名,访问此别名即可提供多台主机的服务;PTR(方向记录)将IP地址方向解析为FQDN的记录;MX(邮件交换器)专门用来标记邮件服务器的记录,记录最后需要加上优先级。资源记录的具体格式:名字+[TTL]+IN+资源类型+值。其中“IN”是关键字,“TTL”可有可无。而每种资源所对应的名字和值也更不相同。

      主-备DNS服务器:备DNS服务器会有主DNS服务器的数据库副本,且只能同步,不能手动修改,只要主服务器发生更改,备份服务器会同步更新,靠的是序列号。所以在配置主DNS服务器时,序列号非常重要,要养成修改完一次更改一次的习惯,否则会造成不同步的情况。

      Bind:bind是DNS的一种具体实现,当bind运行起来后进程名叫named。使用bind搭建主-辅服务器步骤如下:

      (1)一般主机默认只安装了bind-libs和bind-utils,即使用DNS服务所需要的文件,而并没有安装bind程序,这是作为DNS服务器所需要的程序,所以需要先安装bind:

      image.png

      (2)定义区域,编辑配置文件/etc/named.rfc1912.zones文件,主服务器type为master,辅服务器type为slave,并且要指master服务器:

      image.png

      image.png

      (3)在主服务器上定义区域数据文件:

      image.png

      (4)主备服务器上都启用DNS服务,并将某台主机的DNS服务器设置为这两台主备服务器,解析成功。

      image.png

 4、搭建并实现智能DNS。

      bind view:只能DNS的实现,同一个主机名,来自不同的用户的请求,可以得到不同的地址,在现实生产环境中,不同运营商的网络对同一域名的访问可以拿到完全不同的地址,非常实用。

      (1)编辑配置文件/etc/named.conf:

      image.png

      (2)再编辑两个区域数据文件:

      image.png

      image.png

      (3)语法检查没有问题后,就可以重启服务,智能DNS就完成了。

      image.png

      

      

      

      


猜你喜欢

转载自blog.51cto.com/13762416/2324923