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)测试
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:
sftp命令:
sftp [user@]host
sftp> help
服务器端:
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
#
(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 -days 7300 -out /etc/pki/CA/cacert.pem
-new: 生成新证书签署请求;
-x509: 专用于CA生成自签证书;
-key: 生成请求时用到的私钥文件;
-days n:证书的有效期限;
-out /PATH/TO/SOMECERTFILE: 证书的保存路径;
(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 -days 365
查看证书中的信息:
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
查看crl文件:
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
博客作业:加密解密基础、PKI及SSL、创建私有CA;