ssh的介绍
ssh : secure shell,protocol,22/tcp,安全的远程登录
openssh : ssh 协议的开源实现
dropbear : 另一个开源实现
ssh协议版本
v1 : 基于CRC-32做MAC,不安全;
v2 : 双方主机协议选择安全的MAC方式
基于DH算法做密钥交换,基于RSA或DSA实现身份认证
两种认证方式:
基于password
基于key
openssh:
C/S
C: ssh,scp,sftp
Windows客户端:xshell,putty,securecrt
S: sshd
ssh客户端
ssh 配置文件在 /etc/ssh/ssh_config
StrictHostKeyChecking no 首次登录不显示检查提示
格式:
ssh [user@]host [command]
ssh [-l user] host [command]
-p port :远程服务器监听的端口
-b :指定连接的源IP
-v :调试模式
-C :压缩方式
-X :支持x11转发
-Y :支持信任x11转发
ForwardX11Trusted yes
-t :强制伪tty分配
ssh -t remoteserver1 ssh remoteserver2
允许实现对远程系统经过验证的加密并安全访问
当用户远程连接ssh服务器时,会复制ssh服务器 /etc/ssh/ssh_host*key.pub(centos7默认是ssh_host_ecdsa_key.pub)文件的公钥到客户机的 ~/.ssh/know_hosts中,下次连接时会比较两处有什么不同
基于密钥的认证:
(1) 在客户端生成密钥对 ssh-keygen -t rsa [-P ''] [-f “/root/.ssh/id_rsa"]
ssh-keygen –t rsa –P ‘’ -f “/root/.ssh/id_rsa”
(2) 把公钥文件传输至远程服务器对应用户的家目录
ssh-copy-id [-i [identity_file]] [user@]host
(3) 测试
(4) 在SecureCRT,Xshell或实现基于key验证 在SecureCRT工具—>创建公钥—>生成Identity.pub文件 转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化 格式),并复制到需登录主机上相应文件authorized_keys中, 注意权限必须为600,在需登录的ssh主机上执行:
ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys
(5)重设私钥口令:#ssh-keygen –p
(6)验证代理(authentication agent)保密解密后的密钥
-
这样口令就只需要输入一次
-
在GNOME中,代理被自动提供
-
否则运行ssh-agent bash
(7)钥匙通过命令添加给代理 ssh-add
SSH端口转发
本地转发:
ssh –L 9527:telnetsrv:23 -N sshsrv
当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务, 再解密被转发到telnetsrv:23
选项:
-f : 后台启用
-N : 不开远程shell
-g : 启用网关功能
该操作是在test1上操作的
操作完需要关闭
远程转发
ssh –R 9527:telnetsrv:23 –N sshsrv
让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh 服务转发请求到本机ssh客户端,再由本机解密后转发到 telnetsrv:23
先在test2上操作
在Test1上面操作
动态端口转发
当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver 替之访问internet
在本机firefox设置代理socket proxy:127.0.0.1:1080
ssh -D 1080 root@sshserver
X协议转发
所有图形化应用程序都是X客户程序
-
能够通过tcp/ip连接远程X服务器
-
数据没有加密机,但是它通过ssh连接隧道安全进行
ssh -X user@remotehost gedit remotehost
主机上的gedit工具,将会显示在本机的X 服务器上
传输的数据将通过ssh连接加密
ssh服务器
服务器端:
sshd, 配置文件: /etc/ssh/sshd_config
常用参数:
Port ListenAddress ip
PermitRootLogin yes
ClientAliveInterval 0
UseDNS yes
限制可登录用户的办法:
AllowUsers user1 user2 user3
DenyUsers
AllowGroups
DenyGroups
ssh服务的最佳实践
-
不要使用默认端口
-
禁止使用protocol version 1
-
限制可登录用户
-
设定空闲会话超时时长
-
利用防火墙设置ssh访问策略
-
仅监听特定的IP地址
-
基于口令认证时,使用强密码策略 tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
-
使用基于密钥的认证
-
禁止使用空密码
-
禁止root用户直接登录
-
限制ssh的访问频度和并发在线数
-
做好日志,经常分析
编译安装dropbear
ssh协议的另一个实现:dropbear
yum install gcc gcc-dev* zlib-dev* -y
./configure
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
mkdir /etc/dropbear
dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key
dropbear -p 2222 -F