ssh:secure shell,protocol ,监听TCP22,提供安全的远程登陆服务

OpenSSH:ssh协议的开源实现

    dropbear:另一个开源实现


SSH协议版本:

    V1:基于CRC-32做MAC(消息认证码),不安全:容易受man-in-middle攻击

    v2:双方主机协议选择安全的MAC方式

       基于DH算法做秘钥交换,基于RSA或DSA算法实现身份认证

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

        口令:基于Passwd

        基于KEY

OpenSSH:

 C/S

    C:ssh,scp,sftp

      windows客户端:Xshell,putty,securecrt,sshsecureshellclient

    S:sshd

 客户端组件:

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

    格式:ssh [user@]host [COMMAND] (省略表示当前系统上的当前登录用户,linux系统)

          ssh [-l user] host [COMMAND](-l表示指明login User)

              -p port:远程服务器监听端口   默认22端口

              -X: 支持x11转发;

              -Y:支持信任的x11转发;

         host PATTERN

           PARAMETER VALUE

         [root@localhost ~]# ssh root@172.16.33.10 'hostname'  不登陆而执行命令

    基于秘钥的认证:

     (1)在客户端生成秘钥对儿

        ssh -t rsa [-P ''][-f "~/.ssh/id_rsa"]

     (2)把公钥传输至远程服务器对应用户的家目录

         ssh-copy-id [-i [identity_file]] [user@]machine

     (3)测试

        openssh及openssl创建私有CA_openssh

   scp命令:跨主机的复制命令

       scp [options] SRC... DEST/

       存在两种情形:

         PULL:scp [options] [user@]host:PATH/TO/SOMEWHERT /PATH/TO/SOMEWHERE

         PUSH:scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE

            常用选项:

             -r:递归复制,复制目录使用

             -p:保持源文件的属性信息

             -q:静默模式

             -P:PORT:指明remote host监听的端口

             -X:

        openssh及openssl创建私有CA_openssl_02

        openssh及openssl创建私有CA_openssh_03

   sftp命令:

       sftp [user@]host

       sftp> help

        openssh及openssl创建私有CA_openssh_04

 服务器端:

   sshd,配置文件:/etc/ssh/sshd_config

      常用参数:

        port:22022

        ListenAddress ip

        PermitRootLogin yes  是否允许root登陆

        限制可登陆用户方法:

          AllowUsers user1 user2(空格分开)

          AllowGroups

SSH服务的最佳实践:

    1、不要使用默认端口:

    2、禁止使用protocol version 1

    3、限制可登陆用户:  (配置文件添加AllowUsers root centos行)

    4、设定空闲会话超时时长

    5、利用防火墙设置ssh访问策略

    6、仅监听特定的IP地址

    7、基于口令认证时,使用强密码策略,不容服务器使用不同密码

        # tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs

    8、尽可能使用基于秘钥的认证

    9、禁止使用空密码

    10.禁止root用户直接登录

    11.限制SSH的访问频度和同并发在线数量

    12.做好日志,经常做分析

ssh协议的另一个实现:dropbear

    (1) dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048

        dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key

        dropbear -p [ip:]port -F -E

OpenSSL

  三个组件:

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

    libcrypto:加密解密库

    libssl:ssl协议的实现

  PKI:Public Key Infrastructure

    CA:发证机构

    RA:注册机构

    CRL:证书吊销列表

    证书存取库

  建立私有CA:

    OpenCA

    openssl

证书申请及签发步骤:

  1、生成申请请求

  2、RA核验

  3、CA签署

  4、获取证书并使用

如何创建私有CA:

  openssl的配置文件:/etc/pki/tls/openssl.cnf

  (1)创建所需要的文件

    # touch index.txt

    # echo 01 > serial

    #

        openssh及openssl创建私有CA_openssl_05

  (2)CA自签证书

     # (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

      openssh及openssl创建私有CA_私有CA_06

     # openssl req -new -x509 -key /etc/pki/CA/private/cakey.epm -days 7300 -out /etc/pki/CA/cacert.pem

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

       -x509: 专用于CA生成自签证书;

       -key: 生成请求时用到的私钥文件;

       -days n:证书的有效期限;

       -out /PATH/TO/SOMECERTFILE: 证书的保存路径;

        openssh及openssl创建私有CA_私有CA_07

  (3) 发证

        openssh及openssl创建私有CA_私有CA_08

    (a) 用到证书的主机生成证书请求;

      # (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

      # openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr

        openssh及openssl创建私有CA_openssh_09

        openssh及openssl创建私有CA_私有CA_10

    (b) 把请求文件传输给CA;

        openssh及openssl创建私有CA_私有CA_11

    (c) CA签署证书,并将证书发还给请求者;

      # openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365

        openssh及openssl创建私有CA_openssh_12

        openssh及openssl创建私有CA_openssl_13

        openssh及openssl创建私有CA_私有CA_14

        openssh及openssl创建私有CA_openssh_15

        openssh及openssl创建私有CA_openssl_16

      查看证书中的信息:

         openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|-serial

        openssh及openssl创建私有CA_openssl_17

  (4) 吊销证书

    (a) 客户端获取要吊销的证书的serial

      # openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

    (b) CA

      先根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致;

      吊销证书:

        # openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

    (c) 生成吊销证书的编号(第一次吊销一个证书)

      # echo 01 > /etc/pki/CA/crlnumber

    (d) 更新证书吊销列表

      # openssl ca -gencrl -out thisca.crl

      查看crl文件:

         # openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text

 博客作业:加密解密基础、PKI及SSL、创建私有CA;