找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1823

积分

0

好友

238

主题
发表于 7 天前 | 查看: 18| 回复: 0

一、问题及背景

CentOS 7 在各类生产环境中依然有着较高的使用率,但其自带的 OpenSSH 版本通常较低,例如常见的 OpenSSH_7.4p1

通过 ssh -V 命令可以查看当前版本:

ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

低版本的 OpenSSH 在安全检查时常会报出高危漏洞,例如 OpenSSH 9.6 以下版本普遍受到多个漏洞影响,包括但不限于:

OpenSSH ssh-agent远程代码执行漏洞(CVE-2023-38408)
OpenSSH 安全漏洞(CVE-2021-41617)
Openssh 命令注入漏洞(CVE-2020-15778)
OpenSSH 信息泄漏漏洞 (CVE-2023-51385)

过去,升级 OpenSSH 通常采用编译源码的方式,过程涉及 OpenSSL 的同步升级,颇为复杂。为了避免升级过程中远程连接中断,还需要预先安装并配置好 telnetd 服务作为备用登录方案,整体流程对运维人员有一定挑战。

二、使用RPM软件包升级OpenSSH

近期,在 GitHub 上发现了 openssh-rpms 项目。该项目提供了预编译的 RPM 包,能够帮助用户在 Linux 系统上轻松安装或升级至最新版的 OpenSSH。

整个升级过程简洁流畅,无需额外安装 telnetd 服务,现有的 SSH 远程连接在操作期间也不会中断,大大简化了运维工作。

三、openssh-rpms项目简介

以下内容主要基于该项目文档,并对涉及的脚本命令进行了微调与说明。

OpenSSH 是一个广泛用于安全远程登录和文件传输的免费工具。本项目通过提供 RPM 包的形式,帮助用户便捷地升级 OpenSSH,确保系统使用最新的安全版本。

四、项目特性

  • 提供 RPM 包,可直接升级至最新版 OpenSSH。
  • 用户也可下载源码包,利用项目内的脚本自行编译 RPM(脚本不包含自动获取源码包的功能)。
  • 首次使用本项目提供的 SSH RPM 包时,需配套安装项目提供的 OpenSSL。
  • 项目提供的 OpenSSL-3.3.1 版本,理论上可支持后续多个 OpenSSH 版本的升级。
  • 支持 x64 架构下的 CentOS 7/8、AlmaLinux 8、RockyLinux 8、AnolisOS 8、Kylin-V10 等系统。

五、安装步骤 (以 CentOS 7 为例)

  1. 下载 RPM 包:从项目的 Release 页面下载适用于你系统的版本。

  2. 执行安装命令

    # 解压下载的包,请根据实际下载的文件名进行修改
    tar zxvf openssl-3.3.1-rpms-el7.tar.gz
    tar zxvf openssh-10.0p2-rpms-el7-x64.tar.gz
    
    # 安装新版本 OpenSSL(注意:这里仅安装openssl和openssl-devel,openssl-libs请谨慎操作)
    rpm -ivh --nodeps --force openssl-3.3.1*/openssl-{3,d}*.rpm
    
    # 卸载旧版本 OpenSSH(直接使用 yum remove openssh* -y 可能会报错,建议指定版本)
    yum remove openssh*7.4* -y
    
    # 安装新版本 OpenSSH(请根据实际解压的目录名修改)
    yum install -y openssh-10.0p2*/openssh*
  3. 进行关键配置

    # 关闭 SELinux(生产环境请根据安全策略谨慎操作)
    sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0
    
    # 启用 PAM 认证
    sed -i 's/#UsePAM.*/UsePAM yes/' /etc/ssh/sshd_config
    
    # 允许 Root 登录(根据你的安全需求决定是否开启)
    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    
    # 增加加密算法以兼容老版本客户端
    echo "PubkeyAcceptedKeyTypes=+ssh-rsa" >> /etc/ssh/sshd_config
    
    # 调整密钥文件权限,避免 sshd 启动失败
    chmod 600 /etc/ssh/ssh_host_*_key
    
    # 更新 PAM 配置
    cat > /etc/pam.d/sshd << EOF
    #%PAM-1.0
    auth       required     pam_sepermit.so
    auth       include      password-auth
    account    required     pam_nologin.so
    account    include      password-auth
    password   include      password-auth
    session    required     pam_limits.so
    session    required     pam_selinux.so close
    session    required     pam_loginuid.so
    session    optional     pam_keyinit.so force revoke
    session    include      password-auth
    EOF
    
    # 重启 sshd 服务使配置生效
    systemctl restart sshd

重要提示:完成上述步骤后,请不要立即关闭当前的 SSH 连接窗口。请新开一个 SSH 会话尝试连接,确认能正常登录后,即表示升级成功,可以平稳落地。

六、服务管理

安装并配置完成后,你可以使用以下命令管理 OpenSSH 服务:

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

通过以上步骤,你可以快速将 CentOS 7 等系统的 OpenSSH 升级到新版本,及时修复安全漏洞。更多服务器运维与安全实践,欢迎在云栈社区交流探讨。




上一篇:美团半年记:在技术氛围浓厚的大厂团队工作是种怎样的体验?
下一篇:Kubernetes v1.35 补充组控制GA:Strict策略提升容器安全性
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 08:51 , Processed in 0.209372 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表