Openssl1.1.1s rpm包构建与升级

rpmbuild入门知识
openssh/ssl二进制升级


文章目录

  • 前言
  • 一、资源准备
    • 1.下载openssh、openssl二进制包
    • 2.安装rpmbuild工具
    • 3.拷贝源码包到SOURCES目录下
    • 4.系统开启telnet,防止意外导致shh无法连接
    • 5.编译工具安装
    • 6.补充说明
  • 二、制作 OpenSSL RPM 包
    • 1.编写 SPEC 文件
    • 2.验证 SPEC 文件
    • 3.执行构建命令
    • 4.查看构建完成的rpm包
  • 三、通过RPM包更新 OpenSSL
    • 1.检查并备份旧openssl相关文件
    • 2.卸载旧版本openssl
    • 3.安装新版openssl
    • 4.验证openssl版本


前言

2025年第一个漏洞登场,系统中目前在使用的是OpenSSH_7.4p1, OpenSSL 1.0.2k-fips,然后就收到了漏扫团队的邮件,说该版本的openssh存在Openssh存在远程代码执行漏洞(CVE-2024-6387),因此需要升级到7.9版本及以上。在2024年8月份也写过一篇通过二进制方式升级openssh的文章,也就是顶部的第二篇文章,但是过程比较繁琐。本次将使用rpmbuild的知识,将源码包构建为RPM包形式,实现一键部署升级,提高效率。


一、资源准备

系统 centos_7.6、x86架构
在这里插入图片描述

oldnew
openssh_7.4p1openssh_9.8p1
OpenSSL 1.0.2k-fipsopenssl-1.1.1s

1.下载openssh、openssl二进制包

1、下载openssh源码包
[root@localhost ~]# wget  https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
--2025-01-06 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@localhost ~]# wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1s.tar.gz

2.安装rpmbuild工具

[root@localhost ~]# yum install -y rpm-build
[root@localhost ~]# yum install rpmdevtools
[root@localhost ~]# yum install rpmlint -y #spec文件检查工具
[root@localhost ~]# vim /root/.rpmmacros
%_topdir /export/rpmbuild  #/root/.rpmmacros文件是存储各种宏定义,比如_topdir宏的值来自定义打包路径

创建rpmbuild目录

[root@localhost ~]# cd /export/
[root@localhost /export]# rpmdev-setuptree
[root@localhost /export]# cd rpmbuild && ls
BUILD  RPMS  SOURCES  SPECS  SRPMS

在这里插入图片描述

3.拷贝源码包到SOURCES目录下

[root@localhost ~]# mv openssh-9.8p1.tar.gz /export/rpmbuild/SOURCES
[root@localhost ~]# mv OpenSSL_1_1_1s.tar.gz /export/rpmbuild/SOURCES

在这里插入图片描述

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

[root@localhost ~]# yum install -y telnet-server
[root@localhost ~]# yum install -y telnet
[root@localhost ~]# yum install -y xinetd #也可以不装
[root@localhost ~]# systemctl start telnet.socket && systemctl start xinetd.service

#因为默认情况下系统是不允许root用户telnet远程登录的。如果要使用root用户直接登录,需设置如下内容
[root@localhost ~]# echo  'pts/0'  >> /etc/securetty 
[root@localhost ~]# echo  'pts/1'  >> /etc/securetty

#开启telnet连接
[root@localhost ~]# telnet localhost
输入用户名
输入密码
完成登录

在这里插入图片描述

5.编译工具安装

[root@localhost ~]# yum install -y gcc make  gcc-c++ perl perl-WWW-Curl

至此,前期资源准备完成

6.补充说明

1、OpenSSH-9.8p1依赖OpenSSL-1.1.1及以上版本, 因此需要先升级openssl

2、OpenSSH-8.6后默认为不允许root登录

3、较新版本的CentOS7中 pam_stack.so模块已经被弃用删除, 请备份 /etc/pam.d/sshd

4、默认允许使用PAM登录认证;

5、默认允许使用X11Forwarding图形模块;

6、需修改ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key这三个文件的权限,
	OpenSSH-8.6之后缩小了这三个文件的权限为0600, 大于该权限将会导致SSHD启动失败

二、制作 OpenSSL RPM 包

1.编写 SPEC 文件

代码如下(示例):

Name:       openssl
Version:    1.1.1s
Release:    1%{?dist}
Summary:    Utilities from the general purpose cryptography library with TLS implementation
Group:      System Environment/Libraries
License:    GPLv2+
URL:        https://www.openssl.org/
Source0:    https://www.openssl.org/source/%{name}-%{version}.tar.gz
BuildRequires:  make gcc perl perl-WWW-Curl
Requires:   %{name} = %{version}-%{release}
BuildRoot:  %_topdir/BUILDROOT

%global openssldir /usr/openssl

%description
The OpenSSL toolkit provides support for secure communications between
machines.

%package devel
Summary: Secure Sockets Layer and cryptography static libraries and headers
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description devel
The OpenSSL devel tool

%prep
%setup -q

%build
./config --prefix=%{openssldir} --openssldir=%{openssldir}
make %{?_smp_mflags}

%install
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}
%make_install
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_libdir}
ln -sf %{openssldir}/lib/libssl.so.1.1 %{buildroot}%{_libdir}
ln -sf %{openssldir}/lib/libcrypto.so.1.1 %{buildroot}%{_libdir}
ln -sf %{openssldir}/bin/openssl %{buildroot}%{_bindir}

# 安装man手册
mkdir -p %{buildroot}%{_mandir}/man1
cp -p man/man1/openssl.1 %{buildroot}%{_mandir}/man1/

%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}

%files
%{openssldir}
%defattr(-,root,root)
%{_bindir}/openssl
%{_libdir}/libcrypto.so.1.1
%{_libdir}/libssl.so.1.1
%{_mandir}/man1/openssl.1   # 确保man页面文件被列出

%files devel
%{openssldir}/include/*
%defattr(-,root,root)

%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig

2.验证 SPEC 文件

代码如下(示例):

errors为0则验证通过

[root@localhost SPECS]# rpmlint openssl.spec 
openssl.spec: W: invalid-url Source0: https://www.openssl.org/source/openssl-1.1.1s.tar.gz <urlopen error ('_ssl.c:602: The handshake operation timed out',)>
0 packages and 1 specfiles checked; 0 errors, 1 warnings.

3.执行构建命令

[root@localhost SPECS]# rpmbuild  -D "version 1.1.1s" -ba openssl.spec

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

4.查看构建完成的rpm包

在这里插入图片描述
注意事项: 上述 SPEC文件只构建了 openssl,openssl-devel和openssl-debuginfo三个包, 而且 更新之后 man openssl 会提示找不到手册,对比网上其他的SPEC文件少了很多内容,总之不影响使用

三、通过RPM包更新 OpenSSL

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

[root@localhost SPECS]#  whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl  /usr/share/man/man1/openssl.1ssl.gz

找到几个就备份几个

[root@localhost SPECS]# cp -rp /usr/bin/openssl  /usr/bin/openssl.old
[root@localhost SPECS]# cp -rp /usr/lib64/openssl /usr/lib64/openssl.old
[root@localhost SPECS]# cp -rp /usr/include/openssl  /usr/include/openssl.old
[root@localhost SPECS]# cp -rp /usr/share/man/man1/openssl.1ssl.gz /usr/share/man/man1/openssl.1ssl.gz.old

2.卸载旧版本openssl

[root@localhost SPECS]# rpm -e openssl --nodeps

3.安装新版openssl

升级openssl注意事项

1、只需要升级 openssl-1.1.1s 
2、openssl-devel可以不升级
3、openssl-libs 切记不能升级

升级

[root@localhost SPECS]# rpm -ivh ../RPMS/x86_64/openssl-1.1.1s-1.el7.x86_64.rpm --nodeps
准备中...                          ################################# [100%]
正在升级/安装...
   1:openssl-1.1.1s-1.el7             ################################# [100%]

在这里插入图片描述

4.验证openssl版本

在这里插入图片描述
至此,openssl升级完成.紧接着下篇文章升级openssh


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

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

相关文章

【Unity3D】apk加密(global-metadata.dat加密)

涉及&#xff1a;apk、aab、global-metadata.dat、jks密钥文件、APKTool、zipalign 使用7z打开apk文件观察发现有如下3个针对加密的文件。 xxx.apk\assets\bin\Data\Managed\Metadata\global-metadata.dat xxx.apk\lib\armeabi-v7a\libil2cpp.so xxx.apk\lib\arm64-v8a\libil…

[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…

RNN心脏病预测-Pytorch版本

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 导入数据 import numpy as np import pandas as pd import torch from torch import nn import torch.nn.functional as F import seaborn as sns from sklearn.preprocessing import Standard…

科普CMOS传感器的工作原理及特点

在当今数字化成像的时代&#xff0c;图像传感器无疑是幕后的关键 “功臣”&#xff0c;它宛如一位神奇的 “光影魔法师”&#xff0c;通过光电效应这一奇妙的物理现象&#xff0c;将光子巧妙地转换成电荷&#xff0c;为图像的诞生奠定基础。而在众多类型的图像传感器中&#xf…

Ubuntu 18.04 解决screen无法滚屏的问题

Ubuntu 18.04 解决screen无法滚屏的问题_ubuntu screen 无法上滑-CSDN博客文章浏览阅读2.7k次&#xff0c;点赞2次&#xff0c;收藏3次。在etc/screenrc中加入termcapinfo xterm* ti:te重新进入screen的sessionscreen -d -r XXX_ubuntu screen 无法上滑https://blog.csdn.net/w…

2025年01月09日Github流行趋势

1. 项目名称&#xff1a;khoj 项目地址url&#xff1a;https://github.com/khoj-ai/khoj项目语言&#xff1a;Python历史star数&#xff1a;22750今日star数&#xff1a;1272项目维护者&#xff1a;debanjum, sabaimran, MythicalCow, aam-at, eltociear项目简介&#xff1a;你…

Spring boot接入xxl-job

Spring boot接入xxl-job 导入maven包加入配置增加配置类创建执行器类&#xff08;写job的业务逻辑&#xff09;去控制台中配置job 导入maven包 <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>…

Cglib动态代理中method.invoke与methodProxy.invokeSuper区别浅尝

前段时间看了黑马Spring教程中&#xff0c;有期视频讲解Cglib动态代理。 代码如下图&#xff1a; 可以看到调用目标对象的方法代码为&#xff1a; method.invoke(target,objects);在其他地方看到的此处代码是&#xff1a; methodProxy.invokeSuper(o,objects);注意&#xff…

【Linux 之一 】Linux常用命令汇总

Linux常用命令 ./catcd 命令chmodclearcphistoryhtoplnmkdirmvpwdrmtailunamewcwhoami 我从2021年4月份开始才开始真正意义上接触Linux&#xff0c;最初学习时是一脸蒙圈&#xff0c;啥也不会&#xff0c;啥也不懂&#xff0c;做了很多乱七八糟&#xff0c;没有条理的笔记。不知…

NO.3 《机器学习期末复习篇》以题(问答题)促习(人学习),满满干huo,大胆学大胆补!

目录 &#x1f50d; 1. 对于非齐次线性模型 &#xff0c;试将其表示为齐次线性模型形式。 ​编辑 &#x1f50d; 2. 某汽车公司一年内各月份的广告投入与月销量数据如表3-28所示&#xff0c;试根据表中数据构造线性回归模型&#xff0c;并使用该模型预测月广告投入为20万元时…

Javascript算法——贪心算法(一)

贪心算法详解&#xff08;JavaScript&#xff09;&#xff08;局部最优->全局最优&#xff09; 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取当前状态下的最优选择&#xff08;局部最优&#xff09;的算法设计方法。通过局部最优解的累积&…

【Vue】分享一个快速入门的前端框架以及如何搭建

先上效果图: 登录 菜单: 下载地址: 链接&#xff1a;https://pan.baidu.com/s/1m-ZlBARWU6_2n8jZil_RAQ 提取码&#xff1a;ui20 … 主要是可以自定义设置token,更改后端请求地址较为方便。 应用设置: 登录与token设置: 在这里设置不用登录,可以请求的接口: request.js i…

jdk8升级JDK21(Springboot2.7.18升级Springboot3.4.0)

目录 背景&#xff1a; 一、maven升级 二、代码改造 2.1 javax替换为jakarta 2.2 swagger2升级swagger3相关更新 2.2.1 新增SpringDocConfig配置类 2.2.2 全局代码更新 2.2.3 全局代码替换&#xff08;普通正则替换&#xff09; 2.3 Mybatis Plus升级 2.4 logback.xm…

数据库(3)--针对列的CRUD操作

1.Create 新增 语法&#xff1a; insert into 表名 &#xff08;列名&#xff09;values &#xff08;列&#xff09;... 创建一个学生表用于演示&#xff1a; create table if not exists student( id bigint comment 编号, name varchar(20) comment 姓名 ); 1.1直接增加…

加速科技荣获“浙江省企业研究院”认定

近日&#xff0c;浙江省经济和信息化厅公布“2024年认定&#xff08;备案&#xff09;省级企业研发机构名单”。经过多轮严格评审和公示&#xff0c;加速科技荣获“省企业研究院”认定。这是加速科技继获国家级专精特新“小巨人”企业认定荣誉后的又一里程碑。 “浙江省企业研究…

leetcode:1784. 检查二进制字符串字段(python3解法)

难度&#xff1a;简单 给你一个二进制字符串 s &#xff0c;该字符串 不含前导零 。 如果 s 包含 零个或一个由连续的 1 组成的字段 &#xff0c;返回 true​​​ 。否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;s "1001" 输出&#xff1a;fa…

双向列表的实现(C++)

一.实现思路 主要是一个空间存储一个数值&#xff0c;然后为了索引后面的数据单元和前面的数据单元&#xff0c;所以在每个空间里面还要存储前面和后面数据单元的指针&#xff0c;就形成了每个数据单元 后面就是要管理的是双向列表的头结点和尾节点&#xff0c;方便实现后面的头…

【前端开发常用网站汇总-01】

1、仿mac界面代码截图 https://codeimg.io/?utm_sourceappinn.com 2、可视化大屏汇总(在线Demo) https://www.xiongze.net/viewdata/index.html 3、在线Photoshop(实现简单P图) https://ps.gaoding.com/#/ 4、在线生成ico图标(png转icon文件) https://www.bitbug.net/in…

腾讯云AI代码助手编程挑战赛-百事一点通

作品简介 百事通问答是一款功能强大的智能问答工具。它依托海量知识储备&#xff0c;无论你是想了解生活窍门、学习难点&#xff0c;还是工作中的专业疑惑&#xff0c;只需输入问题&#xff0c;就能瞬间获得精准解答&#xff0c;以简洁易懂的方式呈现&#xff0c;随时随地为你…

网络安全 信息收集入门

1.信息收集定义 信息收集是指收集有关目标应用程序和系统的相关信息。这些信息可以帮助攻击者了解目标系统的架构、技术实现细节、运行环境、网络拓扑结构、安全措施等方面的信息&#xff0c;以便我们在后续的渗透过程更好的进行。 2.收集方式-主动和被动收集 ①收集方式不同…