【Linux】升级OpenSSH版本规避远程代码执行漏洞

2024-08-30 09:44

本文主要是介绍【Linux】升级OpenSSH版本规避远程代码执行漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文首发于 ❄️慕雪的寒舍

升级OpenSSH版本规避远程代码执行漏洞。

说明

今天早上逛别人的博客的时候看到了这个重磅消息。OpenSSH爆出能远程通过root身份执行任意代码的漏洞,影响版本是 8.5p1 <= OpenSSH < 9.8p1,奇安信的报告可以点我查看。

上我的几个云服务器(ubuntu22.04和CentOS8Strem)看了看版本,Ubuntu的服务器中招了

$ sshd -V
unknown option -- V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.6, OpenSSL 3.0.2 15 Mar 2022
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file][-E log_file] [-f config_file] [-g login_grace_time][-h host_key_file] [-o option] [-p port] [-u len]

CentOS的服务器因为依赖项确实老旧,没有中招,因祸得福了属于是。

# sshd -V
unknown option -- v
OpenSSH_8.0p1, OpenSSL 1.1.1k  FIPS 25 Mar 2021
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file][-E log_file] [-f config_file] [-g login_grace_time][-h host_key_file] [-o option] [-p port] [-u len]

不过本次攻击如果服务器上有fail2ban的话能被拦截掉。我的服务器都安装了1panel里面的fail2ban组件,好欸!

修复措施

参考博客:https://learnku.com/articles/87482 和论坛 https://linux.do/t/topic/124761

编译和安装依赖项

# 安装编译依赖
sudo apt-get update
sudo apt-get install -y build-essential zlib1g-dev libssl-dev# 下载指定版本源码
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz# 解压并进入目录
tar -xzf openssh-9.8p1.tar.gz
cd openssh-9.8p1# 编译和安装
./configure
make
sudo make install# 重启
sudo systemctl restart ssh

可以用下面的命令一键升级(和上面的一致只是整合在一起了)

sudo apt-get update && sudo apt-get install -y build-essential zlib1g-dev libssl-dev && wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz && tar -xzf openssh-9.8p1.tar.gz && cd openssh-9.8p1 && ./configure && make && sudo make install && sudo systemctl restart ssh

处理后重新看看版本更新了没有,如下所示就是OK了——吗?

# ssh -V
OpenSSH_9.8p1, OpenSSL 3.0.2 15 Mar 2022

实际上,上文的步骤只更新了ssh(客户端),而且是一个环境变量导致的“假更新”,sshd(服务端)还没有变化,还是旧版本。用可执行文件的绝对路径查看版本就会漏出鸡脚,依然是旧版本没有被正常升级。

# /usr/bin/ssh -V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.10, OpenSSL 3.0.2 15 Mar 2022

要更新一下软连接,才能正确更新ssh/sshd。

# 备份原来的ssh组件
mv /usr/sbin/sshd /usr/sbin/sshd.old
mv /usr/bin/ssh /usr/bin/ssh.old
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.old
# 更新
cp /usr/local/bin/ssh /usr/bin/ssh
cp /usr/local/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/sbin/sshd /usr/sbin/sshd
# 重启服务
sudo systemctl restart ssh
sudo systemctl restart sshd

如下所示,更新成功。

# sshd -V
OpenSSH_9.8p1, OpenSSL 3.0.2 15 Mar 2022
# ssh -V
OpenSSH_9.8p1, OpenSSL 3.0.2 15 Mar 2022

注意,必须使用cp来修改文件,而不能使用软连接!

后续

注意,升级完毕sshd后会导致服务器的ssh密钥发生变化,如果你的本地曾经链接过这个主机,会出现本地记录的公钥和服务器升级ssh后重新发送的公钥不一致的情况。

这时候需要修改C:\Users\用户名\.ssh\known_hosts这个文件(使用记事本打开就行了),将里面对应云服务器IP开头的记录全部删除,再重新链接服务器。

如果您不执行这一步操作,一些严格检查密钥的ssh终端软件可能会无法连接服务器,比如vscode的remote ssh插件,tabby则会在重新链接服务器的时候弹出密钥不一致的警告。反正修改一下准没错,修改了之后重新接受并保存云服务器发过来的新密钥就可以了。

PS:vscode的remove ssh插件在出现密钥不一致的时候会显示链接不上远程服务器,但是在错误日志中会打印出密钥不一致和开启了严格检查相关的字样(当然打印的错误信息是全英文的),我也是因此定位到这个问题的。所以说遇到问题的时候,不要有畏难情绪,一定要敢于看日志,敢于查日志。

这篇关于【Linux】升级OpenSSH版本规避远程代码执行漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120467

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

基于Linux的ffmpeg python的关键帧抽取

《基于Linux的ffmpegpython的关键帧抽取》本文主要介绍了基于Linux的ffmpegpython的关键帧抽取,实现以按帧或时间间隔抽取关键帧,文中通过示例代码介绍的非常详细,对大家的学... 目录1.FFmpeg的环境配置1) 创建一个虚拟环境envjavascript2) ffmpeg-py

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删