CentOS 7系统 OpenSSH和OpenSSL版本升级指南

文章目录

CentOS 7系统 OpenSSH和OpenSSL版本升级指南

在处理服务器安全问题时,及时升级关键组件的版本是非常重要的。本文将详细介绍如何在CentOS 7系统上升级OpenSSH和OpenSSL到最新稳定版本,以解决已知的安全漏洞。

如果使用红帽系统,可以联系厂家打补丁或者升级处理

环境说明

当前系统版本

bash 复制代码
[root@tamkems-yy ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

当前组件版本

bash 复制代码
[root@tamkems-yy ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
[root@tamkems-yy ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

现存安全漏洞

当前版本存在以下安全漏洞:

  • OpenSSH 安全漏洞(CVE-2023-51767)
  • OpenSSH 安全漏洞(CVE-2023-38408)
  • OpenSSH 命令注入漏洞(CVE-2020-15778)
  • OpenSSH 欺骗安全漏洞(CVE-2019-6110)
  • OpenSSH信息泄露漏洞(CVE-2020-14145)
  • OpenSSH 用户枚举漏洞(CVE-2018-15919)
  • OpenSSH 安全漏洞(CVE-2023-48795)
  • OpenSSH CBC模式信息泄露漏洞(CVE-2008-5161)
  • 等多个安全漏洞...

升级目标版本

  • OpenSSH: 9.6p1
  • OpenSSL: 1.1.1w

升级准备工作

在开始升级之前,需要做好以下准备:

  1. 系统备份
bash 复制代码
# 创建备份目录
mkdir -p /root/ssh_backup_$(date +%Y%m%d)

# 备份当前配置
cp -r /etc/ssh/* /root/ssh_backup_$(date +%Y%m%d)/
cp /etc/sysconfig/sshd /root/ssh_backup_$(date +%Y%m%d)/
  1. 安装必要的编译工具
bash 复制代码
# 安装开发工具组
yum groupinstall -y "Development Tools"

# 安装依赖包
yum install -y zlib-devel openssl-devel perl perl-devel pam-devel

OpenSSL升级步骤

1. 下载和解压

bash 复制代码
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w

2. 编译安装

bash 复制代码
# 配置
./config --prefix=/usr/local/openssl shared zlib

# 编译和测试
make
make test

# 安装
make install

3. 配置环境

bash 复制代码
# 配置动态链接库
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig

# 替换原有的OpenSSL
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

OpenSSH升级步骤

1. 下载和解压

bash 复制代码
cd /usr/local/src
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz
tar -zxf openssh-9.6p1.tar.gz
cd openssh-9.6p1

2. 编译安装

bash 复制代码
# 配置
./configure \
    --prefix=/usr \
    --sysconfdir=/etc/ssh \
    --with-ssl-dir=/usr/local/openssl \
    --with-zlib \
    --with-pam \
    --with-md5-passwords \
    --with-tcp-wrappers

# 编译和安装
make
make install

3. 创建systemd服务配置

bash 复制代码
# 创建 systemd 服务文件
cat > /usr/lib/systemd/system/sshd.service << 'EOF'
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target

[Service]
Type=exec
ExecStart=/usr/sbin/sshd -D -e
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=3s

[Install]
WantedBy=multi-user.target
EOF

4. 更新SSH配置文件

bash 复制代码
# 创建新的 sshd_config 配置文件
cat > /etc/ssh/sshd_config << 'EOF'
# 基本配置
Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

# 协议版本
Protocol 2

# 主机密钥
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

# 日志级别
SyslogFacility AUTHPRIV
LogLevel INFO

# 认证配置
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no

# 其他设置
X11Forwarding yes
PrintMotd no
UsePAM yes
UseDNS no
Subsystem sftp /usr/libexec/openssh/sftp-server
EOF

5. 设置正确的文件权限

bash 复制代码
# 设置关键文件权限
chmod 755 /usr/sbin/sshd
chmod 755 /etc/ssh
chmod 644 /etc/ssh/sshd_config
chmod 600 /etc/ssh/ssh_host_*_key
chmod 644 /etc/ssh/ssh_host_*_key.pub

6. 重启服务

bash 复制代码
# 重新加载 systemd 配置
systemctl daemon-reload

# 重启 sshd 服务
systemctl restart sshd

# 检查服务状态
systemctl status sshd

7. 验证升级

bash 复制代码
# 检查 SSH 版本
ssh -V

# 尝试本地连接测试
ssh -v localhost

故障排查指南

如果升级后遇到问题,可以按以下步骤排查:

  1. 检查日志文件
bash 复制代码
tail -f /var/log/secure
tail -f /var/log/messages
  1. 检查防火墙设置
bash 复制代码
firewall-cmd --list-services | grep ssh
  1. 如需回滚,执行以下操作:
    • 停止sshd服务
    • 从备份目录恢复配置文件
    • 重启服务

安全建议

完成升级后,建议采取以下安全措施:

  1. 加强SSH配置

    • 禁用不安全的加密算法
    • 限制root用户登录
    • 设置登录失败次数限制
    • 配置密钥认证
  2. 定期维护

    • 检查系统日志
    • 监控失败的登录尝试
    • 定期检查服务状态

总结

通过以上步骤,我们已经成功将OpenSSH和OpenSSL升级到了最新的稳定版本,解决了多个安全漏洞。建议在执行升级操作前,先在测试环境中进行验证,确保升级过程不会影响到生产环境的正常运行。

参考文档

👉 最后,愿大家都可以解决工作中和生活中遇到的难题,剑锋所指,所向披靡~

相关推荐
linkingvision26 分钟前
H5S 视频监控AWS S3 对象存储
linux·运维·aws·视频监控s3对象存储
doupoa37 分钟前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric
BillKu37 分钟前
服务器多JAR程序运行与管理指南
运维·服务器·jar
QQ2740287561 小时前
BlockMesh Ai项目 监控节点部署教程
运维·服务器·web3
belldeep1 小时前
WSL 安装 Debian 12 后,Linux 如何安装 vim ?
linux·debian·vim
亚林瓜子1 小时前
Spring集成Redis中禁用主机名DNS检测
redis·spring·ssh
wqqqianqian2 小时前
国产linux系统(银河麒麟,统信uos)使用 PageOffice自定义Word模版中的数据区域
linux·word·自定义·pageoffice·数据区域
南棱笑笑生2 小时前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统更新boot.img
linux·运维·ubuntu
XMYX-02 小时前
Linux du 命令终极指南:从基础到精通
linux·服务器
小锋学长生活大爆炸2 小时前
【教程】Docker更换存储位置
运维·docker·容器