OpenSSH :
ssh : secure shell protocal , 22/tcp ,安全的远程登录
OpenSSH : ssh协议的开源实现;
dropbear : 另一个开源实现;

         SSH协议版本
                                  v1 :基于CRR-32做MAC,不安全 :man-in-middle
                                                v2 :双方主机协议选择安全的MAC方式
                                                基于DH算法做密钥交换,基于RSA或DSA算法实现身份认证;

                                                两种方式的用户登录认证:
                                                  基于password
                                                     基于key

  OpenSSH:
     C/S
      C:ssh , scp , sftp
Windows客户端:
xshell ,putty , securecrt ,sshsecureshellclient

                      S:sshd

  客户端组件 :
          ssh ,配置文件 :/etc/ssh/ssh_config

          格式 :ssh [user@]host [COMMAND]
                      ssh [-l user] host [COMMAND]
                                                    -p port:远程服务器监听的端口;

                                                Host PATTERN        
                                                               PARAMETER VALUE

                                                基于密钥的认证 :
                                                   (1)在客户端生产密钥对儿
                                                            ssh -t rsa [-P ''] [-f "~/.ssh/id_rsa"]
                                                     (2)把公钥传输至远程服务器对应 用户的家目录
                                                                     ssh-copy=id [identity_file][user@machine]
                                                        (3) 测试;

                        scp命令 :
                             scp [options] SRC... DEST/

                                 存在两种形式:
                                      PULL : scp [options] [user@]host:/PATH/FROM/SOMEFILE /PATH/TO/SOMEWHERE
                                            PUSH : scp [options] /PATH/FROM/SOMEFILE [user@]host:/PATH/TO/SOMEWHERE         

                                     常用选项 :
                                                -r : 递归复制;
                                                        -p  :保证原文件的属性信息;
                                                        -q : 静默模式
                                                        -p PORT :  指明remote host的监听的端口

                    服务器端 :                                  
                                    sshd  ,配置文件 :/etc/ssh/sshd_config   

                                    常用参数 :
                                         Port 22022
                                             ListenAddress ip           
                                            PermitRootLogin yes     

                                        限制可登录用户的办法 :                
                                                        AllowUsers  user1 user2 uesr3
                                                        AllowGroups

            ssh服务的最佳实践
                1、不要使用默认端口;
                  2、禁止使用protocal version 1;
                  3、限制可登录用户;
                    4、设定空闲会话超时时长;
                    5、利用防火墙设置ssh访问策略;
                    6、仅监听特定的IP地址;
                        7、基于口令认证时,使用强密码策略;
                               # tr -dc A-Za-z0-9_ </dev/urandom | head -c 30 |xargs
                        8、使用基于密钥的认证;
                        9、禁止使用空密码;
                        10、禁止root用户直接登录;
                        11、限制ss的访问频度和并发在线数;
                        12、做好日志,经常分析;

ssh协议的另一个实现 :dropbear
(1) dropbearkey -T rsa -f /etc/dropbear_rsa_host_key -ss 2048
dropbearkey -t dss -f /etc/dropbear_dss_host_key
dropbear -p [ip:]port -F -E

OpenSSL :
三个组件:
openssl : 多用途的命令行工具;
libcrypte : 加密解密库;
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
                     #

        (2) CA自签证书
              # (umask 077 ; openssl genrsa -out /etc/pki/CA/private/cakey-pem 2048)
              # openssl req -new -x509 -key /etc/pki/CA/private/cakey.epm private/cakey.epm -days 7300 -out /etc/pki/CA/cacert.pem
                    -new : 生成心证书签署请求;
                    -x509 : 生成自签证书 ;
                    -key : 生成请求时用到的私钥文件; 
                    -out /PATH/TO/SOMCEREFILE  :证书的保存路径;

    (3) 发证
          (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
                  (b)    把请求文件传输给CA;
                    (c)    CA签署证书, 并将证书发还给请求者;
                            #openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -day365 

                              查看证书中的信息 :
                                                 openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|serial

            (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 -noout -text

                        查看crl 文件
                                                            # openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text