当前位置:首页>Linux>Linux 服务器安全加固:OpenSSH/OpenSSL 源码升级避坑指南(含内网方案)

Linux 服务器安全加固:OpenSSH/OpenSSL 源码升级避坑指南(含内网方案)

  • 2026-10-11 07:28:34
Linux 服务器安全加固:OpenSSH/OpenSSL 源码升级避坑指南(含内网方案)

Linux 服务器安全加固:OpenSSH/OpenSSL 源码升级避坑指南(含内网方案)

背景

近期 OpenSSH 与 OpenSSL 相继曝出高危安全漏洞(如 CVE-2024-6387、CVE-2024-5535 等),攻击者可利用这些漏洞实现远程代码执行或中间人攻击。将 OpenSSH / OpenSSL 升级到最新版本是修复此类漏洞最直接有效的手段。

本文以 OpenSSH 10.3p1 + OpenSSL 4.0.0 为例,记录在 CentOS 环境下从源码编译升级的完整流程,并涵盖纯内网环境下的依赖包离线下载方案,助你一次避坑、安全落地。


一、下载源码包

组件下载地址
OpenSSLhttps://openssl-library.org/source/
OpenSSHhttps://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/

二、升级步骤

需要升级的服务器尽可能连通外网,因为涉及 zlib-devel、pam-devel、gcc、perl-core 等依赖包的安装。如果是纯内网环境,则需要提前在联网辅助机上下载好所有依赖包并上传到内网服务器后再进行操作。

1. 临时开启 Telnet(防止升级过程中 SSH 意外断开)

yum install -y telnet-server telnet

systemctl start telnet.socket

安全提醒:升级完成后请立即关闭并卸载 Telnet 服务,以防引入新的安全隐患。

systemctl stop telnet.socket

yum remove -y telnet-server 

telnet

2. 确认升级前的 OpenSSH 版本

ssh -V

OpenSSH_10.2p1, OpenSSL 3.6.0 1 Oct 2025

3. 升级 OpenSSL

3.1 检查并备份旧 OpenSSL 相关文件

whereis openssl

openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/local/openssl /usr/share/man/man1/openssl.1ssl.gz

mv /usr/bin/openssl /usr/bin/openssl.old

mv /usr/lib64/openssl /usr/lib64/openssl.old

mv /usr/include/openssl /usr/include/openssl.old

mv /usr/local/openssl /usr/local/openssl.old

3.2 解压并编译安装

mkdir -p /data/updateSsl /data/updateSsh

tar xf openssl-4.0.0.tar.gz -C /data/updateSsl

tar xf openssh-10.3p1.tar.gz -C /data/updateSsh

cd /data/updateSsl/openssl-4.0.0

./config --prefix=/usr --shared && make && make install

如果遇到 AVX2 编译错误

某些旧款 CPU 不支持 AVX2 指令集,需更换编译参数:

cd /data/updateSsl/openssl-4.0.0

make distcleansed -i '/enc_b64_avx2.c/d' crypto/evp/build.info

./config -std=gnu99 no-asm

make -j$(nproc)make install

可能的问题:缺少 Perl 模块 IPC::Cmd

Can't locate IPC/Cmd.pm in @INC ...

原因:

OpenSSL 编译脚本依赖 Perl 模块 IPC::Cmd,系统未安装。

解决方案:

yum install -y perl-core

3.3 验证 OpenSSL 版本

 openssl version

OpenSSL 4.0.0 1 Oct 2025

4. 升级 OpenSSH

4.1 备份旧 SSH 配置文件及目录

mv /etc/ssh/ /home/ssh-bak

mv /usr/bin/ssh /usr/bin/ssh.bak

mv /usr/sbin/sshd /usr/sbin/sshd.bak

mv /etc/pam.d/sshd /etc/pam.d/sshd.old

4.2 配置编译参数

cd /data/updateSsh/openssh-10.3p1

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords

./configure 仅做配置检查,确认依赖满足后即可进入下一步编译。若出现以下报错,按提示安装对应依赖:

报错信息解决方案
configure: error: *** zlib.h missingyum install -y zlib-devel
configure: error: PAM headers not foundyum install -y pam-devel.x86_64

4.3 编译安装

make && make install

4.4 复制启动脚本并调整配置

cp contrib/redhat/sshd.init /etc/init.d/sshd

echo 'X11Forwarding yes' >> /etc/ssh/sshd_config

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

4.5 启动 SSHd 并配置开机自启

systemctl enable sshd

systemctl restart sshd

systemctl status sshd

4.6 验证升级结果

ssh -V

openssl versionssh localhostss -tlnp | grep :22


附:纯内网环境离线依赖下载方案

若目标服务器无法访问外网,可通过一台联网的辅助机提前下载所有 RPM 依赖包,再传输到内网安装。

在联网辅助机上操作

# 1. 安装 yum-utils(提供 repotrack 命令)yum install -y yum-utils 2. 下载 perl-core 及其所有依赖 mkdir -p /tmp/all_perl_rpms && cd /tmp/all_perl_rpms && repotrack perl-core 3. 下载 zlib-devel 及其所有依赖 mkdir -p /tmp/zlib-devel-pkgs && cd /tmp/zlib-devel-pkgs && repotrack zlib-devel 4. 下载 pam-devel 及其所有依赖 mkdir -p /tmp/pam-devel-pkgs && cd /tmp/pam-devel-pkgs && repotrack pam-devel 5. 打包 cd /tmptar -czf perl-core-pkgs.tar.gz all_perl_rpms/tar -czf zlib-devel-pkgs.tar.gz zlib-devel-pkgs/tar -czf pam-devel-pkgs.tar.gz pam-devel-pkgs/

将打包文件传输到内网目标机器后,在目标机器上操作:

# 解压cd /tmptar -xzf perl-core-pkgs.tar.gztar -xzf zlib-devel-pkgs.tar.gztar -xzf pam-devel-pkgs.tar.gz 清除代理环境变量,避免 yum 尝试联网 unset http_proxy https_proxy 安装 cd /tmp/all_perl_rpms && yum localinstall -y *.rpm

cd /tmp/zlib-devel-pkgs && yum localinstall -y *.rpm

cd /tmp/pam-devel-pkgs && yum localinstall -y *.rpm

repotrack 仅下载 RPM 包及其全量依赖,不会自动安装,非常适合离线环境使用。


总结

升级完成后建议执行以下安全收尾操作:

1. 关闭并卸载临时开启的 Telnet 服务

2. 修改 SSH 配置:禁用 Root 密码登录、使用密钥认证

3. 定期关注 OpenSSH 和 OpenSSL 官方发布的安全公告,及时跟进更新

最新文章

随机文章