author:JevonWei
版权声明:原创做品算法
具体的软件实现:shell
OpenSSH:ssh协议的开源实现,CentOS默认安装SSH协议版本安全
v1:基于CRC-32作MAC,不安全;man-in-middle两种方式的用户登陆认证:bash
基于password
基于key服务器
OpenSSH相关软件包:网络
openssh工具并发
基于C/S结构
Client:ssh,scp,sftp
Windows客户端:
xshell,putty,securecrt, sshsecureshellclient
Server: sshdless
ssh, 配置文件:dom
/etc/ssh/ssh_config
Host PATTERN
StrictHostKeyChecking no 首次登陆不显示检查提示ssh
格式:ssh [user@]host [COMMAND]
ssh [-l user] host [COMMAND]当用户远程链接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub (CentOS7 默认是ssh_host_ecdsa_key.pub)文件中的公钥到客户机的~./ssh/know_hosts 中。下次链接时,会自动匹配相应私钥
,不能匹配,将拒绝链接
基于密钥的认证:
(1)在客户端生成密钥对
ssh-keygen -t rsa [-P ''] [-f “~/.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中,代理被自动提供给root用户
不然运行ssh-agent bash
(7)钥匙经过命令添加给代理
ssh-add
SSH端口转发可以提供两大功能:
加密SSH Client端至SSH Server端之间的通信数据
突破防火墙的限制完成一些以前没法创建的TCP
本地转发:
-L localport:remotehost:remotehostport sshserver
选项:
-f 后台启用
-N 不打开远程shell,处于等待状态
-g 启用网关功能
示例
ssh –L 9527:telnetsrv:23 -N sshsrv
telnet 127.0.0.1 9527
当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23
data <- -> localhost:9527 <- -> localhost:XXXXX <- ->
sshsrv:22 <- -> sshsrv:YYYYY <- -> telnetsrv:23
远程转发:
-R sshserverport:remotehost:remotehostport sshserver
示例:
ssh –R 9527:telnetsrv:23 –N sshsrv
让sshsrv侦听9527端口的访问,若有访问,就加密后经过ssh服务转发请求到本机ssh客户端,再由本机解密后转发到telnetsrv:23
Data <- -> sshsrv:9527 <- -> sshsrv:22 <- -> localhost:XXXXX <- -> localhost:YYYYY <- -> telnetsrv:23
动态端口转发:
当用firefox访问internet时,本机的1080端口作为代理服务器,firefox的访问请求被转发到sshserver上,由sshserver替之访问internet
在本机firefox设置代理socket proxy:127.0.0.1:1080
ssh -D 1080 root@sshserver
全部图形化应用程序都是X 客户程序
可以经过tcp/ip链接远程X服务器ssh -X user@remotehost gedit
remotehost主机上的gedit工具,将会显示在本机的X服务器上
传输的数据将经过ssh链接加密
服务器端:sshd
man sshd_config
配置文件:/etc/ssh/sshd_config(服务端)
/etc/ssh/ssh_config(客户端)
经常使用参数:
Port 端口号
AddressFamily any 指明可以使用ipv4和ipv6地址
ListenAddress 0.0.0.0 监听的IP
#SyslogFacility AUTH 意为日志存放在/var/log/secure
SyslogFacility AUTHPRIV 日志级别
#LoginGraceTime 2m 等待链接宽限时间2分钟
#PermitRootLogin yes 禁止root用户直接登陆
#StrictModes yes 限制模式
#MaxAuthTries 6 密码输入错误次数为3时退出
#MaxSessions 10 同一个主机的最大会话数为10次
#ClientAliveInterval 0 客户端的活动间隔 (单位:秒) #ClientAliveCountMax 3 客户端最大活动间隔统计次数
UseDNS yes 使用DNS反向解析IP
PidFile /var/run/sshd.pid PID文件
MaxStartups 最大容许保持多少个未认证链接,默认值10
#Banner /etc/ssh.txt ssh链接时提示信息文件
PsswordAuthentication yes 基于密码认证登陆
PermitEmptyPasswords no 基于key认证的登陆
限制可登陆用户的办法: AllowUsers user1 user2 user3 容许用户链接 DenyUsers 拒绝用户 AllowGroups 容许组 DenyGroups DenyUser的优先级大于AllowUsers
要使用默认端口
禁止使用protocol version 1
限制可登陆用户
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址
基于口令认证时,使用强密码策略
tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30| xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登陆
限制ssh的访问频度和并发在线数
作好日志,常常分析
ssh协议的另外一个实现:dropbear
安装准备: 一、安装开发包组: 二、ftp://172.16.0.1/pub/Sources/sources/dropbear/dropbear-2013.58.tar.bz2 安装: 三、tar xf dropbear-2013.58.tar.bz2, 四、less INSTALL 五、./configure 六、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 七、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install 启动ssh服务: 八、ls /usr/local/sbin/ /usr/local/bin/ 九、/usr/local/sbin/dropbear -h 十、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 1三、dropbear -p :2222 -F –E #前台运行 dropbear -p :2222 #后台运行 客户端访问: 1四、ssh -p 2222 root@127.0.0.1 1五、dbclient -p 2222 root@127.0.0.1