第九周博客作业

1、简述常见加密算法及常见加密算法原理,最好使用图例解说
2、搭建apache或者nginx并使用自签证书实现https访问,自签名证书的域名自拟
3、简述DNS服务器原理,并搭建主-辅服务器
4、搭建并实现智能DNS

1、简述常见加密算法及常见加密算法原理,最好使用图例解说

(1)加密算法

  • 安全的目标:
    • 保证数据的保密性;
    • 保证数据的完整性, 分为数据完整性和系统完整性;
    • 保证数据的可用性;
  • 历史
    • 传统加密方法:替代加密方法、置换加密方法
    • 现代加密方法:现代块加密方法

(2)常见的密钥加密算法

  • 大体可以分为三类:对称加密、非对称加密、单向加密。

(3)对称加密

对称加密定义:

  • 需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。

对称加密的优缺点:

  • 对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
  • 对称加密算法的缺点是产生的密钥过多和密钥分发困难;

常用算法:

  • 在对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。

加密过程:1

(4)非对称加密

非对称加密定义:

  • 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
    • 公钥:从私钥中提取产生;可公开给所有人;pubkey
    • 私钥:通过工具创建,使用者自己留存,必须保证其私密性;secret key;
  • 特点:用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然;
  • 用途:
    • 数字签名:主要在于让接收方确认发送方的身份;
    • 密钥交换:发送方用对方公钥加密一个对称密钥,并发送给对方;
    • 数据加密

常用算法:

  • RSA, DSA, ELGamal,DSS数字签名标准 只能签名,DSA数字签名算法 既能签名又能解密

加密过程:5

23

(5)单向加密

单向加密

  • 单向加密算法常用于提取数据指纹,验证数据的完整性。发送者将明文通过单向加密算法加密生成定长的密文串,然后传递给接收方。接收方在收到加密的报文后进行解密,将解密获取到的明文使用相同的单向加密算法进行加密,得出加密后的密文串。随后将之与发送者发送过来的密文串进行对比,若发送前和发送后的密文串相一致,则说明传输过程中数据没有损坏;若不一致,说明传输过程中数据丢失了。单向加密算法只能用于对数据的加密,无法被解密,其特点为定长输出、雪崩效应。

常见的算法包括:

  • MD5、sha1、sha224等等,其常见用途包括:数字摘要、数字签名等等。

(6)密钥交换

密钥交换

  • 通常是指双方通过交换密钥来实现数据加密和解密,常见的密钥交换方式有下面两种:
    • 1)、公钥加密,将公钥加密后通过网络传输到对方进行解密,这种方式缺点在于具有很大的可能性被拦截破解,因此不常用;
    • 2)、Diffie-Hellman,DH算法是一种密钥交换算法,其既不用于加密,也不产生数字签名。DH算法的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。DH算法通过双方共有的参数、私有参数和算法信息来进行加密,然后双方将计算后的结果进行交换,交换完成后再和属于自己私有的参数进行特殊算法,经过双方计算后的结果是相同的,此结果即为密钥。

过程:

公钥加密:
UserA:生成两个大素数:p,g
UserB:生成两个大素数:p,g
此时生成的数不需要保密,其他人知道也无妨;
A:自己生成一个数x,不让其他任何人知道;包括B;
B:自己生成一个数y,不让其他任何人知道,包括A;
A:将 p^x%g 的结果发送给B;
B:将 p^y%g 的结果发送给A;
A:收到p^y%g,将收到的数值取x次方,得到(p^y%g)^x=( p^xy)%g
B: 收到p^x%g,将收到的数值取y次方,得到(p^x%g)^y=(p^xy)%g
此时的(p^xy)%g 就是双方通信的密钥了;

(7)公钥基础设施

PKI:Public KeyInfrastructure,公钥基础设施;由四个组件组成

  • 签证机构:CA
  • 注册机构:RA
  • 证书吊销列表:CRL
  • 证书存取库:

证书的获取:

  • CA给某机构颁发了证书,提取证书的特征码,使用自己的私钥加密证书的特征码,用户在获取到机构的证书后向CA求证机构证书的可靠性,若能使用CA的公钥解密特征码,则说明该特征码的确是由CA加密的;解密后的特征码,与用户自行对证书提取的特征码进行对比,对比成功则说明该证书的确是由CA颁发的;但用户的CA身份的确认的话,靠的是信任链,即操作系统内置信任CA等方式实现;
  • x.509 定义了证书的结构以及认证协议标准; 是一种证书规范
    • 版本号;
    • 序列号;
    • 签名算法ID
    • 发行者名称
    • 有效期限
    • 主体名称(证书拥有者名称)
    • 主体公钥
    • 发行者的唯一标识(CA)
    • 主体的唯一标识
    • 扩展信息:
    • 发行者签名

安全可靠地获得对方的公钥:

  • 1)、 用户A给B发送一条信息,把你的证书发我一份;
  • 2)、 A在收到B发送过的证书后,查看证书中包含的“发行者名称”;
  • 3)、 在本地存储的公钥中去查找与“发行者名称”对应的publick Key解密证书中发来的“发行者签名”,若能成功解密,则该证书的确是由可信任的机构签发的,确认了“签发者”的身份;得到证书的特征码;
  • 4)、 根据“签名算法ID”中所描述的方法对证书进行单向加密后与解密出来的特征码进行比对,若一致则该证书是可靠的;
    B验证A的身份也是一个相同的过程;7

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

首先准备两个虚拟机 一个是CA服务器,另一个是http服务器。

(1) 在CA服务器

生成私钥; 一般的ca目录是/etc/pki/CA/private

[root@ns1 ~]# cd /etc/pki/CA/private

[root@ns1 private]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

生成自签证书;

[root@ns1 private]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655 #自动抽取公钥并存放,有效时长3655天

-new:生成新证书签署请求;

-x509:生成自签格式证书,专用于创建私有CA时使用 ;

-key:生成请求时用到的私有文件路径;

-out:生成的请求文件路径;如果自签操作将直接生成签署过的证书;

-days:证书的有效时长,单位是day;6

为CA提供所需的目录及文件;

[root@ns1 ~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts} #创建三个目录

[root@ns1 ~]# touch /etc/pki/CA/{serial,index.txt} #创建三个文件

[root@ns1 ~]# echo 01 > /etc/pki/CA/serial #指明第一个ca证书的序列号

(2)在http服务器

安装apache和OpenSSL模块

[root@NS2 ~]#yum install httpd

[root@NS2 ~]#yum install openssl_mod ssl -y

主机生成私钥

[root@NS2 ~]# mkdir /etc/httpd/ssl #创建ssl目录

[root@NS2 ~]# cd /etc/httpd/ssl #切换目录

[root@NS2 ssl ]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) #生成私钥

生成证书签署请求

[root@NS2 ssl ]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365

将请求通过可靠方式发送给CA主机;

[root@NS2 ssl]# scp httpd.csr root@172.16.15.14:/ tmp/ #远程传输到ca服务器

(3)在CA服务器

签署证书

[root@ns1 ~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

查看证书中的信息:

[root@ns1 ~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject

8

[root@ns1 ~]# scp /etc/pki/CA/certs/httpd.crt root@172.16.15.11:/etc/httpd/ssl/ #远程传输到httpd服务器

(4)在http服务器

配置ssl文件:填入.crt和.key文件所在目录

[root@NS2 ~]# vim /etc/httpd/conf.d/ssl.conf #编辑ssl配置文件

9

启动httpd服务

[root@NS2 ~]# systemctl start httpd

浏览器打开https://”httpd服务器ip地址”

10

没有安装scp传输命令,要安装openssh-clients这个包才行。

yum install openssh-clients

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

(1)什么是域名

  • 由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。
  • 通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。 Internet 的顶级域名由 Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为 Internet的每一台主机分配唯一的 IP 地址。
  • 域名由两组或两组以上的ASCII或各国语言字符构成,各组字符间由点号分隔开,最右边的字符组称为顶级域名或一级域名、倒数第二组称为二级域名、倒数第三组称为三级域名、以此类推。顶级域名又分为三类:一是国家和地区顶级域名,目前200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,日本是jp等;二是国际顶级域名),例如表示工商企业的 .com,表示网络提供商的 .net,表示非盈利组织的 .org等。三是新顶级域名如通用的.xyz、代表“高端”的.top、代表“红色”的.red、代表“人”的.men等一千多种 。
  • 顶级域
    * 组织域:.com, .net, .org, .gov, .edu, .mil
    * 国家域:.iq, .tw, .hk, .jp, .cn, …16

    • FQDN(Full Qualified Domain Name)完全限定域名 例如:www.baidu.c17

(2 )DNS

  • DNS,就是Domain Name System的缩写,翻译过来就是域名系统,是互联网上作为域名和IP地址相互映射的一个分布式数据库。DNS能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
  • DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆方便,一般不会超过12个字符),也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的字符写在最右边。由多个标号组成的完整域名总共不超过255个字符。DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。
    下面这张图,详细说明了一个DNS域名解析的全过程:11

(3 )域名服务结构

  1. 如果采用上述的树状结构,每一个节点都采用一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器系统的运行效率降低。所以在DNS中,采用划分区的方法来解决。
  2. 一个服务器所负责管辖(或有权限)的范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。总之,DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖的范围。区 <= 域。13

(4 )DNS解析查询

DNS查询类型:

  • 递归查询:
    • 递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
  • 迭代查询:
    • DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
    • DNS名称解析方式:名称 –> IP:正向解析IP –> 名称:反向解析
    • 19

(5 )DNS服务器配置

主配置文件:/etc/named.conf

主配置文件包含着三个段落,分别为全局配置段、日志配置段和区域配置段22

 

解析库文件:

/var/named/目录下;这个是工作目录

/etc/named.rfc1912.zones

23

其中zone名称以in-addr.apra结尾的为反向解析区域,其命名格式为IP网段的反写.in-addr.apra,剩下的zone则为正向解析区域。其中区域内的可设置选项包括:

type:设置此区域的类型,包括master(主名称服务器)、slave(辅助名称服务器)、forward(转发域)、hint(根域名服务器);
file FILENAME:指定区域数据文件的相对路径,目录路径由主配置文件/etc/named.conf所指定;
allow-update:是否允许客户主机或服务器自行更新DNS记录,上述为不允许更新DNS记录;

 

区域数据库文件:

value:有多部分组成

  • 当前区域的区域名称(也可以使用主DNS服务器名称);
  • 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
  • (主从服务协调属性的定义以及否定答案的TTL)

24
资源记录:Resource Record, 简称rr;
资源记录:Resource Record, 简称rr;
记录有类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录; 一个区域解析库有且只能有一个SOA记录,而且必须放在第一条;
NS:Name Service,域名服务记录;一个区域解析库可以有多个NS记录;其中一个为主的;
A: Address, 地址记录,FQDN –> IPv4;
AAAA:地址记录, FQDN –> IPv6;
CNAME:Canonical Name,别名记录;
PTR:Pointer,IP –> FQDN
MX:Mail eXchanger,邮件交换器;
优先级:0-99,数字越小优先级越高;
资源记录的定义格式:
语法: name [TTL] IN RR_TYPE value
SOA:name: 当前区域的名字;例如”mageud.com.”,或者“2.3.4.in-addr.arpa.”;

(6)DNS服务器配置示例

主-辅DNS服务器定义:

主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;
从DNS服务器:从主DNS服务器那里或其它的从DNS服务器那里“复制”一份解析库;但只能进行读操作;

“复制”操作的实施方式:
序列号:serial, 也即是数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
刷新时间间隔:refresh, 从服务器每多久到主服务器检查序列号更新状况;

重试时间间隔:retry, 从服务器从主服务器请求同步解析库失败时,再次发起尝试请求的时间间隔;

过期时长:expire,从服务器始终联系不到主服务器时,多久之后放弃从主服务器同步数据;停止提供服务;

否定答案的缓存时长
服务器”通知“从服务器随时更新数据;

 

1)主、从服务器都安装bind和bind-utils

[root@ns1 ~]yum install bind

[root@ns1 ~]yum install bind-utils

2)配置主DNS服务器主文件

[root@ns1 ~] vim/etc/named.conf25

3)配置主DNS服务器解析库文件正向和反向区域

26

4)建立主DNS服务器区域数据文件

[root@ns1 ~]vim /var/named/hehe.com.zone #正向区域文件

28
[root@ns1 ~]vim /var/named/172.16.15.zone #反向区域文件

29

[root@ns1 ~]# named-checkconf #主文件语法检查
[root@ns1 ~]# named-checkzone hehe.com /var/named/hehe.com.zone #正向区域文件语法检查
zone hehe.com/IN: ops.hehe.com/NS ‘ns1.ops.hehe.com’ extra GLUE A record (172.16.15.12)
zone hehe.com/IN: ops.hehe.com/NS ‘ns1.ops.hehe.com’ missing GLUE A record (127.0.0.1)
zone hehe.com/IN: loaded serial 2018051502
OK
[root@ns1 ~]# named-checkzone 15.16.172.in-addr /var/named/172.16.15.zone #反向区域文件检查
zone 15.16.172.in-addr/IN: loaded serial 2018051502
OK

[root@ns1 ~]#chmod o= /var/named/hehe.com.zone #修改权限

[root@ns1 ~]#chmod o= /var/named/172.16.15.zone #修改权限

[root@ns1 ~]#chgrp named /var/named/hehe.com.zone #修改属组

[root@ns1 ~]#chgrp named /var/named/172.16.15.zone #修改属组

5)配置从DNS服务器

[root@NS2 ~]# vim /etc/named.conf #编辑dns主文件

30

[root@NS2 ~]# vim /etc/named.rfc1912.zones31

[root@NS2 ~]# named-checkconf #配置文件语法检查

6) 语法检查后无异常,主服务器和从服务器分别启动DNS服务。

3334

7)测试

主dns服务器正向解析

 

 

37

 

主dns服务器反向解析

38

从dns服务器正向解析

35

从dns服务器反向解析

36

 

 

4、搭建并实现智能DNS

(1)DNS主从传输配置

DNS主从服务器的域维护是指通过DNS协议来在主域名服务器和从域名服务器之间维护同一个区域文件的操作。
DNS支持两种域维护的方式:全量传输(AXFR)和增量传输(IXFR)

  • 全量传输AXFR
    全量传输时,DNS从服务器会从DNS主服务器上请求区域文件,其间隔时间由SOA记录中的refresh标签所定义。请求区域文件的过程是DNS从服务器向DNS主服务器发送查询来实现的,如果DNS主服务器中SOA记录中的序列号(serial)大于DNS从服务器SOA记录的序列号,DNS从服务器就会向DNS主服务器发送全量传输请求。全量传输使用TCP的53端口进行传输。
  • 增量传输IXFR
    传递非常大的区域文件是非常耗资源的(时间、带宽等),尤其是只有区域中的一个记录改变的时候,没有必要传递整个区域文件,增量传输是允许DNS主服务器和DNS从服务器之间只传输那些改变的记录。
  • 通告notify
    DNS从服务器会每隔SOA记录中的设置refresh时间值来向DNS主服务器主服务器发送请求,只有在主服务器的serial大于从服务器的serial时才进行传输,但是倘若refresh值设置得比较大,那么有可能在这段时间中就会积累大量的更新,此时DNS的时效性就会很差。
    此时notify通告就提供了这样的功能:DNS主服务器的zone文件发生改变后,它立即向从服务器发送一个NOTIFY消息,告诉从服务器我的zone文件发生改变了,接着从服务器马上对比两者的序列号,再采用上面介绍的全量传输或者增量传输的方法请求zone文件。BIND本身支持通告,通告的配置是在named.conf中的zone中的option中配置,配置指令是notify, also-notify和notify-source。

上述在配置DNS主服务器的/etc/named.rfc1912.zones文件中,我启动了其notify的选项,因此在DNS主服务器上对区域文件作出的修改,在重启服务或重载服务后均应该能立即同步到相应的从服务器上,因此我们来测试下。
修改DNS主服务器上的正反区域文件:

bind有四个内置的acl

none:没有一个主机;

any:任意主机;

local:本机;

localnet:本机所在的IP所属的网络;

39

访问控制指令:

40

allow-query {}; 允许查询的主机;白名单;

allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;

allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;

allow-update {}; DDNS,允许动态更新区域数据库文件中内容;

(2)智能DNS

普通的DNS服务器只负责为用户解析出IP记录,而不去判断用户从哪里来,这样会造成所有用户都只能解析到固定的IP地址上,
智能DNS颠覆了这个概念。智能DNS会判断用户的来路,而做出一些智能化的处理,然后把智能化判断后的IP返回给用户。

(3)在服务器上安装DNS软件

测试:www.hehe.com

地址: 192.168.1.10当做电信dns主机地址,简称dx;

地址:10.0.0.10当做网通dns主机地址,简称wt;

网卡

[root@bogon ~]# ifconfig eth0 192.168.1.10 #设置第一个网卡地址

[root@bogon ~]# ifconfig eth1 10.0.0.10 #设置第二块网卡地址

[root@bogon ~]# yum -y install bind #安装bind

[root@bogon ~]# yum -y install bind-utils

(4)、修改DNS的主配置文件,在主配置文件中定义两视图(电信(dx)/网通(wt))

[root@bogon ~]# vim /etc/named.conf

1

添加两个视图

view dx {

zone “.” IN {
type hint;
file “named.ca”;
};
match-clients { 192.168.1.0/24; };
recursion yes;
include “/etc/named.rfc1912.zones”;

zone “hehe.com” {
type master;
file “/var/named/hehe.com.dx”;
};
};

view wt {

zone “.” IN {
type hint;
file “named.ca”;
};
match-clients { 10.0.0.0/24; };
recursion yes;
include “/etc/named.rfc1912.zones”;

zone “hehe.com” {
type master;
file “/var/named/hehe.com.wt”;
};
};

2

[root@bogon ~]# vim /var/named/hehe.com.dx #编辑电信文件

电信A记录

$TTL 1D
@ IN SOA dns.hehe.com. root.hehe.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.hehe.com.
dns IN A 192.168.1.10
www IN A 1.1.1.1

[root@bogon ~]# vim /var/named/hehe.com.wt #编辑网通文件

网通A记录

$TTL 1D
@ IN SOA dns.hehe.com. root.hehe.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.hehe.com.
dns IN A 10.0.0.10
www IN A 2.2.2.1

[root@bogon ~]# named-checkconf #检查主配置文件语法

[root@bogon ~]# named-checkzone hehe.com /var/named/hehe.com.dx #检查电信文件语法
zone hehe.com/IN: loaded serial 0
OK
[root@bogon ~]# named-checkzone hehe.com /var/named/hehe.com.wt #检查网通文件语法
zone hehe.com/IN: loaded serial 0
OK

[root@bogon ~]# chgrp named /var/named/hehe.com.dx #修改属组
[root@bogon ~]# chgrp named /var/named/hehe.com.wt #修改属组

[root@bogon ~]# service iptables stop #关闭防火墙

 

[root@bogon ~]# service named start #启动DNS服务

(5)测试

在192.168.1段的主机上(本机):

[root@bogon ~]# vim /etc/resolv.conf #修改默认DNS服务地址

nameserver 192.168.1.10

测试电信解析:

9

到另外一台10.0.0段的主机上:

[root@bogon ~]# vim /etc/resolv.conf #修改默认DNS服务地址

nameserver 10.0.0.10

测试网通解析:

10

本文多处出自网络,如有错误,希望指出,非常感谢。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:/98715

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达招商QQ  万达开户  测试  万达娱乐  万达主管QQ  万达娱乐招商  万达主管  万达注册  万达娱乐主管