【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

相关文章

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ