升级OpenSSL和OpenSSH 修复漏洞

升级OpenSSL和OpenSSH

目前版本OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

升级到OpenSSH_9.8p1, OpenSSL 1.1.1u 30 May 2023

服务器CentOS Linux release 7.6.1810 (Core)

一、升级OpenSSL到1.1.1u
  1. 下载并编译 OpenSSL(推荐目录 /usr/local/openssl)

    bash 复制代码
    wget https://www.openssl.org/source/openssl-1.1.1u.tar.gz
    tar zxvf openssl-1.1.1u.tar.gz
    cd openssl-1.1.1u
    
    ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
    make -j$(nproc)
    make install
  2. 设置 OpenSSL 环境变量

    bash 复制代码
    echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
    ldconfig
    
    export PATH=/usr/local/openssl/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/openssl/lib

    vim /etc/profile 追加下边两行,避免重启后失效。

    bash 复制代码
    export PATH=/usr/local/openssl/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/openssl/lib

    source /etc/profile

  3. 验证 OpenSSL 是否生效

    bash 复制代码
    openssl version
    bash 复制代码
    OpenSSL 1.1.1u  30 May 2023
二、升级OpenSSH到9.8p1
  1. 安装依赖

    bash 复制代码
    yum groupinstall -y "Development Tools"
    yum install -y wget pam-devel zlib-devel openssl-devel
  2. 下载并准备 OpenSSH 9.8p1

    bash 复制代码
    wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
    tar -zxvf openssh-9.8p1.tar.gz
    cd openssh-9.8p1
  3. 备份旧 SSHD

    bash 复制代码
    cp /usr/sbin/sshd /usr/sbin/sshd.bak.$(date +%F-%H-%M-%S)
    cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H-%M-%S)
  4. 配置并编译安装 OpenSSH 9.8p1(指定新版 OpenSSL 路径)

    bash 复制代码
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-ssl-dir=/usr/local/openssl
    make -j$(nproc)
    make install
  5. 设置 sshd 服务(如无 systemd 单元文件)

    bash 复制代码
    if [ ! -f /usr/lib/systemd/system/sshd.service ]; then
      cp contrib/redhat/sshd.init /etc/init.d/sshd
      chmod +x /etc/init.d/sshd
      systemctl daemon-reexec
      systemctl daemon-reload
      systemctl enable sshd
    fi
  6. 重启 SSH 服务并验证版本

    安全提示(强烈建议)

    在你执行 systemctl restart sshd 之前:

    • 开两个 SSH 会话,防止断连;
    • 设置自动回滚任务(如果失败自动恢复旧版本):
    bash 复制代码
    echo "cp /usr/sbin/sshd.bak* /usr/sbin/sshd && systemctl restart sshd" | at now + 5 minutes
    bash 复制代码
    systemctl restart sshd
    /usr/sbin/sshd -V
    bash 复制代码
    OpenSSH_10.0p1, OpenSSL 1.1.1u ...
三、解决yum install -y wget pam-devel zlib-devel openssl-devel下载失败问题

在可以正常执行 yum install -y wget pam-devel zlib-devel openssl-devel的服务器执行下列命令

  1. 安装 yum-utils(包含 yumdownloader)
bash 复制代码
yum install -y yum-utils
  1. 创建存放 RPM 的目录并下载所有依赖包

    bash 复制代码
    mkdir -p /tmp/rpms
    cd /tmp/rpms
    yumdownloader --resolve wget pam-devel zlib-devel openssl-devel
  2. 检查下载的 RPM 文件

    bash 复制代码
    ls -l /tmp/rpms/*.rpm
    bash 复制代码
    -rw-r--r-- 1 root root  1582172 Jun 17 16:17 openssl-devel-1.0.2k-26.el7_9.i686.rpm
    -rw-r--r-- 1 root root  1582400 Jun 17 16:17 openssl-devel-1.0.2k-26.el7_9.x86_64.rpm
    -rw-r--r-- 1 root root  1021796 Jun 17 16:17 openssl-libs-1.0.2k-26.el7_9.i686.rpm
    -rw-r--r-- 1 root root   736976 Jun 17 16:17 pam-1.1.8-23.el7.i686.rpm
    -rw-r--r-- 1 root root   189152 Jun 17 16:17 pam-devel-1.1.8-23.el7.i686.rpm
    -rw-r--r-- 1 root root   189124 Jun 17 16:17 pam-devel-1.1.8-23.el7.x86_64.rpm
    -rw-r--r-- 1 root root   430428 Jun 17 16:17 pcre-8.32-17.el7.i686.rpm
    -rw-r--r-- 1 root root   560272 Jun 17 16:17 wget-1.14-18.el7_6.1.x86_64.rpm
    -rw-r--r-- 1 root root    93224 Jun 17 16:17 zlib-1.2.7-21.el7_9.i686.rpm
    -rw-r--r-- 1 root root    51524 Jun 17 16:17 zlib-devel-1.2.7-21.el7_9.i686.rpm
    -rw-r--r-- 1 root root    51488 Jun 17 16:17 zlib-devel-1.2.7-21.el7_9.x86_64.rpm
    ......
  3. 将 RPM 包复制到目标服务器

    bash 复制代码
    scp -r /tmp/rpms root@目标服务器IP:/tmp/
  4. 在目标服务器上手动安装

    bash 复制代码
    cd /tmp/rpms
    rpm -ivh *.rpm --nodeps --force
四、OpenSSH make install 报如下错误
bash 复制代码
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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.
Unable to load host key "/etc/ssh/ssh_host_rsa_key": bad permissions
Unable to load host key: /etc/ssh/ssh_host_rsa_key
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Unable to load host key "/etc/ssh/ssh_host_ecdsa_key": bad permissions
Unable to load host key: /etc/ssh/ssh_host_ecdsa_key
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Unable to load host key "/etc/ssh/ssh_host_ed25519_key": bad permissions
Unable to load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.
make: [Makefile:396: check-config] Error 1 (ignored)

解决方案:修复私钥权限

bash 复制代码
chmod 600 /etc/ssh/ssh_host_*_key
相关推荐
KIDULT°36 分钟前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
wewowilling3 小时前
认识微服务
java·运维·微服务·springcloud
玖石书3 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
weifont5 小时前
自动化抓取和上架商品:能不动手,就少动手
运维·前端·自动化
拂拉氏6 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Mikko76 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
光依旧6 小时前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
yichengerp8 小时前
电子行业常用erp系统有哪些?推荐适合中小电子厂的易呈erp软件,操作简单,易落地
大数据·运维·人工智能·云计算·制造
天国梦8 小时前
国密门禁品牌怎么选?2026年最新3个避坑要点
运维·服务器·数据库·python
信可维9 小时前
自动化操作多平台账号:登录态、双会话与 User Data 的 3 个坑
运维·自动化