加密和安全,加密 利用openssl搭建CA体系 ssh基于密钥登陆 scp

发送冒充邮件

首先telnet 到 邮件服务器的25端口

EHLO(有些需要输入)

mail  from:

rcpt to:

data 邮件正文

subject  标题

. 邮件结束

quit 退出

查询邮件服务器地址

dig  -t  mx  magedu.com

 

通过抓包,可以抓到数据,所以学好wireshark

黑掉http服务,使其资源耗尽,拒绝服务  flood_connect.c

对称算法   DES  3DES  AES

非对称算法   RSA  DSA

单向散列  md5: 128bits、sha1: 160bits、sha1sum    sha224sum  sha256sum  sha384sum  sha512sum 

  常用工具

md5sum | sha1sum  [ --check  ]  file 

openssl、gpg 

rpm  -V 

我们也可以用 对称秘钥或非对称秘钥 来对文件进行加密

gpg工具 可以用来加密文件,可以用对称或非对称算法来加密文件

对称加密file文件 

gpg -c file  ls file.gpg

在另一台主机上解密file

  gpg -o file -d file.gpg 

计算机安装的时候一般会安装了 一些大厂的根CA,这些证书可是要掏钱的啊,所以有些公司内部为了使用,节约成本没必要掏钱买证书,可以企业内部自建CA,

https底层依赖  tls协议

http+tls=https

ftp+tls=ftps

而OpenSSL 就是tls的具体实现的组件

  openssl 

  三个组件:

   openssl:多用途的命令行工具,包openssl

   libcrypto:加密算法库,包openssl-libs

   libssl:加密模块应用库,实现了ssl及tls,包nss 

openssl命令

    两种运行模式:交互模式和批处理模式

    openssl version:程序版本号 

     openssl ?  //显示所有子命令

  加密:  openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher  解密:  openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile 

   //使用MD5算法 对这个文件做哈希运算

生成用户密码:

  passwd命令: 

   帮助:man sslpasswd

    openssl passwd -1 -salt SALT(最多8位)

    openssl passwd -1 –salt  centos

生成随机数:

    帮助:man sslrand

           openssl rand -base64|-hex NUM

      NUM: 表示字节数,使用-hex,每个字符为十六进制,相当于4位二进制, 出现的字符数为NUM*2 

base64是一种编码方式,用64个字符,表示数据,既把原来的ASCII编码(8位),改成(6位)编码,

利用openssl 生成 rsa的 公钥私钥

生成密钥对儿:man genrsa

生成私钥

  openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS

   (umask 077; openssl genrsa –out test.key –des 2048)  //-des 选项就是 使用对称算法対生成的私钥加密

   openssl rsa -in test.key –out test2.key 将加密key解密

从私钥中提取出公钥

  openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE

  openssl rsa –in test.key –pubout –out test.key.pub 

利用openssl 搭建CA体系  CA模式分为 私有CA  公有CA,私有CA是给企业内部用的,公有CA是面向互联网的。私有CA的申请证书时有三项都要填写一样

作为CA 生成私钥的文件名叫什么   私钥公钥文件分别放在什么地方,颁发证书的时候,每个证书的编号是几,这么都需要事先准备好,而这些准备存放在openssl的配置文件:/etc/pki/tls/openssl.cnf

      

  根据CA配置文件 在对应的位置生成对应的文件

1。建立CA,首先要自己有一个证书,所以首先自己生成公私钥,先生成私钥,根据私钥生成公钥。Linux下生成的证书文件是.pem

(umask 077;openssl genrsa -out private/cakey.pem 4096)
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 <<EOF
CN
beijing
beijing
magedu
devops
ca.magedu.com
admin@magedu.com
EOF

touch /etc/pki/CA/index.txt
echo 0F > /etc/pki/CA/serial //存放下一个证书编号,以十六进制,必须是整字节

查看证书

2 申请证书
  (umask 066;openssl genrsa -out app.key 1024 )
  openssl req -new -key app.key -out app.csr //根据自己的私钥,生成申请文件
  scp /data/app/app.csr CAServer:/data/ //将自己的申请文件,传给CA。

3 颁发证书
  openssl ca -in /data/app.csr -out /etc/pki/CA/certs/app.crt -days 100 //根据客户的申请文件,生成客户对应的证书,然后再给客户就可以了

针对于一个申请文件 是不能多次申请证书的,对于index.txt.attr 设置了唯一性,修改为no时,就可以允许多个了

index.txt文件存放的就是 证书发放的信息(文本数据库),

吊销证书:  openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem 

openssl  ca -status SERIAL  查看指定编号的证书状态   V是正常,R是吊销

撤销证书 本质是生成CRL吊销列表,也是有个文件要去指定下一个吊销列表的编号

指定第一个吊销证书的编号,注意:第一次更新证书吊销列表前,才需要执行

  echo 01 > /etc/pki/CA/crlnumber 

更新证书吊销列表  openssl ca -gencrl -out /etc/pki/CA/crl.pem 

ssh

两种方式的用户登录认证: 

  基于password 

  基于key 

客户端组件: 

   ssh, 配置文件:/etc/ssh/ssh_config 

  StrictHostKeyChecking no 首次登录不显示检查提示 

服务端组件  /etc/ssh/sshd_config    sshd

       当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub (CentOS7默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的 ~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接

ssh服务基于密钥登录验证 

前期工作就这两步,把自己的公钥拷贝过去就OK了,后面就不用了密码了,把公钥给那个机器,你就可以访问到那个机器

ssh-keygen   //对于ssh服务生成自己的公私钥 就是在 /root/.ssh/生成 id_rsa  id_rsa.pub

然后把公钥拷贝过去,传过去也行
ssh-copy-id -i /home/wang/.ssh/id_rsa root@192.168.37.6  //这里是把公钥拷贝过去,但是你如果写错成私钥,也没关系,人家考的还是公钥,这里本质就是公钥文件 id_rsa.pub的内容复制到 远程机器的 /root/.ssh/authorized_keys 中

     你把 公钥给了谁 你就可以远程登录谁        但是这种方式你如果私钥被别人拿走了,那人家就可以伪装你 也可以访问那个机器了

       

修改 root的密码 

expect 实现自动基于秘钥登录的脚本,可以让一个机器,不用登录密码,管理多个主机

PASS=magedu
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa &> /dev/null && echo "ssh key is created"    //生成自己的公钥私钥,-t指定加密算法  -P 指定密码  -f 指定生成的文件
rpm -q expect &> /dev/null || yum -y install expect &> /dev/null
while read IP ;do
expect <<EOF
set timeout 20
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$IP
expect {
"yes/no" { send "yes ";exp_continue }
"password" { send "$PASS " }
}
expect eof
EOF
echo $IP is ready
done < hosts.txt

我们上面讲的都是Linux ssh Linux ,我们更多的是在Windows中 用xhell,去ssh Linux的,所以Xhell也是可以基于key登录的,我们在Xhell中生成公私钥,把公钥拷到Linux中,我们在Windows中使用私钥就可以直接登录到Linux中,这个时候你只要有私钥就可以登录到Linux,你可以随身携带私钥,在任何一台电脑都可以连接Linux中。Xhell生成公私钥 在工具中

SCP

scp [options] /sourcefile  [user@]host:/destpath 

  • -C 压缩数据流 
  • -r 递归复制   就是拷贝文件夹
  • -p 保持原文件的属性信息 
  • -q 静默模式 
  • -P PORT 指明remote host的监听的端口 

scp /data/dpt 192.168.37.1:/data //把我这个文件拷贝到 另外一台电脑的data目录下
scp 192.168.37.1:/data/opt . //把远程主机上的这个文件拷贝到自己电脑上

要有多努力才能对得起奔波的脚步和身上的期望
原文地址:https://www.cnblogs.com/hxfcodelife/p/12055587.html