OpenSSL 与 OpenSSH 离线升级至最新版本 9.9p2

OpenSSL 与 OpenSSH 离线升级至最新版本 9.9p2

一、前言

在网络安全日益重要的今天,保持系统中的 OpenSSL 和 OpenSSH 为最新版本是至关重要的。然而,在一些内网环境中,由于网络限制,无法直接从互联网上下载最新的软件包进行升级。本文将详细介绍如何在离线环境下将 OpenSSL 和 OpenSSH 升级到最新版本 9.9p2。

二、准备工作

2.1 下载所需软件包

https://wwyq.lanzouo.com/iQD0730558gd

在有网络的环境中,下载以下软件包:

  • xinetd-2.3.15-14.el7.x86_64.rpm
  • telnet-0.17-64.el7.x86_64.rpm
  • telnet-server-0.17-64.el7.x86_64.rpm
  • openssl-1.1.1w.tar.gz
  • openssh-9.9p2-offline.tar.gz

2.2 上传软件包

将下载好的软件包上传到内网机的相应目录,例如:

  • xinetdtelnet 相关的 rpm 包上传到内网机任意可访问目录。
  • openssl-1.1.1w.tar.gz 上传到 /root/ssh_upgrade 目录。
  • openssh-9.9p2-offline.tar.gz 上传到 /root/sshupdate 目录。

三、安装 Telnet 服务

安装 Telnet 服务是为了避免在 SSH 升级失败时无法进行远程连接。

# 安装 xinetd
rpm -ivh xinetd-2.3.15-14.el7.x86_64.rpm
# 安装 telnet
rpm -ivh telnet-0.17-64.el7.x86_64.rpm  
# 安装 telnet 服务端
rpm -ivh telnet-server-0.17-64.el7.x86_64.rpm

# 编辑 Telnet 服务配置文件
vi /etc/xinetd.d/telnet

vi 编辑器中,输入以下内容:

service telnet
{
    flags           = REUSE
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/sbin/in.telnetd
    log_on_failure  += USERID
    disable         = no  # 关键:启用 Telnet 服务
}

保存并退出 vi 编辑器,然后启动 xinetd 服务并设置开机自启:

systemctl start xinetd    # 启动服务
systemctl enable xinetd   # 设置开机自启

注意:需要放开 23 端口的防火墙富规则配置。

四、升级 OpenSSL

# 进入 OpenSSL 升级目录
cd /root/ssh_upgrade
# 备份旧的 OpenSSL 目录
cp -a /usr/local/openssl /media/openssl
# 解压 OpenSSL 压缩包
tar -zxvf openssl-1.1.1w.tar.gz -C /usr/local/  # 解压到 /usr/local/openssl 目录
# 配置系统库路径
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1w.conf
# 刷新系统库缓存
ldconfig  
# 备份旧的 OpenSSL 命令
mv /usr/bin/openssl /usr/bin/openssl.old  
# 创建新的 OpenSSL 命令软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
# 验证 OpenSSL 版本
openssl version  # 应输出:OpenSSL 1.1.1w  xxxxxx
# 验证系统库中 libssl 路径
ldconfig -p | grep libssl  # 应显示 /usr/local/openssl/lib/libssl.so.1.1

五、升级 OpenSSH

5.1 前期准备

5.1.1 上传安装包

确保 openssh-9.9p2-offline.tar.gz 已上传到 /root/sshupdate 目录,并且包内包含完整文件,如 usr/bin/sshusr/sbin/sshdusr/libexec/sshd-session 等。

5.1.2 备份旧版本文件
# 备份配置文件
mkdir -p /opt/openssh_backup/etc_ssh
cp -r /etc/ssh/* /opt/openssh_backup/etc_ssh/

# 备份二进制文件
mkdir -p /opt/openssh_backup/bin
cp /usr/bin/ssh /opt/openssh_backup/bin/
cp /usr/bin/scp /opt/openssh_backup/bin/
cp /usr/bin/sftp /opt/openssh_backup/bin/
cp /usr/sbin/sshd /opt/openssh_backup/bin/

5.2 解压并替换 OpenSSH 文件

# 进入解压目录
cd /root/sshupdate
# 解压安装包
tar -zxvf openssh-9.9p2-offline.tar.gz
# 进入解压后的目录
cd openssh-package  

# 替换客户端工具
cp -f ./usr/bin/ssh /usr/bin/
cp -f ./usr/bin/scp /usr/bin/
cp -f ./usr/bin/sftp /usr/bin/
cp -f ./usr/bin/ssh-keygen /usr/bin/

# 替换服务端程序
cp -f ./usr/sbin/sshd /usr/sbin/

# 替换会话管理程序(解决 "sshd-session不存在" 报错)
cp -f ./usr/libexec/sshd-session /usr/libexec/

# 替换配置文件
cp -f ./etc/ssh/sshd_config /etc/ssh/
cp -f ./etc/ssh/ssh_config /etc/ssh/

5.3 修复权限

# 修复配置文件权限
chmod 600 /etc/ssh/sshd_config  # 严格权限,否则启动失败
chmod 644 /etc/ssh/ssh_config

# 修复密钥文件权限(解决 "UNPROTECTED PRIVATE KEY" 报错)
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key
chmod 600 /etc/ssh/ssh_host_ed25519_key
chmod 644 /etc/ssh/ssh_host_*_key.pub  # 公钥权限

# 修复程序文件权限
chmod 755 /usr/sbin/sshd
chmod 755 /usr/bin/ssh
chmod 755 /usr/libexec/sshd-session  # 确保可执行

# 创建权限分离目录(解决 "Missing privilege separation directory" 报错)
mkdir -p /var/lib/sshd
chmod 755 /var/lib/sshd
chown root:root /var/lib/sshd

5.4 启动服务并验证

# 检查配置文件语法
/usr/sbin/sshd -t  # 无输出则配置正确

# 重启 sshd 服务
systemctl daemon-reload
systemctl restart sshd

# 验证服务状态
systemctl status sshd  # 应显示 "active (running)"

# 验证版本
ssh -V  # 应显示 "OpenSSH_9.9p2"
sshd -V  # 应显示 "OpenSSH_9.9p2"

# 测试连接
ssh localhost  # 能正常登录即完成升级

5.5 回滚方案(若升级失败)

# 恢复配置文件
cp -r /opt/openssh_backup/etc_ssh/* /etc/ssh/

# 恢复二进制文件
cp /opt/openssh_backup/bin/ssh /usr/bin/
cp /opt/openssh_backup/bin/scp /usr/bin/
cp /opt/openssh_backup/bin/sftp /usr/bin/
cp /opt/openssh_backup/bin/sshd /usr/sbin/

# 重启服务
systemctl restart sshd

六、总结

通过以上步骤,我们可以在离线环境下成功将 OpenSSL 和 OpenSSH 升级到最新版本 9.9p2。同时,为了应对可能出现的升级失败情况,我们还提供了回滚方案,确保系统的稳定性和可用性。

希望本文对你有所帮助,如果你在升级过程中遇到任何问题,欢迎在评论区留言讨论。

注意:实际操作中,请根据你的系统环境和需求进行适当调整。

你可能感兴趣的:(OpenSSL 与 OpenSSH 离线升级至最新版本 9.9p2)