• 加密和安全,加密 利用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 . //把远程主机上的这个文件拷贝到自己电脑上

    要有多努力才能对得起奔波的脚步和身上的期望
  • 相关阅读:
    TPM Key相关概念
    (转)eclipse报错及解决说明 "XX cannot be resolved to a type "
    (转)Bat Command
    (转)Linux下查看文件和文件夹大小 删除日志
    (转)每天一个linux命令(50):crontab命令
    (转)Vi命令详解
    (转)maven打包时跳过测试
    (转)mybatis常用jdbcType数据类型
    (转)MyBatis在插入的数据有空值时,可能为空的字段都要设置jdbcType
    (转)mybatis:动态SQL
  • 原文地址:https://www.cnblogs.com/hxfcodelife/p/12055587.html
Copyright © 2020-2023  润新知