修复OpenSSH远程代码执行漏洞:版本升级到9.9p1

目录

  • 前言
  • 1. 备份配置文件
  • 2. 下载 OpenSSH 最新版本
  • 3. 编译安装 OpenSSH
  • 4. 替换旧版 OpenSSH 并创建符号链接
  • 5. 重启 SSH 服务
  • 6. 验证安装结果
  • 结语
  • 参考文章

前言

OpenSSH 是一种广泛使用的远程登录协议,它确保了服务器和客户端之间的安全通信。然而,随着时间的推移,安全漏洞不断被发现并修复。近期,一些版本的 OpenSSH 出现了远程代码执行漏洞,攻击者可能利用此漏洞进行未经授权的操作。为了确保服务器的安全性,及时升级 OpenSSH 到最新版本至关重要。本篇文章将详细介绍如何备份配置文件、下载并编译安装最新版本的 OpenSSH(9.9p1),以及解决在编译过程中可能遇到的问题。

1. 备份配置文件

在进行任何升级操作之前,备份当前系统中的 OpenSSH 配置和可执行文件是非常重要的,以防止在升级过程中发生问题时可以快速恢复。

首先,备份 SSH 配置文件和二进制可执行文件:

cp -rf /etc/ssh /etc/ssh.bak
cp -rf /usr/bin/ssh /usr/bin/ssh.bak
cp -rf /usr/sbin/sshd /usr/sbin/sshd.bak

以上命令将 /etc/ssh 目录以及 /usr/bin/ssh/usr/sbin/sshd 文件备份至对应的 .bak 目录和文件。这可以确保在出现问题时,有一个可恢复的备份。

2. 下载 OpenSSH 最新版本

在确认备份完成后,我们可以下载 OpenSSH 最新的源代码以进行编译和安装。

首先使用 wget 命令下载 OpenSSH 的最新版本,这里以 9.9p1 版本为例:

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.9p1.tar.gz

下载完成后,使用以下命令解压:

tar zxvf openssh-9.9p1.tar.gz
cd openssh-9.9p1

此时,我们已经进入到 OpenSSH 源代码目录,接下来可以进行编译安装。

3. 编译安装 OpenSSH

在源代码目录中,首先需要配置编译环境。通过执行以下命令来进行配置:

./configure

然而,首次执行此命令时,可能会遇到以下错误提示:

configure: error: *** zlib.h missing - please install first or check config.log ***

这表明系统中缺少 zlib 库的开发文件。可以通过以下命令安装:

yum install zlib-devel

安装完成后,再次运行 ./configure,可能会遇到另一个错误提示:

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have "100020bf (OpenSSL 1.0.2k-fips  26 Jan 2017)")

此时,我们需要升级或安装符合要求的 OpenSSL 版本,具体可以参考相应的 OpenSSL 升级文章或指南。通常可以通过以下步骤来安装或升级 OpenSSL:

cd /usr/local
mkdir openssl
cd openssl
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1v/openssl-1.1.1v.tar.gz
tar -xzvf openssl-1.1.1v.tar.gz
cd openssl-1.1.1v
./config --prefix=/usr
make && make install
openssl version

升级完成后,返回 OpenSSH 目录并重新配置:

cd openssh-9.9p1
./configure

在这里插入图片描述

配置成功后,接下来可以执行以下命令进行编译和安装:

make && make install

这一步将会编译 OpenSSH 并将其安装到系统中。

4. 替换旧版 OpenSSH 并创建符号链接

安装完成后,为了使系统使用新的 OpenSSH 版本,我们需要替换系统中旧版的 sshsshd,并创建符号链接指向新版本的可执行文件。

首先,备份当前版本的 sshsshd

mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak

然后创建符号链接指向新版本的 OpenSSH:

ln -s /usr/local/bin/ssh /usr/bin/ssh
ln -s /usr/local/sbin/sshd /usr/sbin/sshd

这样,系统将使用我们刚刚编译安装的 OpenSSH 版本。

5. 重启 SSH 服务

在完成所有安装和配置后,重启 SSH 服务以应用新版本:

systemctl restart sshd

此时,你可能会遇到以下错误提示:

Bad configuration option: GSSAPIKexAlgorithms

在这里插入图片描述

这是由于新版本的 OpenSSH 不再支持旧版本中的某些配置选项。可以通过修改 /etc/ssh/sshd_config 文件,删除或注释掉不再支持的配置项来解决该问题。

解决配置问题后,再次重启 SSH 服务:

systemctl restart sshd

6. 验证安装结果

最后,使用以下命令验证 OpenSSH 是否已成功升级到新版本:

ssh -V

如果显示的版本为 OpenSSH_9.9p1,则说明升级成功。

结语

通过本文的步骤,我们成功修复了 OpenSSH 的远程代码执行漏洞,并升级到了最新的 9.9p1 版本。尽管升级过程可能遇到一些依赖库的问题,但只要按照提示安装或升级相关依赖,最终都可以顺利完成编译和安装。定期检查系统中的软件版本,并及时进行安全升级,是保障服务器安全的重要环节。希望本文能为读者提供有效的指导,确保服务器在面对各种安全威胁时能够及时更新和应对。

参考文章

1 https://cooldream2009.blog.csdn.net/article/details/142667560
升级 OpenSSL 的详细步骤(解决 SSH 漏洞的前提)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/437072.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解调用钉钉AI助理消息API发送钉钉消息卡片给指定单聊用户

文章目录 前言准备工作1、在钉钉开发者后台创建一个钉钉企业内部应用;2、创建并保存好应用的appKey和appSecret,后面用于获取调用API的请求token;3、了解AI助理主动发送消息API:4、应用中配置好所需权限:4.1、权限点4.…

期权卖方如何提高期权策略的胜率——选择卖出虚值期权更稳健

期权卖方如何提高盈利的胜率? 影响期权卖方最重要的因素是权利金(期权报价)​。权利金越贵,期权卖方的盈亏平衡点越大,就容易盈利。 影响权利金的因素 行权价(虚值期权权利金便宜,实值期权权利…

springboot的调度服务与异步服务实操

1.调度服务 1.1.JDK之ScheduledExecutorService 讲到调度任务,我们脑海里马上会想到ScheduledExecutorService。 ScheduledExecutorService是 Java java.util.concurrent 包中的一个接口,它继承自 ExecutorService 接口。它主要用于在给定的延迟后运行…

LeetCode[中等] 763. 划分字母区间

给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。 思路 贪心…

使用默认不可变的Rust变量会踩什么坑

讲动人的故事,写懂人的代码 Rust的变量真的是名不副实。名字中明明有个“变”字,却默认不可变。还美其名曰“不可变变量”。要想让变量名副其实,还必须费心额外加个mut关键字,并必须称其为“可变变量”,才能与前者区分…

使用kaggle命令下载数据集和模型

1、点击用户头像,点击Settings: 2、找到API,点击create new token,将自动下载kaggle.json: 3、在用户目录下创建.kaggle文件夹,并将下载的kaggle.json文件移动到该文件夹: cd ~ mv Downloads…

负载均衡--相关面试题(六)

在负载均衡的面试中,可能会遇到一系列涉及概念、原理、实践应用以及技术细节的问题。以下是一些常见的负载均衡面试题及其详细解答: 一、什么是负载均衡? 回答:负载均衡是一种将网络请求或数据传输工作分配给多个服务器或网络资源…

编码能力提升计划 - 华为OD统一考试(E卷)

2024华为OD机试(E卷+D卷+C卷)最新题库【超值优惠】Java/Python/C++合集 题目描述 为了提升软件编码能力,小王制定了刷题计划,他选了题库中的n道题,编号从0到n-1,并计划在m天内按照题目编号顺序刷完所有的题目(注意,小王不能用多天完成同一题)。 在小王刷题计划中,小王…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01目录1. Beyond Text-to-Text: An Overview of Multimodal and Generative Artificial Intelligence for Education Using Topi…

QT-MySQL QSqlDatabase: QMYSQL driver not loaded

文章目录 问题解决操作:自己尝试编译,各种错误层出不穷: 解决问题检查总结: 问题 使用Qt连接mysql数据库,遇到了一个问题,就是QT5.14.1版本在连接MySQL数据库时候,提示驱动加载失败&#xff0c…

el-table添加fixed后错位问题

1 方案1 return {isShow:false, }mounted() {this.isShowtrue},watch: {$route(newRoute) {this.monitoredRoute newRoute; // 将新的路由信息保存到组件的monitoredRoute属性中// 执行其他操作或调用其他方法},//或$route(newRoute) {this.monitoredRoute newRoute; // 将新…

AI 对话工具汇总

🐣个人主页 可惜已不在 🐤这篇在这个专栏AI_可惜已不在的博客-CSDN博客 🐥有用的话就留下一个三连吧😼 目录 前言: 正文: 前言: 在科技飞速发展的时代,AI 对话正逐渐成为我们获取信息、交流思想的新方式。它以强…

【系统代码】招投标采购一体化管理系统,JAVA+vue

前言: 随着互联网和数字技术的不断发展,企业采购管理逐渐走向数字化和智能化。数字化采购平台作为企业采购管理的新模式,能够提高采购效率、降低采购成本、优化供应商合作效率,已成为企业实现效益提升的关键手段。系统获取在文末…

MES(软件)系统是什么?MES系统为何如此重要呢?

一、MES系统的定义与功能 MES系统是一套面向制造企业车间执行层的生产信息化管理系统,它涵盖了多种功能模块,包括但不限于: 订单管理:处理客户订单,确保生产需求与市场需求相匹配。生产调度:根据订单和生…

1.5 测试用例

欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 测试用例介绍2 测试用例编写3 案例分析4 执行测试用例 前言 测试用例的设计和编制是软件活动中最重要的工作。本文详细讲解了测试用例的基本概念以及如何编写测试用例。 本篇文…

React 解释常见的 hooks: useState / useRef / useContext / useReducer

前言 如果对 re-render 概念还不清楚,建议先看 React & 理解 re-render 的作用、概念,并提供详细的例子解释 再回头看本文。 如果对 React 基础语法还不熟练,建议先看 React & JSX 日常用法与基本原则 再回头看本文。 useState useS…

51单片机系列-串口(UART)通信技术

🌈个人主页: 羽晨同学 💫个人格言:“成为自己未来的主人~” 并行通信和串行通信 并行方式 并行方式:数据的各位用多条数据线同时发送或者同时接收 并行通信特点:传送速度快,但因需要多根传输线&#xf…

监控易监测对象及指标之:全面监控Sybase_New数据库

随着企业数据量的不断增长和业务的复杂化,数据库的稳定性和性能成为了保障业务连续性的关键因素。Sybase_New数据库作为众多企业选择的数据管理解决方案,其稳定性和性能对于企业的运营至关重要。 为了确保Sybase_New数据库的稳定运行和高效性能&#xff…

【Golang】深入解读Go语言中的错误(error)与异常(panic)

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

蓝桥杯—STM32G431RBT6(IIC通信--EEPROM(AT24C02)存储器进行通信)

一、什么是IIC?24C02存储器有什么用? IIC (IIC 是半双工通信总线。半双工意味着数据在某一时刻只能沿一个方向传输,即发送数据的时候不能接收数据,接收数据的时候不能发送数据)即集成电路总线(…