当前位置: 首页 > news >正文

CentOS 7系统 OpenSSH和OpenSSL版本升级指南

文章目录

  • CentOS 7系统 OpenSSH和OpenSSL版本升级指南
    • 环境说明
      • 当前系统版本
      • 当前组件版本
    • 现存安全漏洞
    • 升级目标版本
    • 升级准备工作
    • OpenSSL升级步骤
      • 1. 下载和解压
      • 2. 编译安装
      • 3. 配置环境
    • OpenSSH升级步骤
      • 1. 下载和解压
      • 2. 编译安装
      • 3. 创建systemd服务配置
      • 4. 更新SSH配置文件
      • 5. 设置正确的文件权限
      • 6. 重启服务
      • 7. 验证升级
    • 故障排查指南
    • 安全建议
    • 总结
    • 参考文档

CentOS 7系统 OpenSSH和OpenSSL版本升级指南

在处理服务器安全问题时,及时升级关键组件的版本是非常重要的。本文将详细介绍如何在CentOS 7系统上升级OpenSSH和OpenSSL到最新稳定版本,以解决已知的安全漏洞。

如果使用红帽系统,可以联系厂家打补丁或者升级处理

环境说明

当前系统版本

[root@tamkems-yy ~]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

当前组件版本

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

现存安全漏洞

当前版本存在以下安全漏洞:

  • OpenSSH 安全漏洞(CVE-2023-51767)
  • OpenSSH 安全漏洞(CVE-2023-38408)
  • OpenSSH 命令注入漏洞(CVE-2020-15778)
  • OpenSSH 欺骗安全漏洞(CVE-2019-6110)
  • OpenSSH信息泄露漏洞(CVE-2020-14145)
  • OpenSSH 用户枚举漏洞(CVE-2018-15919)
  • OpenSSH 安全漏洞(CVE-2023-48795)
  • OpenSSH CBC模式信息泄露漏洞(CVE-2008-5161)
  • 等多个安全漏洞…

升级目标版本

  • OpenSSH: 9.6p1
  • OpenSSL: 1.1.1w

升级准备工作

在开始升级之前,需要做好以下准备:

  1. 系统备份
# 创建备份目录
mkdir -p /root/ssh_backup_$(date +%Y%m%d)# 备份当前配置
cp -r /etc/ssh/* /root/ssh_backup_$(date +%Y%m%d)/
cp /etc/sysconfig/sshd /root/ssh_backup_$(date +%Y%m%d)/
  1. 安装必要的编译工具
# 安装开发工具组
yum groupinstall -y "Development Tools"# 安装依赖包
yum install -y zlib-devel openssl-devel perl perl-devel pam-devel

OpenSSL升级步骤

1. 下载和解压

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -zxf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w

2. 编译安装

# 配置
./config --prefix=/usr/local/openssl shared zlib# 编译和测试
make
make test# 安装
make install

3. 配置环境

# 配置动态链接库
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl.conf
ldconfig# 替换原有的OpenSSL
mv /usr/bin/openssl /usr/bin/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

OpenSSH升级步骤

1. 下载和解压

cd /usr/local/src
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz
tar -zxf openssh-9.6p1.tar.gz
cd openssh-9.6p1

2. 编译安装

# 配置
./configure \--prefix=/usr \--sysconfdir=/etc/ssh \--with-ssl-dir=/usr/local/openssl \--with-zlib \--with-pam \--with-md5-passwords \--with-tcp-wrappers# 编译和安装
make
make install

3. 创建systemd服务配置

# 创建 systemd 服务文件
cat > /usr/lib/systemd/system/sshd.service << 'EOF'
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target[Service]
Type=exec
ExecStart=/usr/sbin/sshd -D -e
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=3s[Install]
WantedBy=multi-user.target
EOF

4. 更新SSH配置文件

# 创建新的 sshd_config 配置文件
cat > /etc/ssh/sshd_config << 'EOF'
# 基本配置
Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::# 协议版本
Protocol 2# 主机密钥
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key# 日志级别
SyslogFacility AUTHPRIV
LogLevel INFO# 认证配置
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no# 其他设置
X11Forwarding yes
PrintMotd no
UsePAM yes
UseDNS no
Subsystem sftp /usr/libexec/openssh/sftp-server
EOF

5. 设置正确的文件权限

# 设置关键文件权限
chmod 755 /usr/sbin/sshd
chmod 755 /etc/ssh
chmod 644 /etc/ssh/sshd_config
chmod 600 /etc/ssh/ssh_host_*_key
chmod 644 /etc/ssh/ssh_host_*_key.pub

6. 重启服务

# 重新加载 systemd 配置
systemctl daemon-reload# 重启 sshd 服务
systemctl restart sshd# 检查服务状态
systemctl status sshd

7. 验证升级

# 检查 SSH 版本
ssh -V# 尝试本地连接测试
ssh -v localhost

故障排查指南

如果升级后遇到问题,可以按以下步骤排查:

  1. 检查日志文件
tail -f /var/log/secure
tail -f /var/log/messages
  1. 检查防火墙设置
firewall-cmd --list-services | grep ssh
  1. 如需回滚,执行以下操作:
    • 停止sshd服务
    • 从备份目录恢复配置文件
    • 重启服务

安全建议

完成升级后,建议采取以下安全措施:

  1. 加强SSH配置

    • 禁用不安全的加密算法
    • 限制root用户登录
    • 设置登录失败次数限制
    • 配置密钥认证
  2. 定期维护

    • 检查系统日志
    • 监控失败的登录尝试
    • 定期检查服务状态

总结

通过以上步骤,我们已经成功将OpenSSH和OpenSSL升级到了最新的稳定版本,解决了多个安全漏洞。建议在执行升级操作前,先在测试环境中进行验证,确保升级过程不会影响到生产环境的正常运行。

参考文档

  • OpenSSH官方文档: https://www.openssh.com/
  • OpenSSL官方文档: https://www.openssl.org/
  • CentOS 7官方文档: https://wiki.centos.org/

👉 最后,愿大家都可以解决工作中和生活中遇到的难题,剑锋所指,所向披靡~

相关文章:

CentOS 7系统 OpenSSH和OpenSSL版本升级指南

文章目录 CentOS 7系统 OpenSSH和OpenSSL版本升级指南环境说明当前系统版本当前组件版本 现存安全漏洞升级目标版本升级准备工作OpenSSL升级步骤1. 下载和解压2. 编译安装3. 配置环境 OpenSSH升级步骤1. 下载和解压2. 编译安装3. 创建systemd服务配置4. 更新SSH配置文件5. 设置…...

【专题】2024年出口跨境电商促销趋势白皮书报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38722 在当今全球化加速演进、数字经济蓬勃发展的大背景下&#xff0c;跨境电商行业正以前所未有的态势重塑国际贸易格局&#xff0c;成为各方瞩目的焦点领域。 根据亚马逊发布的《2024年出口跨境电商促销趋势白皮书》&#xff0c;…...

【Ubuntu】不能连上网络

1. ping路由器的IP地址 ping 192.168.1.1 如果ping不通的话&#xff0c;可能是网络故障导致的。需要重启配置ip地址。配置文件 sudo vi /etc/network/interface 2. ping 8.8.8.8 如果ping不通的话&#xff0c;可能是路由器不能链接往外网&#xff1b; 或者路由器显示了当…...

CSS3 框大小

CSS3 框大小 CSS3 是网页设计和开发中不可或缺的一部分,它为开发者提供了更多样化、更灵活的样式和布局选择。在 CSS3 中,框大小(Box Sizing)是一个重要的概念,它决定了元素内容的宽度和高度以及元素整体的大小。本文将详细介绍 CSS3 框大小的概念、用法以及最佳实践。 …...

联发科MTK6771/MT6771安卓核心板规格参数介绍

MT6771&#xff0c;也被称为Helio P60&#xff0c;是联发科技(MediaTek)推出的一款中央处理器(CPU)芯片&#xff0c;可运行 android9.0 操作系统的 4G AI 安卓智能模块。MT6771芯片采用了12纳米工艺制造&#xff0c;拥有八个ARM Cortex-A73和Cortex-A53核心&#xff0c;主频分别…...

python中的时间模块--datetime模块、time模块

python中的时间模块 一.datetime模块二.time模块 一.datetime模块 引入时间模块 from datetime import datetime获取当前时间 print(datetime.today()) # 前的日期和时间 print(datetime.now()) # 当前的日期和时间 print(datetime.now().year) # 当前的年份 print(datetime…...

CV 处理全流程:从数据采集到模型部署的整个过程,体现全面性

CV 处理全流程&#xff1a;从数据采集到模型部署的整个过程&#xff0c;体现全面性 Numpy广播 OpenCV - Python归一化提取ROI(感兴趣区域)分离和合并通道 Pytorch 基础算子自动梯度计算 CV 全流程图像数据采集1. 确认目标2. 分析过程&#xff08;使用目标-手段分析法&#xff0…...

OWASP ZAP之API 请求基础知识

ZAP API 提供对 ZAP 大部分核心功能的访问,例如主动扫描器和蜘蛛。ZAP API 在守护进程模式和桌面模式下默认启用。如果您使用 ZAP 桌面,则可以通过访问以下屏幕来配置 API: Tools -> Options -> API。 ZAP 需要 API 密钥才能通过 REST API 执行特定操作。必须在所有 …...

南京观海微电子----GH7009国宇测试盒使用

1. SPI接线 针对7009&#xff1a; 2. 国宇上位机代码准备 在主函数首尾两端加入IO2时序控制的代码、以及国语SPI有效位控制的代码&#xff08;请注意7009和其他700x使用的有效位控制不一致&#xff0c;需要用哪一款加入哪一行即可&#xff09;&#xff1a; 三、国宇SPI读的使…...

mysql及其兼容语法数据库对于注释的特殊要求

我司大部分数据库使用MS-SQL&#xff0c;其中使用大量–开头的行注释&#xff0c;由于业务需要&#xff0c;切换到了Starrocks数据库&#xff08;兼容mysql语法&#xff09;后发现使用with开头子查询的时候&#xff0c;大量报错&#xff0c;单独执行内部的子查询又正常&#xf…...

数据去重与重复数据的高效处理策略

在实际业务中&#xff0c;数据去重是一个非常常见的需求&#xff0c;特别是在日志数据、用户操作记录或交易记录等领域。去重不仅仅是删除重复数据&#xff0c;更重要的是按照业务规则保留最有价值的数据记录。 本文将探讨如何在 SQL 中高效地处理重复数据&#xff0c;通过 DI…...

Spring Boot自动装配代码详解

概述 Spring Boot自动装配是其核心特性之一&#xff0c;它能够根据项目中添加的依赖自动配置Spring应用程序。通过自动装配&#xff0c;开发人员可以减少大量的配置工作&#xff0c;快速搭建起一个可用的Spring应用。 关键组件和注解 SpringBootApplication注解 这是Spring Bo…...

渗透测试-非寻常漏洞案例

声明 本文章所分享内容仅用于网络安全技术讨论&#xff0c;切勿用于违法途径&#xff0c;所有渗透都需获取授权&#xff0c;违者后果自行承担&#xff0c;与本号及作者无关&#xff0c;请谨记守法. 此文章不允许未经授权转发至除先知社区以外的其它平台&#xff01;&#xff0…...

122. 买卖股票的最佳时机 II

https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150问题分析&#xff1a; 和买卖股票的最佳时机I这题相比&#xff0c;区别就是可以买多只股票虽然同时只能持有一支&#xff0c;但是我们还是可以…...

Python爬虫入门指南:从零开始抓取数据

Python爬虫入门指南&#xff1a;从零开始抓取数据 引言 在大数据时代&#xff0c;数据是新的石油。而爬虫作为获取数据的重要手段&#xff0c;受到了越来越多的关注。Python作为一门强大的编程语言&#xff0c;其简洁易用的特性使得它成为爬虫开发的首选语言。本篇文章将带你…...

Android使用JAVA调用JNI原生C++方法

1.native-lib.cpp为要生成so库的源码文件 2.JNI函数声明说明 NewStringUTF函数会返回jstring JNI函数声明规则 3.JAVA中声明及调用JNI函数 声明&#xff1a; 调用 4.源码地址&#xff1a; gitgithub.com:tonyimax/UpdateTimeByThread.git...

ros常用命令记录

文章目录 1.基本2.rosbag2.1录制rosbag包2.2播放录制的ROS包 3.生命周期4.ROS启动&#xff0c;roslaunch5.ROS消息发布6.ROS消息后台打印监控 1.基本 ros2 topic list #查看话题列表2.rosbag 2.1录制rosbag包 ros2 bag record <topic_name> #记录单个主题消息 ros2 ba…...

UE5材质节点VertexNormalWs/PixelNormalWS

VertexNormalWs顶点法线方向&#xff0c;此节点可以做物体上积雪、青苔等效果 PixelNormalWS像素法线方向...

友元和运算符重载

1. 友元 可以把某些选定的函数看作类的“荣誉函数”&#xff0c;允许它们访问类对象中非公共的成员&#xff0c;就好像它们是类的成员一样&#xff0c;这种函数称为类的友元。友元可以访问类对象的任意成员。 1.1 友元函数 友元函数是一种定义在类外部的普通函数&#xff0…...

【数据库事务锁的类型:读锁/写锁、悲观锁/乐观锁、表锁/页锁/行锁】

数据库事务锁的类型&#xff1a;读锁/写锁、悲观锁/乐观锁、表锁/页锁/行锁 一、读锁/写锁1、锁定读 二、悲观锁/乐观锁2.1 悲观锁2.2 乐观锁 三、表锁/页锁/行锁3.1 表级别的S锁、X锁3.2 表级别的意向锁&#xff08;intention lock&#xff09; 一、读锁/写锁 对于数据库中并…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

goreplay

1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具&#xff0c;可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长&#xff0c;测试它所需的工作量也会呈指数级增长。GoRepl…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...