升级openssh-9.6与openssl-1.1.1(升级openssh-9.8亲测可用)
#注:本文档更新openssl为1.1.1w版本,openssh为9.6版本,其他版本可参考此文档
其他版本下载链接:http://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
发行版说明地址:OpenSSH: Release Notes
主要升级原因:
增强的安全性:
新版本的OpenSSH通常包含安全漏洞的修复,这些漏洞可能被黑客利用来入侵系统或窃取数据。升级可以显著减少此类风险。
可能引入新的加密算法和身份验证方法,提高远程登录和文件传输的安全性。
新版本的OpenSSH与OpenSSL通常会修复旧版本中发现的安全漏洞,包括远程代码执行、信息泄露等严重问题,从而有效抵御潜在的安全威胁。
1.环境准备
1.1 下载包
下载OpenSSL(1.1.1w版本): www.openssl.org/source/open…
下载OpenSSH(9.6版本): mirrors.sonic.net/pub/OpenBSD…
1.2 备份
# 1. 备份openssl
cp /usr/local/openssl/bin/openssl /usr/local/openssl/bin/openss_bak
# 或者根据命令所在路径进行备份,例如:
#find / -name openssl -->/usr/bin/openssl
cp /usr/bin/openssl /usr/bin/openssl_bak
# 2. 备份ssh
cp /etc/init.d/sshd /etc/init.d/sshd_bak
# 或者根据命令所在路径进行备份,例如:
#find / -name sshd -->/usr/sbin/sshd
cp /usr/sbin/sshd /usr/sbin/sshd_bak
# 3. 备份PAM模块SSH登录配置文件,一定要备份到其它目录,因为编译安装的时候会覆盖并且不会新建!
cp /etc/pam.d/sshd /root/sshd
# 4. 备份配置ssh配置文件所在目录
cp -rp /etc/ssh /etc/ssh_bak
1.3 安装依赖:
这些依赖CentOS7版本的镜像就自带,所以挂载系统镜像然后配置内网Yum源就可以安装
yum install gcc make perl zlib-devel pam pam-devel openssl-devel -y
1.4 安装telnet
升级过程需要卸载SSH,所以我们打开的窗口超时退出了就无法连接了,所以一定要安装 telnet 使用 telnet 登录安装。
(注意创建普通用户)
# 1. 安装
yum install telnet* xinetd* -y
# 2. 启动
systemctl start telnet.socket
systemctl start xinetd
# 3. 默认telnet是无法使用root进行登录的,为了方便这里就将 securetty 移动走,安装完成后再移动回来
mv /etc/securetty /etc/securetty.bak
2. 安装OpenSSL
# 1. 解压
tar zxf openssl-1.1.1w.tar.gz
# 2. 运行配置脚本
cd openssl-1.1.1w
./config --prefix=/usr/local/openssl
# 3. 编译, 给最大的CPU核心数
make -j 8
# 4. 安装
make install
# 5. 软链接新的SSL
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
# 6. 查看openssl版本
openssl version
3. 安装OpenSSH
# 1. 卸载旧的ssh
yum remove openssh-7.4p1 -y
# 2. 解压
tar zxf openssh-9.6p1.tar.gz
# 3. 运行配置脚本
./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/openssl/include --with-ssl-dir=/usr/local/openssl --with-zlib --with-md5-passwords --with-pam
# 4. 编译
make -j 8
# 5. 安装
make install
#注意:可能提示权限太高报错如下:
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
# Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.
# It is required that your private key files are NOT accessible by others.
# This private key will be ignored.
#需要修改三个文件的权限为0600解决
chmod 0600 /etc/ssh/ssh_host_rsa_key
chmod 0600 /etc/ssh/ssh_host_ecdsa_key
chmod 0600 /etc/ssh/ssh_host_ed25519_key
#权限修改完毕再次执行:
make install
# 6. 复制新的配置到相关目录以及更改sftp-server所在位置
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
cp /etc/ssh_bak/sshd_config /etc/ssh/sshd_config
cp /root/sshd /etc/pam.d/
sed -i 's|/usr/libexec/openssh/sftp-server|/usr/libexec/sftp-server|' /etc/ssh/sshd_config
# 7. 开启启动
chkconfig --add sshd
chkconfig sshd on
systemctl restart sshd
# 8. 使用其它主机测试一下
#查看ssh版本号
telnet IP 22
#登录测试
ssh IP
# 9. 将securetty移动回来
mv /etc/securetty.bak /etc/securetty
升级完成后,验证SSH和SFTP有没有问题,没有问题后卸载telnet服务端不然基线扫描不过
yum remove telnet* xinetd* -y
常见问题
1.
升级完openSSH之后,所有主机使用root无法ssh登陆
/etc/ssh/ssh_config line 50: Unsupported option"gssapiauthentication"
于是,便猜想ssh升级后,为了安全,默认不再采用原来一些加密算法。
最后,解决办法为,注释sshd_config的以下参数:
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials yes
#UsePAM yes
允许root ssh登陆
PermitRootLogin yes
重启sshd服务即可恢复。
service sshd restart
2.
使用 vi 等编辑器,将参数值设置为 inet,或者整个删除或注释(在最开头添加 # 号)整行配置。比如:
# AddressFamily inet
同时,确保 AddressFamily 参数在ListenAddress 之前配置,比如:
AddressFamily any #该行配置在前面
ListenAddress 0.0.0.0