安全加密之ssh

          常见的加密方式
          数字签名概述
          gpg实现数据加密
          简述https实现
          CA证书签署
          opssl的常用方式

常见加密方式

1、对称加密:
加密和解密成本较低,同一密钥相同,密钥传输困难,数据来源无法确认
常见算法: DES 3DES AES

2、非对称加密:
公钥: 公开
私钥: 私有不公开
公钥和私钥成对组成
实现数据来源确认
私钥加密 数据签名不可伪造
效率低 密钥长
常见算法: RSA DSA

非对称加密公钥和私钥成对出现,删除私钥后才可以删除公钥。指定加密需要对方的公钥进行加密,且只有对方私钥能解密。注意公钥来源合法性

3、hash单向散列
单向可加密不可解密,校验数据是否篡改
得到的数据结果为摘要 数据相同摘要(digest)相同 不可逆算法
长度固定
MD5 128二进制 sha1 160二进制 sha512 512二进制

数字签名:让接收方确认发送方身份

在这里插入图片描述

    1、A把原文通过单向Hash函数加密产生128bit数字摘要,并通过自己的私钥对摘要加密,形成数字签名
    2、A把数字签名和原文再通过B的公钥加密后后发送给B
    3、B收到后用自己的私钥拆开密钥,得到数字签名和原文
    4、B把数字签名通过A的公钥解密成128bit数字摘要;再把原文通过单向Hash函数得到128bit数字摘要与之对比
一致信息安全,反之不然

对称加密和公钥加密实现工具gpg

gpg对称加密
对称加file文件 >gpg -c file ls file.gpg

在另一个主机上解密fiel

gpg -o file -d file.gpg

 

gpg公钥加密
在hostB主机上用公钥加密,在hostA主机上解密
在hostA主机上生成公钥/私钥对

gpg --gen-key

在hostA主机上查看公钥

gpg --list-keys

在hostA主机上导出公钥到wang.pubkey

gpg -a --export -o wang.pubkey

从hostA主机上复制公钥文件到需加密的B主机上

scp wang.pubkey hostB:

在需加密数据的hostB主机上生成公钥/私钥对

gpg --list-keys
gpg --gen-key

在hostB主机上导入公钥

gpg --import wang.pubkey
gpg --list-keys

用从hostA主机导入的公钥,加密hostB主机的文件file,生成file.gpg

gpg -e -r wangxiaochun file
file file.gpg

复制加密文件到hostA主机

scp fstab.gpg hostA:

在hostA主机解密文件

gpg -d file.gpg
gpg -o file -d file.gpg

删除公钥和私钥

gpg --delete-keys wangxiaochun
gpg --delete-secret-keys wangxiaochun

SSL/TLS
SSL安全套接字层,TLS:传输层安全     保障了数据的机密性完整性,对数据进行认证和重放保护(防止有效数据的重复传输) 两阶段协议     握手阶段(协商阶段):客户端和服务器端认证对方身份(依赖于PKI体系,利用数字证书进行身份认证),并协商通信中使用的安全参数、密码套件以及主密钥。后续通信使用的所有密钥都是通过MasterSecret生成     应用阶段:在握手阶段完成后进入,在应用阶段通信双方使用握手阶段协商好的密钥进行安全通信

https(http协议和ssl/tls协议的组合,对httpd协议加密后,实现二进制数据传输)如何实现安全传输
在这里插入图片描述

  1. C向S发送数据连接请求
  2. S端生成Pcrt 和Scrt
  3. S把Pcrt发送给C
  4. C验证Pcrt的合法性,如果Pcrt有效,生成随机key,用crt加密,否则发送https警告
  5. C传输加密的随机密钥
  6. S用私有crt解密,下载key,得到用密钥加密内容
  7. S用clinet密钥响应加密内容
  8. C用密钥解密内容

验证服务端合法性
验证网址合法性
网址通信加密

CA和证书

在这里插入图片描述
CA证书的实现机制
    1、普通用户CA证书的签署通过某几个根CA签署机构或子机构认证的合法性证书
    2、子机构通过根机构的认证,根机构自我认证实现证书签署
普通用户之际的信息安全通信基于本地的受信任的根证书颁发机构中有的证书且没有过期的颁发的证书的用户,该文件是WINDOS内置的,如后期企业有内部专用证书,可直接导入到该文件中在这里插入图片描述

局域网自建CA根实现
服务端自建私有根证书

mkdir /etc/pki/CA/{crl,certs,private,newcerts} -pv 创建pki目录
touch index.txt
echo 00 > serial
echo 00 > crlnumber

(openssl genrsa -out private/cakey.pem 2048) 创建私钥

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem 自签
C = CN, ST = beijing, L = beijing, O = magedu, OU = Ops, CN = ca.magedu.net, emailAddress = magedu@163.cn

openssl x509 -in cacert.pem -noout -text 查看根证书信息

客户端生成私钥

(umask 066;openssl genrsa -out app.key 1024)

证书申请文件
openssl req -new -key app.key -out app.csr
countryName = match
stateOrProvinceName = match
organizationName = match
此三项必须服务相同,否则会出错,或者服务端策略设置为optional(可选)

服务端颁发证书

#openssl ca -in /data/app.csr -out certs/app.crt -days 700 (default 1 year)签发证书
必须要有本地的 serial(十六进制数文件)每次签发自增1
index.txt数据库索引
echo 00|01(一般) >serial
touch index.txt

吊销证书

#openssl ca -revoke newcerts/0F.pem 吊销指定证书数据
V有效 R已吊销

#echo 00 > crlnumber 创建吊销序列号

#openssl ca -gencrl -out /etc/pki/CA/crl.pem 吊销列表
#openssl crl -in crl.pem -noout -text 文本查看吊销信息

SSH
#cat /root/.ssh/known_hosts 首次连接需要认证,后续缓存下来的公钥文件信息,通过本地缓存与对方key相匹配一旦错误,立即提示。如果私钥一旦泄露直接可以连接或者清空known_hosts指定信息

常见攻击手段(中间人攻击)
在这里插入图片描述

如何验证公钥正确性
在公钥主机上找到指定文件进行解析与之信息匹配

1)基于md5算法验证

在192.168.146.135主机/etc/ssh/ssh_host_rsa_key.pub 对应算法公钥文件拷贝出来做运算
#cp /etc/ssh/ssh_host_rsa_key.pub /data
#base64 -d ssh_host_rsa_key.pub >ssh.pub
#md5sum ssh.pub
9a6c00f4bf45d42fad537bfafddac203 ssh.pub

2)base64转换为可见的信息
在这里插入图片描述

[root@CentOS6 /data]#cat abc
abc
[root@CentOS6 /data]#base64 abc
YWJjCg== 生成base64加密文本

分隔成6为的ascii码取对应值十进制值转换为二进制,空位补==

openssl
设置首次不验证公钥合法性 StrictHostKeyChecking no >sed -i.bak '/StrictHostKeyChecking/c\StrictHostKeyChecking no' /etc/ssh/ssh_config c [\]text 替换行为单行或多行文本

生成随机密钥方式

#cat /dev/urandom |tr -dc ‘[[:alnum:]]’ |head -c 10
#openssl rand -base64 10

sshpass 前提有对方的key 或者sed修改过公钥不验证才可使用
sshpass实现的三种方法

sshpass -p passwd ssh IP 基于密码

sshpass -f passwd.file ssh IP 基于密码所在的文件

export SSHPASS=passwd 基于密码存储的环境变量中
sshpass -e ssh IP

sshpass 动态修改整个网段的主机密码

#!/bin/bash
#
NET=192.168.39
sed -i.bak '/StrictHostKeyChecking/c\StrictHostKeyChecking no' /etc/ssh/ssh_config
ssh-keygen  -P ""  -f /root/.ssh/id_rsa &> /dev/null
rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null
for i in {5..7};do
{
sshpass  -p 123456 ssh-copy-id -i /root/.ssh/id_rsa.pub $NET.$i &> /dev/null

}&
done
wait

ssh -t强制的tty分配(一条命令通过多台主机认证,到达最终目的)
在这里插入图片描述

基于key认证
#ssh-keygen 默认放在root用户家目录/root/.ssh/目录下生成公私密钥对

-rw-------. 1 root root 1823 Nov 6 17:29 id_rsa
-rw-r–r--. 1 root root 398 Nov 6 17:29 id_rsa.pub
默认rsa算法 -t可修改为其他算法 如dsa

私钥安全

#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.146.129 不会把私钥传递给对方,只能是公钥传输给对方事先无密码的通信

私钥保护机制

#ssh-keygen -p 私钥加密

#ssh-agent bash 代理记住密码,退出终端后失效
#ssh-add

#ssh-keygen -P “” -f /root/.ssh/id_rsa

同一主机基于不同的密钥对访问不同的主机

一般默认寻址私钥为/root/.ssh目录下的文件
如其他文件下的密钥对应主机需要连接需要在ssh后面指明路径
如 ssh 192.168.146.132 -i /tmp/id_rsa1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值