构建私有CA及SSH配置服务

    

在了解如何构建私有CA之前,先来熟悉基础概念:CA表示证书颁发机构、PKI表示公钥基础设施、RA证书的注册机构、CRL证书的吊销列表。构架CA时还会涉及到一些加密方式,这里来了解一些加密类型。

    几种加密方式及其区别:单项加密:主要用于数据的提取特征值,验证通信内容的完整性。对称加密:成对密钥,且双方密钥相同。一般用于加密通信内容,效率高安全性不好。公钥加密:成对密钥,但是密钥存在公钥和私钥,效率低,安全性好。

    CA存在的作用和意义:是用来增加通信资源可靠性的证书颁发机构。通过验证这个机构颁发的证书,我们可以保证所获得的资源是否为对方发送,发送的内容是否完整。假设有A、B双方想要实现资源传递,A期望获得完整B的资源。那么这个过程可以简单描述为:首先B将自己的资源发送给CA,向CA请求签证。CA确认B资源没有问题后,会给予这个资源颁发一个证书,并在这个证书上给予签字发还给B。然后当A与B实现通信时,B发送自己的资源给A时,A会到CA处验证B的证书是否为真。如果验证B的为真,那么资源就可以使用了。但是有时,我们在一个很小的区域范围内,比如公司内部。为了实现资源的可靠性验证,就没有必要去申请CA证书了。我们可以构建自己的CA来实现。

ssh配置服务及如何构建私有CA_构建私有CA   SSH服务


    CA的具体构建过程:假设我们使用公司的某台主机作为CA主机,首先为了其它主机能够识别这台主机的证书,认可这个机构的存在。这里就需要,CA自己要有一个证书。那就是第一步自签证书:这里我们使用命令openssl,先成一个私钥。然后基于这个私钥生成自签证书。

# cd /etc/pki/CA 目的是为了在CA目录下创建CA私有机构。
# (umask 077; openssl genrsa -out private/cakey.pem 2048)          
# openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem   


注意:req是签证请求命令。-new生成新的签证请求 -key指明私钥文件路径。-x509为自签 -days生成证书有效期时长 -out指明证书存放位置。这里当CA证书

    当CA的自签证书生成好了之后,每个主机需要导入CA的证书,这样各主机才能基于CA的证书来验证其他证书的可靠性。从而实现资源的可靠性验证。当然,导入证书方法多样,可以拷贝、发送等。我这里就直接导入自己的本机了。注意导出时文件后缀要改成.crt。这样windows系统才能识别出证书。

ssh配置服务及如何构建私有CA_构建私有CA   SSH服务_02


    我们这里就可以实现使用自己建立的私有CA对于其它资源的认证了。节点的请求:各期望认证的主机发送自己期望认证的证书给CA,请求签证。

#(umask 077; openssl genrsa -out httpd.key 1024)
# openssl req -new -key httpd.key -out httpd.csr -days NUM
# scp httpd.csr CA_IP:/tmp/

注意:我们这里申请的命令不再有-x509选项。通过scp主机传送给CA请求签证。    


下面就是CA的签署和归还证书了了。

 # openssl ca -in /path/from/REQ.csr -out /path/to/somefile.crt -days NUM
 # scp /path/to/somefile.crt REQ_HOST:/path/to/somewhere/

这样一个完整的私有CA就完成了。

    SSH服务的配置:

    1.远程登陆:ssh [USER@]HOST [COMMAND]

ssh [-l USER] HOST [COMMAND]

注意:USER默认为当前主机上的用户名,当端口修改时还需要使用-p 指出端口号。

    2.端口修改,这里建议修改为一个高位端口。配置文件:

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

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

   ssh配置服务及如何构建私有CA_构建私有CA   SSH服务_03 


    3.修改协议为protocol 2.因为protocol1存在安全隐患。

    4.禁止root用户实现远程主机连接,因为远程主机连接有可能被抓。

    ssh配置服务及如何构建私有CA_构建私有CA   SSH服务_04

    5.限制可登录用户;在服务器配置文件中加入:白名单AllowUsers user1 user2 user3 ...   黑名单DenyUsers user1 user2 user3... 也可以加入指定的属组。

    6.设定空闲会话超时时长;在服务器的/etc/ssh/sshd_config 配置文件中增加UseDNS no 配置。这里需要解释的是,OpenSSH服务器有一个DNS查找选项UseDNS默认是打开的。在UseDNS选项打开状态下,当客户端试图登录OpenSSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询,查询出客户端的host name,然后根据查询出的客户端host name进行DNS 正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种手段,但一般IP是动态的,不会有PTR记录的,打开这个选项不过是在白白浪费时间而已。

    7.监听特定的IP地址,而非全部的IP地址。

    8.使用基于密钥的认证

    9.做好日志经常分析。