加密算法、https、dns(主从、视图)

第九周 2018/1/29

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

加密算法类型

  • 对称加密:加密和解密同一密钥;
  • 非对称加密:加密和解密使用一对儿密钥;通信的人是我们期望通信的人;
  • 单向加密:只能加密不能解密:提取数据的特征码: 人–>指纹;指纹–>人? 完整性检验;

加密算法特性

一、对称加密

1

特性

  1. 加密、解密使用同一密钥
  2. 将原始数据分割成固定大小的块,以块为单位进行加密

缺陷

  1. 密钥过多;服务器需要为每个人生成一个密钥;
  2. 密钥分发困难;服务器如何安全的给每个人发送密钥;
加密:openssl enc -e 加密算法 -a -salt -in fstab -out fstab.ciphertext [-k PASS]
解密:openssl enc -d 加密算法 -a -salt -in fstab -out fstab.ciphertext [-k PASS]
    加密算法列表获取:openssl ? --> Cipher commands 下的所有;引用时需要在其前加 -

二、非对称加密

 

2

特性

  1. 密钥分为公钥和与之配对的私钥;
  2. 私钥:通过工具创建,自己留存,必须保证其私密性;secure key
  3. 公钥:从私钥中提取产生;可公开给所有人pubkey
  4. 用公钥加密的数据,只能使用与之配对的私钥解密;反之亦然;

用途

  • 数字签名:服务端私钥加密指纹的结果,用于让对方确认自己的身份;完整性检验身份认证
  • 密钥交换:客户端用对方公钥加密一个对称密钥,并发送给对方;
  • 数据加密:密钥长度过长一般不用;

工作逻辑

Server 单向加密 –> 数字签名 –> 密钥加密数据 –> 对方公钥加密密钥
Client 自己私钥解密密钥 –> 密钥 –> 对方公钥 –> 单向加密

公钥

证书

 

 生成私钥:(umask 077; openssl genrsa -out private.key NUM_BITS)
 从私钥中提取公钥:openssl rsa -in private.key -pubout
    (): bash中特殊含义:在括号中运行的命令在当前shell的子shell进程中运行。若在子shell中定义的特性仅在子shell的生命周期中有效;
    NUM_BITS:密钥长度:2^n;

三、单向加密

 

3

特性

  1. 定长输出:提取数据特征码长度固定,与数据大小无关;
  2. 雪崩效应初始条件纤微改变,结果发生巨大变化,避免比对;
  3. 避免密码存储文件中相同密码出现结果相同;在密码中加入salt;在下次登陆时,用给定的密码和salt进行加密后的结果与密码存储文件中的字符比较;
  4. 完整性验证
加密格式:工具 文件
 openssl dgst -md5 file
 md5sum file
 sha1sum file
 ...

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

apache https

v1

s2

s3

nginx https

s4

附上脚本

#!/bin/bash
#
openssl version || exit
ntpdate 0.centos.pool.ntp.org
# ---------------------------- private CA ---------------------------------
dir='/etc/pki/CA'
mkdir -p ${dir}/{certs,crl,newcerts,private}
[ -f ${dir}/private/cakey.pem ] || (umask 077; openssl genrsa -out ${dir}/private/cakey.pem 2048)
[ -f ${dir}/cacert.pem ] || openssl req -new -x509 -key ${dir}/private/cakey.pem -out ${dir}/cacert.pem -days 7300
sleep 2
[ -f $dir/index.txt ] || touch $dir/index.txt
[ -f $dir/serial ] || echo "01" > $dir/serial

read -p 'nginx or httpd or haproxy? ' prog
[ -n "$prog" ] || exit
[ "$prog" == "nginx" -o "$prog" == "httpd" -o "$prog" == "haproxy" ] || exit 
echo -e "\033[1;31mInstall $prog ssl\033[0m"
# ----------------------------- $prog ssl ----------------------------------
ssl_dir="/etc/$prog/ssl"
#
mkdir -pv $ssl_dir
[ -f $ssl_dir/$prog.key ] || (umask 077; openssl genrsa -out $ssl_dir/$prog.key 2048)
[ -f ${ssl_dir}/$prog.csr ] || openssl req -new -key ${ssl_dir}/$prog.key -out ${ssl_dir}/$prog.csr -days 365
[ -f ${ssl_dir}/$prog.crt ] || openssl ca -in ${ssl_dir}/$prog.csr -out ${ssl_dir}/$prog.crt -days 365

http和nginx分别填入内容

CN HA MageEdu Ops ca.magedu.com caadmin@magedu.com

CN HA MageEdu Ops www.magedu.com webadmin@magedu.com

CN HA ZZ Ops nginx.magedu.com webadmin@magedu.com

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

专业术语

  • 协议:是一种规范,http, ftp, smtp(邮件传输), pop3/imap4(邮件收取)
    • 规范;由特定具体的软件来实现
  • :无形的,逻辑的概念;正向解域区域 + 反向解析区域
  • 区域:物理,一个一个的解析库对应的主机; 正向解析区域 反向解析区域
  • 递归请求:发起一次查询,就会有结果
  • 迭代查询:发起N次查询,才有结果;缓存DNS;
  • 转发非我所负责的域,就转发;注意:接收请求的主机,应该为转发的主机递归;
    • 区域转发:解析非我所负责的域的主机,且解析此域内的主机才转发;
    • 全局转发:解析非我所负责的域的主机,统统转发;

DNS工作逻辑

  1. dns程序扮演客户端;
  2. 查询本机/etc/hosts文件;
  3. 根据/etc/resolv.conf中nameserver指令指向的IP(运营商缓存DNS),从上向下;向第一个DNS服务器发起 递归查询请求;
  4. 运管商DNS 迭代查询 查找根域,返回顶级域某个DNS的IP;
  5. 运营商DNS 迭代查询 查找顶级域,返回三级域某个DNS的IP;
  6. 运营商DNS 迭代查询 查找三级域,返回其域内某个主机的IP;
  7. 运营商DNS 返回递归请求
  8. dns程序库返回给某进程其域名解析结果
  9. 真正的通信

DNS

域名注册

在Top Level Domain的DNS服务器主机的解析库中添加子域条目;子域指向的主机(IP)即为解析 子域 的dns服务器;子域DNS服务器:需要一个有公网IP的主机;

 

搭建主从服务器

z1

z2

z3

z4

z5

z6

z7

z8

z9

z10

z11

4、搭建并实现智能DNS

q1

q2

q3

q4

q11

q6

q7

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/91336

(2)
逆神阳逆神阳
上一篇 2018-01-29 12:13
下一篇 2018-01-29 19:21

相关推荐

  • God进程监控框架

    监控重启进程的方案有很多种: 最简单的方法,写个脚本fork进程运行,然后waitpid,如果获pid后就再次启动 最土的方法,配置cron任务,固定时间运行脚本检查进程是否存在,不存在则启动 百度使用qmail里的supervised程序,通过supervised监管进程。 优点:supervised可以启动daemon程序,对于非daemon需要采用no…

    Linux干货 2015-02-13
  • 8月3号 用户权限作业

     1,当用户xiaoming 对/testdir  目录无执行权限时,意味着无法做哪些操作?   先创建目录/testdir,接着修改目录的/testdir的权限,用xiaoming的身份去进入/testdir目录 [root@localhost ~]# mkdir /testdir [root@l…

    Linux干货 2016-08-08
  • N24_huamao 学习计划

       每天会安排好时间按顺序看视频进行学习,由于基础比较差我会先进行笔记然后再做博客记录。需要操作的知识点会跟着视频和自己的理解去做,最后达到马哥所说的“技能”所需的要求。运维的知识点很广很多也很复杂。当然想学好后边的就要先打好基础从linux系统开始学习把重要的命令记牢应用灵活才可以。这第一步自己一定要迈好。

    Linux干货 2016-10-26
  • 第六周作业 bash编程学得好痛苦啊,啊啊啊~~需要挺住!

    请详细总结vim编辑器的使用并完成以下练习题 VIM很强大,但是万变不离其宗,最核心的三模式以下图表示: 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#; :%s/^[[:blank:]]\+.*/\0#/g 2、复制/boot/grub/grub.conf至/…

    Linux干货 2016-12-19
  • 第8天:脚本基础,btrf,raid,

    http://note.youdao.com/yws/public/redirect/share?id=61b38adef24ced4dc646a5ef8e68df18&type=false

    Linux干货 2016-08-16
  • 魔术方法

    Edit 魔术方法 使用Python的魔术方法的最大优势在于他们提供了一种简单的方法来让对象可以表现的像内置类型一样。那意味着你可以避免丑陋的,违反直觉的,不标准的的操作方法。 特殊属性 属性 含义 __name__ 类、函数、方法等名字 __module__ 类定义所在的模块名? __class__ 对象或类所属的类 __bases__ 类的基类的元组,顺…

    Linux干货 2017-11-21

评论列表(2条)

  • 马哥教育
    马哥教育 2018-01-31 22:33

    总结的很赞~DNS解析过程可以用图来说明会清楚点;另外DNS智能解析遇到的问题、解决思路和实验结果最好能描述的更细一点哈~加油~

    • 逆神阳
      逆神阳 2018-02-01 08:29

      @马哥教育好的,老师!我加一个图。