一键升级OpenSSH/OpenSSL修复安全漏洞

news2025/4/22 11:28:10

在服务器安全运维过程中,我们经常面临这样的问题:收到高危漏洞通报(如最近的OpenSSH多个CVE漏洞),但Ubuntu系统无法通过apt直接升级到修复版本。这种情况下,传统方法需要手动编译源码,处理依赖关系,这既耗时又容易出错。

为解决这一问题,SecurityPatcher提供自动化脚本,实现一键修复多个OpenSSH/OpenSSL高危漏洞。

SecurityPatcher 是一个专注于修复 OpenSSH 和 OpenSSL 高危漏洞的一键式工具,特别针对那些无法通过包管理器(如 apt)直接升级到安全版本的 Linux 服务器环境。当您的服务器面临安全漏洞通报但无法使用标准方式升级时,SecurityPatcher 提供了一个全自动化的解决方案。

在这里插入图片描述

🛡️ 修复的关键漏洞

当前版本可修复以下高危安全漏洞:

CVE 编号漏洞描述风险等级详情
CVE-2023-38408OpenSSH 代理转发远程代码执行漏洞严重SSH-agent 的 PKCS#11 功能中存在不安全的搜索路径,如果代理被转发到攻击者控制的系统,可能导致远程代码执行
CVE-2023-28531OpenSSH 智能卡密钥添加漏洞高危允许攻击者通过智能卡相关功能获取敏感信息
CVE-2023-51767OpenSSH 身份验证绕过漏洞严重通过 row hammer 攻击可能导致身份验证绕过,影响 OpenSSH 9.6 及以前版本
CVE-2023-51384OpenSSH PKCS11 目标约束漏洞中危添加 PKCS#11 托管的私钥时指定的目标约束可能被不完全应用
CVE-2023-48795OpenSSH Terrapin 前缀截断攻击漏洞高危允许中间人攻击者截断加密的 SSH 消息,降级连接安全性
CVE-2023-51385OpenSSH 命令注入漏洞严重当用户名或主机名中包含 shell 元字符且通过扩展标记引用时可能发生命令注入

⚙️ 技术架构

工作流程

  1. 环境检测与准备

    • 自动检测当前系统和 OpenSSH/OpenSSL 版本
    • 创建工作目录和备份目录
    • 安装必要的编译依赖
  2. 源码获取和验证

    • 支持从多个镜像源自动获取源码
    • 支持自定义版本号(命令行参数)
    • 源码完整性验证
  3. 备份机制

    • 自动备份现有配置到时间戳目录
    • 提供回滚选项
  4. 安全保障机制

    • 启用 telnet 作为备用登录方式(升级期间)
    • 防止因升级失败导致无法访问服务器
  5. 编译安装优化

    • 多核并行编译加速
    • 跳过测试阶段减少时间
    • 兼容性配置选项
  6. 安全加固配置

    • 应用针对已知漏洞的防护措施
    • 配置最佳安全实践
  7. 自动验证

    • 服务状态检查
    • 网络连接测试
    • 功能验证

🚀 使用方法

基本使用

  1. 克隆仓库:
git clone https://github.com/blessing-gao/SecurityPatcher.git
cd SecurityPatcher
  1. 添加执行权限:
chmod +x openssl-auto-upgrade.sh
  1. 执行脚本(使用默认 OpenSSH 9.9p1 版本):
sudo ./openssl-auto-upgrade.sh

高级选项

指定 OpenSSH 和/或 OpenSSL 版本:

# 只指定 OpenSSH 版本
sudo ./openssl-auto-upgrade.sh 9.9p1

# 同时指定 OpenSSH 和 OpenSSL 版本
sudo ./openssl-auto-upgrade.sh 9.9p1 3.4.1

查看帮助信息:

./openssl-auto-upgrade.sh --help

📋 脚本详解

多源下载机制

脚本使用智能下载机制,自动从多个源尝试下载,确保在某些镜像不可用时仍能成功获取源码:

# 下载文件函数,支持多源尝试
download_file() {
    local urls=("$@")
    local filename=$(basename "${urls[0]}")
    local download_success=0
    
    # 检查文件是否已存在于工作目录
    if [ -f "$filename" ]; then
        log_info "发现本地文件 $filename,将使用此文件"
        return 0
    fi
    
    # 自动尝试下载
    for url in "${urls[@]}"; do
        log_info "正在尝试从 $url 下载..."
        if wget --no-check-certificate -O "$filename" "$url"; then
            download_success=1
            log_info "成功从 $url 下载文件"
            break
        else
            log_warn "从 $url 下载失败,尝试下一个源..."
        fi
    done
    
    if [ $download_success -eq 0 ]; then
        log_error "所有下载源均失败,无法下载 $filename"
        exit 1
    fi
    
    return 0
}

OpenSSH 安全配置加固

针对已知漏洞的配置修复:

# 配置安全选项
cat >> /etc/ssh/sshd_config << EOF

# 安全加固配置 - 添加于$(date +%Y-%m-%d)
# 禁用SSH代理转发(减轻CVE-2023-38408风险)
AllowAgentForwarding no

# 配置协议版本(只使用SSH协议版本2)
Protocol 2

# 限制使用的密钥交换算法,避免使用脆弱的算法
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

# 限制使用的加密算法
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

# 限制使用的MAC算法
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256

# 禁用空密码
PermitEmptyPasswords no

# 设置登录宽限时间
LoginGraceTime 30

# 最大认证尝试次数
MaxAuthTries 3
EOF

自动测试与验证

升级后进行全面的服务测试确保正常运行:

# 测试SSH本地连接
log_step "测试SSH本地连接..."
echo "测试SSH连接到本机..." > /tmp/ssh_test_message
ssh -o ConnectTimeout=5 -o BatchMode=yes -o StrictHostKeyChecking=no localhost "echo 连接成功 > /tmp/ssh_test_result" 2>/dev/null

if [ $? -eq 0 ] && [ -f /tmp/ssh_test_result ] && grep -q "连接成功" /tmp/ssh_test_result; then
    log_info "SSH本地连接测试成功"
    rm -f /tmp/ssh_test_message /tmp/ssh_test_result
else
    log_warn "SSH本地连接测试失败,但这可能是由于未设置SSH密钥认证"
    log_warn "请手动测试SSH连接!"
    
    # 询问用户SSH是否能正常连接
    read -p "您是否可以成功通过新的SSH连接到此服务器? (y/n): " SSH_WORKS
    if [ "$SSH_WORKS" != "y" ]; then
        log_error "SSH连接测试失败,请通过telnet连接进行故障排除"
        exit 1
    fi
fi

💻 系统兼容性

当前版本已在以下系统上测试:

  • 已测试:Ubuntu Server 18.04/20.04/22.04
  • 未测试:CentOS/RHEL 系列(计划支持)

🔧 漏洞详情与修复原理

CVE-2023-38408(OpenSSH 代理转发 RCE 漏洞)

该漏洞存在于 OpenSSH 的 SSH-agent 转发功能中,特别是在 PKCS#11 提供程序支持部分。攻击者可以通过攻击 SSH-agent 的 PKCS#11 支持在特定条件下执行远程代码。

修复原理

  • 限制 PKCS#11 提供程序的搜索路径
  • 禁用 SSH 代理转发功能
  • 升级到 OpenSSH 9.3p2 或更高版本

CVE-2023-48795(Terrapin 前缀截断攻击)

Terrapin 是一种针对 SSH 协议的前缀截断攻击。通过精心调整握手期间的序列号,攻击者可以在客户端或服务器不知情的情况下移除安全通道开始时发送的任意数量的消息。

修复原理

  • 禁用 ChaCha20-Poly1305 密码
  • 避免使用任何带有 -etm(Encrypt-then-MAC)的算法
  • 升级到 OpenSSH 9.6p1 或更高版本

CVE-2023-51385(命令注入漏洞)

此漏洞允许在用户名或主机名中包含 shell 元字符,并且该名称通过扩展标记在某些情况下被引用时发生命令注入。例如,不受信任的 Git 仓库可以有一个在用户名或主机名中包含 shell 元字符的子模块。

修复原理

  • 对用户名和主机名进行安全过滤
  • 升级到 OpenSSH 9.6 或更高版本
  • 对 ProxyCommand 和相关指令中的扩展标记进行安全处理

🔍 安全最佳实践

除了修复特定漏洞外,SecurityPatcher 还应用了以下安全最佳实践:

  1. 算法选择

    • 仅使用安全的密钥交换算法
    • 仅使用强密码和 MAC 算法
    • 禁用不安全的选项
  2. 认证控制

    • 限制认证尝试次数
    • 设置合理的登录超时时间
    • 禁用空密码
  3. 服务配置

    • 仅启用必要的功能
    • 最小权限原则
    • 安全日志记录

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

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

相关文章

健康养生,开启新生活

在饮食上&#xff0c;应遵循 “均衡搭配、清淡少盐” 的原则。主食不要只吃精米白面&#xff0c;可适当加入燕麦、糙米等全谷物&#xff0c;为身体补充膳食纤维&#xff1b;每天保证一斤蔬菜半斤水果&#xff0c;深色蔬菜如菠菜、西兰花富含维生素与矿物质&#xff0c;水果则选…

VLAN间通讯技术

多臂路由 路由器使用多条物理线路&#xff0c;每条物理线路充当一个 VLAN 的网管 注意&#xff1a;路由器对端的交换机接口&#xff0c;需要设定 Access 类型&#xff0c;因为路由器的物理接口无法处理 VLAN 标签 。 单臂路由 使用 以太网子接口 (sub-interface) 实现。 …

人工智能在慢病管理中的具体应用全集:从技术落地到场景创新

一、AI 赋能慢病管理:技术驱动医疗革新 1.1 核心技术原理解析 在当今数字化时代,人工智能(AI)正以前所未有的态势渗透进医疗领域,尤其是在慢性病管理方面,展现出巨大的潜力和独特优势。其背后依托的机器学习、深度学习、自然语言处理(NLP)以及物联网(IoT)与可穿戴设…

B+树节点与插入操作

B树节点与插入操作 设计B树节点 在设计B树的数据结构时&#xff0c;我们首先需要定义节点的格式&#xff0c;这将帮助我们理解如何进行插入、删除以及分裂和合并操作。以下是对B树节点设计的详细说明。 节点格式概述 所有的B树节点大小相同&#xff0c;这是为了后续使用自由…

线性回归之多项式升维

文章目录 多项式升维简介简单案例实战案例多项式升维优缺点 多项式升维简介 多项式升维&#xff08;Polynomial Expansion&#xff09;是线性回归中一种常用的特征工程方法&#xff0c;它通过将原始特征进行多项式组合来扩展特征空间&#xff0c;从而让线性模型能够拟合非线性关…

颠覆传统!毫秒级响应的跨平台文件同步革命,远程访问如本地操作般丝滑

文章目录 前言1. 安装Docker2. Go File使用演示3. 安装cpolar内网穿透4. 配置Go File公网地址5. 配置Go File固定公网地址 前言 在这个信息爆炸的时代&#xff0c;谁不曾遭遇过类似的窘境呢&#xff1f;试想&#xff0c;当你正于办公室中埋首案牍时&#xff0c;手机突然弹出一…

CrewAI Community Version(一)——初步了解以及QuickStart样例

目录 1. CrewAI简介1.1 CrewAI Crews1.2 CrewAI Flows1.3 Crews和Flows的使用情景 2. CrewAI安装2.1 安装uv2.2 安装CrewAI CLI 3. 官网QuickStart样例3.1 创建CrewAI Crews项目3.2 项目结构3.3 .env3.4 智能体角色及其任务3.4.1 agents.yaml3.4.2 tasks.yaml 3.5 crew.py3.6 m…

Nginx下搭建rtmp流媒体服务 并使用HLS或者OBS测试

所需下载地址&#xff1a; 通过网盘分享的文件&#xff1a;rtmp 链接: https://pan.baidu.com/s/1t21J7cOzQR1ASLrsmrYshA?pwd0000 提取码: 0000 window&#xff1a; 解压 win目录下的 nginx-rtmp-module-1.2.2.zip和nginx 1.7.11.3 Gryphon.zip安装包&#xff0c;解压时选…

Lateral 查询详解:概念、适用场景与普通 JOIN 的区别

1. 什么是Lateral查询&#xff1f; Lateral查询&#xff08;也称为横向关联查询&#xff09;是一种特殊的子查询&#xff0c;允许子查询中引用外层查询的列&#xff08;即关联引用&#xff09;&#xff0c;并在执行时逐行对外层查询的每一行数据执行子查询。 语法上通常使用关…

【springsecurity oauth2授权中心】简单案例跑通流程 P1

项目被拆分开&#xff0c;需要一个授权中心使得每个项目都去授权中心登录获取用户权限。而单一项目里权限使用的是spring-security来控制的&#xff0c;每个controller方法上都有 PreAuthorize("hasAuthority(hello)") 注解来控制权限&#xff0c;想以最小的改动来实…

spark—SQL3

连接方式 内嵌Hive&#xff1a; 使用时无需额外操作&#xff0c;但实际生产中很少使用。 外部Hive&#xff1a; 在虚拟机下载相关配置文件&#xff0c;在spark-shell中连接需将hive-site.xml拷贝到conf/目录并修改url、将MySQL驱动copy到jars/目录、把core-site.xml和hdfs-sit…

一文了解相位阵列天线中的真时延

本文要点 真时延是宽带带相位阵列天线的关键元素之一。 真时延透过在整个信号频谱上应用可变相移来消除波束斜视现象。 在相位阵列中使用时延单元或电路板&#xff0c;以提供波束控制和相移。 市场越来越需要更快、更可靠的通讯网络&#xff0c;而宽带通信系统正在努力满…

linux学习 5 正则表达式及通配符

重心应该放在通配符的使用上 正则表达式 正则表达式是用于 文本匹配和替换 的强大工具 介绍两个交互式的网站来学习正则表达式 regexlearn 支持中文 regexone 还有一个在线测试的网址 regex101 基本规则 符号作用示例.匹配任何字符除了换行a.b -> axb/a,b[abc]匹配字符…

基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention

基于超启发鲸鱼优化算法的混合神经网络多输入单输出回归预测模型 HHWOA-CNN-LSTM-Attention 随着人工智能技术的飞速发展&#xff0c;回归预测任务在很多领域得到了广泛的应用。尤其在金融、气象、医疗等领域&#xff0c;精确的回归预测模型能够为决策者提供宝贵的参考信息。为…

Android RK356X TVSettings USB调试开关

Android RK356X TVSettings USB调试开关 平台概述操作-打开USB调试实现源码补充说明 平台 RK3568 Android 11 概述 RK3568 是瑞芯微&#xff08;Rockchip&#xff09;推出的一款高性能处理器&#xff0c;支持 USB OTG&#xff08;On-The-Go&#xff09;和 USB Host 功能。US…

消息队列知识点详解

消息队列场景 什么是消息队列 可以把消息队列理解一个使用队列来通信的组件&#xff0c;它的本质是交换机队列的模式&#xff0c;实现发送消息&#xff0c;存储消息&#xff0c;消费消息的过程。 我们通常说的消息队列&#xff0c;MQ其实就是消息中间件&#xff0c;业界中比较…

序列号绑定的SD卡坏了怎么办?

在给SD卡烧录程序的时候&#xff0c;大家发现有的卡是无法烧录的&#xff0c;如&#xff1a;复印机的SD卡不能被复制通常涉及以下几个技术原因&#xff0c;可能与序列号绑定、加密保护或硬件限制有关&#xff1a; 一、我们以复印机的系统卡为例来简单讲述一下 序列号或硬件绑定…

使用SystemWeaver生成SOME/IP ETS ARXML的完整实战指南

使用SystemWeaver生成SOME/IP ETS ARXML的完整实战指南 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 一、SystemWeaver与SOME/IP基础认知 1.1 SystemWe…

Flutter 状态管理 Riverpod

Android Studio版本 Flutter SDK 版本 将依赖项添加到您的应用 flutter pub add flutter_riverpod flutter pub add riverpod_annotation flutter pub add dev:riverpod_generator flutter pub add dev:build_runner flutter pub add dev:custom_lint flutter pub add dev:riv…

【HarmonyOS 5】VisionKit人脸活体检测详解

【HarmonyOS 5】VisionKit人脸活体检测详解 一、VisionKit人脸活体检测是什么&#xff1f; VisionKit是HamronyOS提供的场景化视觉服务工具包。 华为将常见的解决方案&#xff0c;通常需要三方应用使用SDK进行集成。华为以Kit的形式集成在HarmoyOS系统中&#xff0c;方便三方…