Linux环境下OpenSSH升级到 OpenSSH_9.8p1(内置保姆级教程并包含openssl升级过程)

news2024/11/16 5:49:49

文章目录

  • 前言
  • 一、下载openssh、openssl二进制包
  • 二、升级步骤
    • 1.系统开启telnet,防止意外导致shh无法连接
    • 2.确认升级前openssh的版本
    • 3.升级openssh
      • 3.1.备份旧ssh配置文件及目录
      • 3.2.备份旧ssh相关的二进制程序文件
      • 3.3.安装gcc,并解压9.8p1的安装包
      • 3.4.执行openssh编译命令
      • 3.5.openssh编译报错示例
    • 4.升级openssl
      • 4.1.检查并备份旧openssl相关文件
      • 4.2.解压安装包、执行编译安装命令
      • 4.3.创建软链接
      • 4.4.验证openssl版本
    • 5.openssh续前缘升级操作
      • 5.1 执行openssh编译
      • 5.2.执行openssh安装命令
      • 5.3.复制sshd启动脚本,并调整配置文件
      • 5.4.启动sshd,并配置开机自启动操作
      • 5.5.验证openssh、openssl版本,并验证服务器登录、scp等操作是否正常
    • 6.注意事项(报错补充)
      • 6.1.执行openssh编译命令可能遇到的报错及解决方法
      • 6.2.openssh9.8p1安装完成并启动后,如果服务器无法连接问题排查处理
  • 总结


前言

2024年7月1日接到安全部门同事邮件通知,目前生产环境及测试环境服务器Openssh存在远程代码执行漏洞(CVE-2024-6387),漏洞等级高,且攻击者可以成功利用该漏洞获得远程root shell最高权限从而执行任意代码及命令,主要受影响版本为8.5p1<=Openssh<9.8p1,安全版本为openssh>=9.8p1。官方给出的修改建议是升级openssh版本至9.8p1,安全部门同事及项目侧领导邮件确认升级至9.8p1版本并对服务器添加hosts.allow、hosts.deny文件,仅允许通过堡垒机连接服务器。因此本文章主要以升级Openssh漏洞为主,对其操作进行记录,测试环境于生产环境的操作系统版本为centos7.8,x86_64架构,目前已均获得验证,升级openssh、openssl版本后服务器操作、相关业务等在一个多月内均未受到影响。


提示:以下是本篇文章正文内容,下面案例可供参考

为什么升级openssh9.8时需要升级openssl?因为在升级openssh过程中报了一个错误,提示需要openssl版本至1.1.1,因此才有了下方升级openssl的操作。如果没有报该错误,则可不升级openssl,具体看下方演示

一、下载openssh、openssl二进制包

1、下载openssh源码包
[root@python1 ~]# wget  https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
--2024-08-14 11:02:15--  https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
Resolving cdn.openbsd.org (cdn.openbsd.org)... 146.75.115.52, 2a04:4e42:15::820
Connecting to cdn.openbsd.org (cdn.openbsd.org)|146.75.115.52|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1910393 (1.8M) [application/octet-stream]
Saving to: ‘openssh-9.8p1.tar.gz’

38% [=========================================>               729,088     49.9KB/s  eta 22s

2、下载openssl源码包
[root@python1 ~]# wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1s.tar.gz

二、升级步骤

需要升级的服务器尽可能通外网,因为涉及到zlib-devel、pam、gcc等包的安装,如果是纯内外环境,则需要提前下载好包并上传到内网环境在做操作。

1.系统开启telnet,防止意外导致shh无法连接

在需要升级的服务器上安装

[root@python1 ~]# yum install -y telnet-server
[root@python1 ~]# yum install -y xinetd
[root@python1 ~]# systemctl start telnet.socket && systemctl start xinetd.service

#因为默认情况下系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需设置如下内容
[root@python1 ~]# echo  'pts/0'  >> /etc/securetty 
[root@python1 ~]# echo  'pts/1'  >> /etc/securetty
[root@python2 ~]# telnet 需要升级ssh的服务器ip
如下图所示

在这里插入图片描述
在这里插入图片描述

2.确认升级前openssh的版本

[root@python1 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

在这里插入图片描述

3.升级openssh

3.1.备份旧ssh配置文件及目录

[root@python1 ~]# mv /etc/ssh/ /home/ssh-bak

3.2.备份旧ssh相关的二进制程序文件

[root@python1 ~]# mv /usr/bin/ssh /usr/bin/ssh.bak

[root@python1 ~]# mv /usr/sbin/sshd /usr/sbin/sshd.bak

[root@python1 ~]# mv /etc/pam.d/sshd  /etc/pam.d/sshd.old

3.3.安装gcc,并解压9.8p1的安装包

#如果服务器已安装过gcc,则忽略此步骤

[root@python1 ~]# yum -y install gcc

解压9.8p1 tar包

[root@python1 ~]# tar  xf openssh-9.8p1.tar.gz -C /data/updateSsh/

3.4.执行openssh编译命令

[root@python1 openssh-9.8p1]# cd /data/updateSsh/openssh-9.8p1 && ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords

编译过程示例
报错示例

3.5.openssh编译报错示例

如上3.4中报错示例图所示,编译安装openssh—9.8p1版本需要openssl版本到达1.1.1l,但此时我们的openssl版本是1.0.2k,如下图所示,因此需要先升级openssl

在这里插入图片描述

4.升级openssl

如果遇到上述3.4和3.5的报错,则先执行该步骤,升级openssl

4.1.检查并备份旧openssl相关文件

[root@python1 ~]#  whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/local/openssl /usr/share/man/man1/openssl.1ssl.gz
[root@python1 openssh-9.8p1]# mv /usr/bin/openssl  /usr/bin/openssl.old
[root@python1 openssh-9.8p1]# mv /usr/lib64/openssl /usr/lib64/openssl.old
[root@python1 openssh-9.8p1]# mv /usr/include/openssl  /usr/include/openssl.old
[root@python1 openssh-9.8p1]# mv /usr/local/openssl  /usr/local/openssl.old

4.2.解压安装包、执行编译安装命令

[root@python1 updateSsh]#
[root@python1 openssl-1.1.1s]# ./config --prefix=/usr --shared && make && make install

openssl编译过程
在这里插入图片描述

4.3.创建软链接

注意,如果有这两个文件就执行,如果没有报如下failed,忽略即可不影响

[root@python1 openssl-1.1.1s]# ln -s /usr/lib64/libcrypto.so.1.0.0  /usr/lib64/libcrypto.so.10
ln: failed to create symbolic link ‘ /usr/lib64/libcrypto.so.10’: No such file or directory
[root@python1 openssl-1.1.1s]# ln -s /usr/lib64/libssl.so.1.0.0  /usr/lib64/libssl.so.10
ln: failed to create symbolic link ‘ /usr/lib64/libssl.so.10’: No such file or directory

4.4.验证openssl版本

在这里插入图片描述
至此,openssl升级完毕,接着升级openssh

5.openssh续前缘升级操作

5.1 执行openssh编译

因为在第三步升级openssh过程报错openssl版本低问题,因此在步骤四进行了升级openssl操作,升级完成后,接着重新升级openssh

[root@python1 openssh-9.8p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords
升级完成截图如下所示

注意事项:

如果再次执行上述编译安装命令,报如下错误,则需要先执行以下安装命令
configure: error: PAM headers not found

[root@python1 openssh-9.8p1]# yum -y install pam-devel.x86_64

在这里插入图片描述
安装完pam-devel依赖后,继续执行上述编译安装命令

[root@python1 openssh-9.8p1]# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords

当出现以下截图所示,则说明openssh编译完成,接着执行make和make install命令
openssh编译完成示例图

5.2.执行openssh安装命令

此步骤必须在5.1步骤中编译完成的基础上执行

[root@python1 openssh-9.8p1]#  make && make install
执行完成后如下图所示

openssh安装完成示例图

5.3.复制sshd启动脚本,并调整配置文件

[root@python1 openssh-9.8p1]# cp contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
[root@python1 openssh-9.8p1]# cp contrib/redhat/sshd.init /etc/init.d/sshd
[root@python1 openssh-9.8p1]# echo 'X11Forwarding yes' >> /etc/ssh/sshd_config  #
[root@python1 openssh-9.8p1]# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config #允许root用户登录
[root@python1 openssh-9.8p1]# vim /etc/ssh/sshd_config
								PasswordAuthentication yes  #打开密码认证的注释

5.4.启动sshd,并配置开机自启动操作

[root@python1 openssh-9.8p1]# systemctl enable sshd
[root@python1 openssh-9.8p1]# systemctl restart sshd

5.5.验证openssh、openssl版本,并验证服务器登录、scp等操作是否正常

[root@python1 openssh-9.8p1]# ssh -V
OpenSSH_9.8p1, OpenSSL 1.1.1s  1 Nov 2022

在这里插入图片描述
验证scp命令是否可用
在这里插入图片描述
验证服务器能是否正常登录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,服务器openssh升级至9.8版本全部完成

6.注意事项(报错补充)

6.1.执行openssh编译命令可能遇到的报错及解决方法

在这里插入图片描述

如果遇到以上图中的报错,则使用该解决方法。执行完该步骤后,再次执行openssh编译命令即可
[root@python1 openssh-9.8p1]# yum install -y zlib-devel

在这里插入图片描述

如果遇到以上图中的报错,则使用该解决方法。执行完该步骤后,再次执行openssh编译命令即可
[root@python1 openssh-9.8p1]# yum -y install openssl-devel

在这里插入图片描述

如果遇到以上图中的报错,则使用该解决方法。执行完该步骤后,再次执行openssh编译命令即可
[root@python1 openssh-9.8p1]# yum -y install pam-devel.x86_64

6.2.openssh9.8p1安装完成并启动后,如果服务器无法连接问题排查处理

[root@python1 openssh-9.8p1]#  systemctl stop firewalld.service
[root@python1 openssh-9.8p1]#  systemctl disable firewalld.service
[root@python1 openssh-9.8p1]#  vim /etc/selinux/config
设置为 SELINUX=disabled

总结

至此,openssh9.8p1版本升级完成,并且在测试环境升级完成后观察了一天并没有不可控因素产生,目前已升级到了生产环境,一切平稳允许,漏洞也已得到了解决。因此整理出本章博客内容,希望对大家有用

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超有性价比深度学习卡特斯拉 P100,16G大显存,Stable Diffusion AI 绘画利器

超有性价比深度学习卡特斯拉 P100&#xff0c;16G大显存&#xff0c;Stable Diffusion AI 绘画利器 在当今数字化创作的时代&#xff0c;AI 绘画技术正以惊人的速度发展&#xff0c;为艺术家和创作者们带来了全新的可能性。而要实现高效的 AI 绘画&#xff0c;一款性能卓越的显…

MySQL——基本概念、环境安装、分类、语法(增删改查)以及内置数据库与基本函数

目录 一、数据库的概念 二、数据库的分类 关系型数据库&#xff1a; 非关系型数据库&#xff1a; 三、数据库系统 四、安装数据库 配置数据库的环境变量 五、MySQL的登录命令 六、SQL DDL DML DQL DCL 七、创建数据库 八、增删改查数据库 增加数据 删除数据 逻…

进程间的通信2——有名管道、信号

通信方式&#xff1a;(1)单工&#xff1a;//广播&#xff1b;单一方向的数据通道&#xff1b; &#xff08;2&#xff09;半双工&#xff1a;//对讲机&#xff1b;同一时刻只能有一个方向&#xff1b; &#xff08;3&#xff09;全双工&#xff1a;//手机电话&#xff1b;同一时…

Selenium 自动化测试平台

1.介绍 Selenium 是一套 Web网站 的程序自动化操作 解决方案。 通过它&#xff0c;我们可以写出自动化程序&#xff0c;像人一样在浏览器里操作web界面。 比如点击界面按钮&#xff0c;在文本框中输入文字 等操作。 而且还能从web界面获取信息。 比如获取 火车、汽车票务信息…

Spark2.x 入门:套接字流(DStream)

Spark Streaming可以通过Socket端口监听并接收数据&#xff0c;然后进行相应处理。 新建NetworkWordCount.scala代码文件&#xff0c;请在该文件中输入如下内容&#xff1a; package org.apache.spark.examples.streaming import org.apache.spark._ import org.apache.spark…

图像数据处理9

二、灰度变换 2.3 非线性灰度变换 以下式子中使用 f 表示输入图像的像素值&#xff0c;g 表示输出图像的像素值 2.3.1伽马校正&#xff08;Gamma Correction&#xff09; γ 是伽马值&#xff0c;通常大于0。调整 γ 的值可以改变图像的亮度。当 γ<1 时&#xff0c;图像…

一个简单的Rtmp推流客户端(QT录音,OpenCV摄像,FFmpeg编码推流)

RTMP&#xff08;Real-Time Messaging Protocol&#xff09;是一种实时流媒体传输协议&#xff0c;常用于音视频直播。 RTMP推流客户端是一种能够将音视频数据推送到直播服务器的工具。QT录音是利用Qt库实现的录音功能。OpenCV摄像是利用OpenCV库实现的对摄像头的控制和图像处理…

Chrome书签搜索插件

效果展示 这是一个chroma插件&#xff0c;可以按住 ctrl/command B 进行搜索您的书签&#xff0c;并且点击打开您的书签。支持上下切换回车打开新页面。支持文件夹搜索。多层级文件夹使用 / 分割。如&#xff1a;文件夹1/文件夹2/标签1 扩展下载地址 bookmark-search 欢迎有…

小程序学习day09-WXS脚本、自定义组件-组件的创建、引用、组件与页面的区别、组件的样式隔离

39、WXS脚本&#xff08;小程序独有的一套脚本语言&#xff09; &#xff08;1&#xff09;作用&#xff1a;结合WXML&#xff0c;可以构建出页面结构 &#xff08;2&#xff09;应用&#xff1a;在小程序中充当过滤器。&#xff08;wxml无法调用在页面的.js中定义的函数&…

DNS in Kubernetes

DNS in Kubernetes 对象分配的名称Service DNS 记录Pod DNS 记录 Cluster DNS参考 DNS for Services and Pods 这里主要讨论集群内不同对象之间的DNS解析 默认情况下&#xff0c;创建集群时&#xff0c;k8s会部署内置的DNS服务器&#xff0c;在集群内&#xff0c;我们不关注…

spring-boot-3.2.6+spring-security-6.2.4+oauth2整合github示例

一、添加依赖 在 pom.xml 中添加如下依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"h…

<数据集>航拍路面病害识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3151张 标注数量(xml文件个数)&#xff1a;3151 标注数量(txt文件个数)&#xff1a;3151 标注类别数&#xff1a;7 标注类别名称&#xff1a;[Longitudinal crack, Transverse crack, Alligator crack, Oblique cr…

腾讯 图标点选 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我…

Element UI中报dateObject.getTime is not a function解决方法~

1、错误信息。 2、该报错原因是Element UI中日期组件的校验规则是type: "date",而一般我们从后台拿到的数据是字符串型的&#xff0c;不满足预期&#xff0c;就会报错。 3、解决方法。 去掉日子组件中的type: "date"校验规则即可。 rules: {newName: [{…

SOMEIP_ETS_046: echoUTF16FIXED

测试目的&#xff1a; 验证设备&#xff08;DUT&#xff09;是否能够正确处理echoUTF16FIXED方法的参数&#xff0c;并确保发送和接收的参数顺序和值保持一致。 描述 本测试用例旨在检查DUT在接收到一个使用echoUTF16FIXED方法的SOME/IP消息时&#xff0c;是否能够按照请求中…

利用PostgreSQL向量数据库和负责任的AI知识库在亚马逊云科技上构建商品推荐机器人

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技利用Postg…

软件需求规格说明书编写规范(Doc原件)

软件需求规格说明书编写规范&#xff08;Word原件&#xff09; 1.项目背景 2.项目目标 3.系统架构 4.总体流程 5.名称解释 6.功能模块 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明…

WPF MvvmLight

关于 停止更新 官网&#xff1a;http://www.mvvmlight.net/ 源码地址&#xff1a;GitHub - lbugnion/mvvmlight: The main purpose of the toolkit is to accelerate the creation and development of MVVM applications in Xamarin.Android, Xamarin.iOS, Xamarin.Forms, Wi…

C++ //练习 17.17 更新你的程序,令它查找输入序列中所有违反“ei“语法规则的单词。

C Primer&#xff08;第5版&#xff09; 练习 17.17 练习 17.17 更新你的程序&#xff0c;令它查找输入序列中所有违反"ei"语法规则的单词。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块&#xff1a; /**********…

定制开发AI智能名片O2O商城小程序:基于限量策略与个性化追求的营销创新

摘要:随着科技的飞速发展和消费者需求的日益多元化&#xff0c;传统商业模式正经历着前所未有的变革。在数字化转型的大潮中&#xff0c;定制开发AI智能名片O2O商城小程序作为一种新兴的商业模式&#xff0c;凭借其独特的个性化定制能力、高效的线上线下融合&#xff08;O2O&am…