Linux【安全 02】OpenSSH漏洞修复(离线升级最新版本流程)网盘分享3个安装包+26个离线依赖

OpenSSH离线升级最新版本流程

  • 1. 漏洞信息
  • 2. 环境说明
  • 3.依赖安装
    • 3.1 在线安装
    • 3.2 离线安装
  • 4.备份卸载
    • 4.1 备份
    • 4.2 卸载旧版本
  • 5.安装
    • 5.1 zlib
    • 5.2 ssl
    • 5.3 openssh
      • 5.3.1 安装
      • 5.3.2 配置
  • 6.脚本整理
  • 7.文件资源

本文仅针对CentOS7.8版本,其他版本未测试,安装包文件放置在/home/openssh目录下,某些命令包含此路径。

1. 漏洞信息

OpenSSH(OpenBSD Secure Shell)是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现,支持对所有的传输进行加密,可有效阻止窃听、连接劫持以及其他网络级的攻击。

  • 7.7及之前版本中存在竞争条件问题漏洞。该漏洞源于网络系统或产品在运行过程中,并发代码需要互斥地访问共享资源时,对于并发访问的处理不当。
  • 8.3p1及之前版本中的scp的scp.c文件存在操作系统命令注入漏洞。该漏洞源于外部输入数据构造操作系统可执行命令过程中,网络系统或产品未正确过滤其中的特殊字符、命令等。攻击者可利用该漏洞执行非法操作系统命令。
  • 7.6之前的版本中的sftp-server.c文件的‘process_open’函数存在安全漏洞,该漏洞源于程序在只读模式下没有正确的阻止写入操作。攻击者可利用该漏洞创建长度为零的文件。
  • 5.7版本至8.3版本的客户端中存在信息泄露漏洞。攻击者可利用该漏洞获取信息。
  • 7.8及之前版本中的auth-gss2.c文件存在信息泄露漏洞。该漏洞源于网络系统或产品在运行过程中存在配置等错误。未授权的攻击者可利用漏洞获取受影响组件敏感信息。

2. 环境说明

# 系统版本
CentOS Linux release 7.8.2003 (Core)

# 当前OpenSSH版本
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

3.依赖安装

3.1 在线安装

# X.用于编译zlib【亲测不用安装】可忽略
yum install gcc gcc-c++ make -y 

# 1.用于编译openssl【需要联网】
yum install perl-CPAN perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -y 

image.png

3.2 离线安装

# 1.【已下载】的26个依赖文件
perl-IPC-Cmd-0.80-4.el7.noarch.rpm
pyparsing-1.5.6-9.el7.noarch.rpm
gdbm-devel-1.10-8.el7.x86_64.rpm
perl-Test-Harness-3.28-3.el7.noarch.rpm
perl-ExtUtils-Manifest-1.61-244.el7.noarch.rpm
perl-version-0.99.07-6.el7.x86_64.rpm
perl-Perl-OSType-1.003-3.el7.noarch.rpm
perl-Module-Load-Conditional-0.54-3.el7.noarch.rpm
libdb-devel-5.3.21-25.el7.x86_64.rpm
perl-Module-Load-0.24-3.el7.noarch.rpm
perl-ExtUtils-MakeMaker-6.68-3.el7.noarch.rpm
perl-local-lib-1.008010-4.el7.noarch.rpm
perl-Data-Dumper-2.145-3.el7.x86_64.rpm
perl-Digest-1.17-245.el7.noarch.rpm
perl-Module-Metadata-1.000018-2.el7.noarch.rpm
perl-Digest-SHA-5.85-4.el7.x86_64.rpm
perl-Locale-Maketext-1.23-3.el7.noarch.rpm
perl-Params-Check-0.38-2.el7.noarch.rpm
perl-ExtUtils-ParseXS-3.18-3.el7.noarch.rpm
systemtap-sdt-devel-4.0-13.el7.x86_64.rpm
perl-devel-5.16.3-299.el7_9.x86_64.rpm
perl-ExtUtils-CBuilder-0.28.2.6-299.el7_9.noarch.rpm
perl-Locale-Maketext-Simple-0.21-299.el7_9.noarch.rpm
perl-ExtUtils-Install-1.58-299.el7_9.noarch.rpm
perl-Module-CoreList-2.76.02-299.el7_9.noarch.rpm
perl-CPAN-1.9800-299.el7_9.noarch.rpm

# 2.安装
rpm -ivh *.rpm

4.备份卸载

这里一定要注意,如果使用的是工具连接的服务器,此时最好多打开几个窗口,sshd服务停止之后旧连接可以使用但是无法建立新的连接,也可以安装telnet进行服务器连接(使用telnet后云服务器报恶意文件,查看之后都是telnet的用户创建的,能不用的话尽量还是不要用,毕竟又打开了一个可能遭遇暴力破解的端口)。

4.1 备份

# 1.停止ssh服务
systemctl stop sshd

# 2.备份ssh文件
cp -r /etc/ssh /etc/ssh.old
cp -p /usr/bin/ssh /usr/bin/ssh.bak
cp -p /usr/sbin/sshd /usr/sbin/sshd.bak
cp -p /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak

4.2 卸载旧版本

# 1.查询原有ssh包并卸载
rpm -qa | grep openssh
openssh-7.4p1-23.el7_9.x86_64
openssh-clients-7.4p1-23.el7_9.x86_64
openssh-server-7.4p1-23.el7_9.x86_64

# 2.卸载
rpm -e --nodeps openssh-7.4p1-23.el7_9.x86_64
rpm -e --nodeps openssh-clients-7.4p1-23.el7_9.x86_64
rpm -e --nodeps openssh-server-7.4p1-23.el7_9.x86_64

# 合并脚本
rpm -e --nodeps $(rpm -qa | grep openssh)

# 3.验证
rpm -qa | grep openssh

5.安装

5.1 zlib

直接下载或官网下载后上传zlib-1.3.1.tar.gz文件:

# 1.下载
wget https://zlib.net/current/zlib.tar.gz

# 2.解压文件
tar -zxvf zlib.tar.gz
cd  zlib-1.3.1

# 3.编译安装zlib
./configure --prefix=/usr/local/zlib
make && make install

5.2 ssl

直接下载或官网下载后上传openssl-3.2.0.tar.gz文件:

# 0.直接下载【根据版本需要进行下载】
wget https://www.openssl.org/source/old/3.2/openssl-3.2.0.tar.gz

# 1.解压文件
tar -zxvf openssl-3.2.0.tar.gz
cd openssl-3.2.0
 
# 2.编译安装
# --prefix指定编译到的目录 --shared作用是生成动态链接库(即.so库)
./config  --prefix=/usr/local/ssl  --shared
# 编译安装ssl【10分钟左右】
make && make install
 
# 3.路径写入etc/ld.so.conf  
# 这里有网友遇到过问题(32位系统兼容问题) 命令已修复从lib64改为lib 这样64位和32位置系统都能可以正常使用
echo '/usr/local/ssl/lib64' >> /etc/ld.so.conf
# echo '/usr/local/ssl/lib' >> /etc/ld.so.conf

# 4.刷新库文件
ldconfig -v

5.3 openssh

5.3.1 安装

直接下载或官网下载后上传openssh-9.7p1.tar.gz

# 0.直接下载【最新版本】注意跟下载后上传的版本不是一样的
wget https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/openssh-9.7.tar.gz

# 1.解压
tar -zxvf openssh-9.7p1.tar.gz
cd openssh-9.7p1

# 2.编译安装【3分钟左右】
./configure --prefix=/usr/local/ssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make -j 4 && make install
  • -j 4: 这是一个选项,用于指定同时执行的编译任务数(即并行度)。这里的数字 4 表示允许同时运行4个编译任务。启用多任务并行编译可以显著加快编译速度,特别是对于大型项目或具有多个相互独立模块的软件。通过使用 -j 参数,系统可以利用多核处理器的优势,同时处理多个编译任务,从而缩短整体编译时间。

5.3.2 配置

# 1.ssh允许root登录 需要密码进行验证
echo 'PermitRootLogin yes' >> /usr/local/ssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/ssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/ssh/etc/sshd_config
 
# 2.将编译安装的新配置文件拷贝到原路径下
cp /usr/local/ssh/bin/ssh /usr/bin/ssh
cp /usr/local/ssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/ssh/etc/sshd_config /etc/ssh/sshd_config
cp /usr/local/ssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
 
# 3.拷贝启动脚本
cp -p /opt/openssh/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd
# 4.给sshd添加可执行权限
chmod +x /etc/init.d/sshd
# 5.设置开机自启
systemctl enable sshd
# 6.重新启动sshd服务
systemctl restart sshd
# 7.查看sshd服务状态
systemctl status sshd
# 8.查看ssh版本是否升级成功,可以查看到已经是9.5版本了
ssh -V
OpenSSH_9.7p1, OpenSSL 3.2.0 23 Nov 2023

至此新版本升级成功。感谢以下博主的分享:
https://blog.csdn.net/morecccc/article/details/134758892
https://www.cnblogs.com/wjsqqj/p/17925907.html

6.脚本整理

# 1.依赖安装
rpm -ivh *.rpm

# 2.停止sshd服务
systemctl stop sshd

# 3.删除已安装的openssh
rpm -e --nodeps $(rpm -qa | grep openssh)

# 4.zlib安装
tar -zxvf zlib.tar.gz
cd zlib-1.3.1
./configure --prefix=/usr/local/zlib
make && make install

# 5.ssl安装
tar -zxvf openssl-3.2.0.tar.gz
cd openssl-3.2.0
./config  --prefix=/usr/local/ssl  --shared
make && make install
echo '/usr/local/ssl/lib64' >> /etc/ld.so.conf
ldconfig -v

# 6.openssh安装
tar -zxvf openssh-9.7p1.tar.gz
cd openssh-9.7p1
./configure --prefix=/usr/local/ssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
make -j 4 && make install

# 7.ssh配置
echo 'PermitRootLogin yes' >> /usr/local/ssh/etc/sshd_config
echo 'PubkeyAuthentication yes' >>/usr/local/ssh/etc/sshd_config
echo 'PasswordAuthentication yes' >>/usr/local/ssh/etc/sshd_config
 
# 2.将编译安装的新配置文件拷贝到原路径下
cp /usr/local/ssh/bin/ssh /usr/bin/ssh
cp /usr/local/ssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/ssh/etc/sshd_config /etc/ssh/sshd_config
cp /usr/local/ssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
cp -p /opt/openssh/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
systemctl enable sshd
systemctl restart sshd
systemctl status sshd

7.文件资源

链接:https://pan.baidu.com/s/1tUBYK4WzCiJBcCqQDOtQhw?pwd=8tfv
提取码:8tfv

image.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电脑的kernelbase.dll故障怎么处理?kernelbase.dll是什么文件

遇到由于“kernelbase.dll”文件出错导致的应用程序崩溃或系统不稳定的问题。这种情况不仅会影响工作效率,还可能导致数据损失或更严重的系统问题。kernelbase.dll是Windows操作系统中的一个关键系统文件,它包含了多个执行基础系统功能的程序代码。因此&…

千锋教育大优惠

IT全学科自学至尊卡(3年卡) Linux云计算运维、Python全栈、数据分析、人工智能、Java、大前端、网络安全、物联网、全媒体、影视剪辑等14大主流方向,300精品视频课程免费学。课程持续更新,电脑端手机APP小程序多平台无忧畅学&…

认购期权是什么?与认沽期权有何区别

期权就是股票,唯一区别标的物上证指数,会看大盘吧,交易两个方向认购期权做多,认沽期权做空,双向t0交易没了,跟期货一样,对的,玩的也是合约,唯一区别没有保证金不会爆仓&a…

【Python实战】使用postman测试flask api接口

cookie_demo.py # -*- coding: utf-8 -*- """ Time : 2024/5/28 17:14 Author : 娜年花开 File : cookie_demo.py Desc : 需求:用户需要先登陆,登陆之后,通过Cookie来判断是不是能够访问登录后的接口userinfo &quo…

XYkeep健身小程序基于FastAdmin+ThinkPHP+UniApp

应用介绍 本文来自:XYkeep健身小程序基于FastAdminThinkPHPUniApp - 源码1688 基于FastAdminThinkPHPUniApp(目前仅支持微信小程序和公众号)开发的健身相关行业微信小程序,程序适用于健身房、瑜伽馆、游泳馆、篮球馆等健身培训场…

深度学习入门-第3章-神经网络

前面的待补充 3.6 手写数字识别 3.6.1 MNIST 数据集 本书提供了便利的 Python 脚本 mnist.py ,该脚本支持从下载 MNIST 数据集到将这些数据转换成 NumPy 数组等处理(mnist.py 在 dataset 目录下)。 使用 mnist.py 时,当前目录必须…

Zabbix嵌入第三方页面遇到的沙盒sandbox问题,一招解决

Zabbix想要嵌入第三方的界面遇到的沙盒问题,一招解决sandbox 1 浏览器显示: Blocked script execution in ‘’ because the document’s frame is sandboxed and the ‘allow-scripts’ permission is not set.Understand this error quota.html:1 Blo…

轻松实现微信内下载,Xinstall让你的App推广更高效!

在微信中推广App,你是否遇到过这样的困扰:推广链接被微信拦截,用户需要手动复制链接到浏览器才能下载,大大降低了安装率?今天,我们要介绍的Xinstall,就是一款能够解决这一痛点的神器&#xff01…

千万不能踏入的SaaS合作伙伴计划三大误区!

启动一个非常基础的合作伙伴计划并不难……但这也使得人们很容易忽视启动真正成功的计划所需的一些最关键的步骤。在本文中,林叔将介绍在启动新合作伙伴计划时最常犯的错误。同时,我会教你如何避免每一个错误,并为你的计划设定成功的基础。 设…

百度百科人物百科修改注意事项

在修改百度百科人物百科时,百科优化网yajje分享需要注意以下几个方面: 参考资料的选择和使用 选择权威参考资料:在修改过程中,参考资料的选择至关重要。应尽可能从靠谱的来源寻找资料,如教科书、国家标准或公文、学术…

getway整合sentinel流控降级

3. 启动sentinel控制台增加流控规则: 根据API分组进行流控: 1.设置API分组: 2.根据API分组进行流控: 自定义统一异常处理: nginx负载配置:

gitee和github的协同

假设gitee上zhaodezan有一个开发库,但是从andeyeluguo上拉取最新的(从github上同步过来最新的) git remote add dbgpt_in_gitee https://gitee.com/andeyeluguo/DB-GPT.git remote -v git pull --rebase dbgpt_in_gitee main 有冲突可能需要…

用友NC pagesServlet SQL注入致RCE漏洞复现(XVE-2024-13067)

0x01 产品简介 用友NC是由用友公司开发的一套面向大型企业和集团型企业的管理软件产品系列。这一系列产品基于全球最新的互联网技术、云计算技术和移动应用技术,旨在帮助企业创新管理模式、引领商业变革。 0x02 漏洞概述 用友NC /portal/pt/servlet/pagesServlet/doPost接口…

CV Method:经典CNN Backbone总结

文章目录 前言一、ResNet二、ResNeXt三、Res2Net四、SeNet五、ResNeSt六、DenseNet七、CSPNetPytorch Model Code总结 前言 Backbone作为一切深度学习任务的基础,不论是理论还是实际应用都有重要的意义,本文针对经典Backbone进行总结,这些Ba…

【QT5】<总览一> QT环境搭建、快捷键及编程规范

文章目录 前言 一、简单介绍QT 二、安装QT Creator 三、第一个QT项目 四、常用快捷键 五、QT中的编程规范 前言 在嵌入式Linux应用层开发时,经常使用QT作为图形化界面显示工具。为学习Linux下的QT编程,在Ubuntu和开发板中搭建QT开发环境&#xff…

纠偏控制比例换向阀放大器

纠偏控制比例换向阀放大器是一种用于提高工业自动化控制系统精度和可靠性的关键组件。在现代工业生产中,精确控制生产线上材料的运行轨迹对于确保产品质量和提高生产效率至关重要。伺服阀根据接收到的信号推动设备进行相应的移动,直到材料边缘回到目标位…

推荐低成本低功耗的纯数字现场可重构IC

CPLD采用CMOS EPROM、EEPROM、快闪存储器和SRAM等编程技术,从而构成了高密度、高速度和低功耗的可编程逻辑器件。 RAMSUN提供的型号LS98003是通用可配置的数字逻辑芯片,有体积小、超低功耗和高可靠性等特点。客户可以根据自己的功能需求设计芯片&#x…

中介模式实现聊天室

中介者模式的核心逻辑就是解耦对象‘多对多’的相互依赖关系。当遇到一大堆混乱的对象呈现“网状结构”,利用通过中介者模式解耦对象之间的通讯。 代码案例 抽象中介类 public abstract class AbstractChatRoom {public abstract void notice(String message , Us…

复合材料数据整合与自动识别抽取系统

概述:为材料行业的研发提供自动化数据整合与识别抽取系统,以降低研发成本、提升效率并推动行业智能化转型。 客户背景 在复合材料行业中,信息的获取和整合是一个复杂且成本高昂的过程。由于该行业的数据分散在各种文献、报告、网站等渠道&am…

【Web API DOM02】如何获取、操作DOM元素

一&#xff1a;获取DOM元素 1 根据CSS选择器获取 语法格式如下&#xff1a; &#xff08;1&#xff09;选中一个DOM元素 document.querySeletor(CSS选择器) <ul><li>1</li><li>2</li><li>3</li> </ul> document.querySel…