如何保护您的服务器免受 POODLE SSLv3 漏洞的影响

2023-11-17

介绍

2014年10月14日,SSL加密协议第3版中的漏洞被披露。该漏洞被称为 POODLE(Padding Oracle On Downgraded Legacy Encryption),允许攻击者使用中间人攻击以纯文本形式读取使用此版本协议加密的信息。

虽然 SSLv3 是该协议的旧版本,主要已经过时,many如果没有更好的加密选项,软件仍然会依赖 SSLv3。更重要的是,如果尝试连接的双方都可以使用 SSLv3 连接,那么攻击者就有可能强制使用 SSLv3 连接。

POODLE 漏洞会影响任何可以使用 SSLv3 进行通信的服务或客户端。因为这是协议设计的缺陷,而不是实现问题,every使用 SSLv3 的软件很容易受到攻击。

要了解有关该漏洞的更多信息,请查阅以下位置的 CVE 信息:CVE-2014-3566.

POODLE 漏洞是什么?

POODLE 漏洞是 SSL 协议版本 3 中的一个弱点,允许中间人环境中的攻击者破译 SSLv3 加密消息的纯文本内容。

谁受此漏洞影响?

此漏洞会影响所有可强制使用 SSLv3 进行通信的软件。这意味着任何实现包含 SSLv3 支持的回退机制的软件都容易受到攻击并可能被利用。

可能受影响的一些常见软件包括网络浏览器、网络服务器、VPN 服务器、邮件服务器等。

它是如何工作的?

简而言之,POODLE 漏洞的存在是因为 SSLv3 协议没有充分检查与加密消息一起发送的填充字节。

由于接收方无法验证这些内容,因此攻击者可以替换这些内容并将其传递到预期目的地。当以特定方式完成时,修改后的有效负载可能会被接收者毫无怨言地接受。

目的地平均每 256 个请求中就会接受一次,从而允许攻击者解密单个字节。可以轻松重复此操作,以便逐步解密附加字节。任何能够使用此协议反复迫使参与者重新发送数据的攻击者都可以在很短的时间内破解加密。

我该如何保护自己?

应采取措施确保您在作为客户端和服务器的角色中不会受到攻击。由于加密通常是在客户端和服务器之间协商的,因此这是一个涉及双方的问题。

服务器和客户端应采取措施完全禁用 SSLv3 支持。许多应用程序默认使用更好的加密,但将 SSLv3 支持作为后备选项。应禁用此功能,因为如果双方都允许将 SSLv3 通信作为可接受的方法,则恶意用户可以强制使用 SSLv3 通信。

如何保护常见应用程序

下面,我们将介绍如何在一些常见的服务器应用程序上禁用 SSLv3。请注意评估您的服务器以保护可能依赖于 SSL/TCP 加密的任何其他服务。

由于 POODLE 漏洞并不代表实现问题,而是整个协议的固有问题,因此没有解决方法,唯一可靠的解决方案就是不使用它。

Nginx 网络服务器

要在 Nginx Web 服务器中禁用 SSLv3,您可以使用ssl_protocols指示。这将位于server or http您的配置中的块。

例如,在 Ubuntu 上,您可以将其全局添加到/etc/nginx/nginx.conf里面的http块,或每个server块在/etc/nginx/sites-enabled目录。

sudo nano /etc/nginx/nginx.conf

要禁用 SSLv3,您的ssl_protocols指令应该这样设置:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

完成上述修改后,需要重新启动服务器:

sudo service nginx restart

阿帕奇网络服务器

要在 Apache Web 服务器上禁用 SSLv3,您必须调整SSLProtocol指令由mod_ssl module.

该指令可以在服务器级别或虚拟主机配置中设置。根据您的发行版的 Apache 配置,SSL 配置可能位于来源的单独文件中。

在 Ubuntu 上,可以通过编辑以下内容来调整服务器的服务器范围规范/etc/apache2/mods-available/ssl.conf文件。如果mod_ssl启用后,符号链接将将此文件连接到mods-enabled子目录:

sudo nano /etc/apache2/mods-available/ssl.conf

在 CentOS 上,您可以在此处的 SSL 配置文件中进行调整(如果启用了 SSL):

sudo nano /etc/httpd/conf.d/ssl.conf

在里面你可以找到SSLProtocol指示。如果该选项不可用,请创建它。修改此设置以显式删除对 SSLv3 的支持:

SSLProtocol all -SSLv3 -SSLv2

保存并关闭文件。重新启动服务以启用您的更改。

在 Ubuntu 上,您可以输入:

sudo service apache2 restart

在 CentOS 上,这将是:

sudo service httpd restart

HAProxy负载均衡器

要在 HAProxy 负载均衡器中禁用 SSLv3,您需要打开haproxy.cfg file.

这是位于/etc/haproxy/haproxy.cfg:

sudo nano /etc/haproxy/haproxy.cfg

在您的前端配置中,如果您启用了 SSL,您的bind指令将指定公共 IP 地址和端口。如果您使用 SSL,则需要添加no-sslv3到该行的末尾:

frontend name
    bind public_ip:443 ssl crt /path/to/certs no-sslv3

保存并关闭文件。

您需要重新启动服务才能实施更改:

sudo service haproxy restart

OpenVPN VPN 服务器

最新版本的 OpenVPN 实际上不允许 SSLv3。该服务不易受到此特定问题的影响,因此您无需调整配置。

See OpenVPN 论坛上的这篇文章了解更多信息.

Postfix SMTP 服务器

如果您的 Postfix 配置设置为需要加密,它将使用名为smtpd_tls_mandatory_protocols.

您可以在主 Postfix 配置文件中找到它:

sudo nano /etc/postfix/main.cf

对于设置为始终使用加密的 Postfix 服务器,您可以通过设置此参数来确保不接受 SSLv3 和 SSLv2。如果您不强制加密,则无需执行任何操作:

smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3

保存您的配置。重新启动服务以实施您的更改:

sudo service postfix restart

Dovecot IMAP 和 POP3 服务器

为了在 Dovecot 服务器上禁用 SSLv3,您需要调整一个名为ssl_protocols。根据您的发行版打包方法,SSL 配置可能会保存在备用配置文件中。

对于大多数发行版,您可以通过打开此文件来调整此指令:

sudo nano /etc/dovecot/conf.d/10-ssl.conf

在内部,如果您使用的是 Dovecot 2.1 或更高版本,请设置ssl_protocols禁用 SSLv2 和 SSLv3 的指令:

ssl_protocols = !SSLv3 !SSLv2

如果您使用的Dovecot版本低于2.1,您可以设置ssl_cipher_list像这样禁止 SSLv3:

ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL:!SSLv3

保存并关闭文件。

重新启动服务以实施您的更改:

sudo service dovecot restart

进一步的步骤

除了服务器端应用程序之外,您还应该更新所有客户端应用程序。

特别是,由于 Web 浏览器采用降压协议协商,因此可能容易受到此问题的影响。确保您的浏览器不允许 SSLv3 作为可接受的加密方法。这可以在设置中或通过安装附加插件或扩展来调整。

结论

由于对 SSLv3 的广泛支持,即使启用了更强的加密,此漏洞影响深远且危险。作为使用 SSL 加密的任何资源的消费者和提供者,您需要采取措施保护自己。

请务必检查所有可能以任何形式利用 SSL/TLS 的网络可访问服务。通常,这些应用程序需要显式指令来完全禁用 SSLv3 等较弱形式的加密。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何保护您的服务器免受 POODLE SSLv3 漏洞的影响 的相关文章

  • 客户端登录 - 如何在客户端安全地存储凭据?

    许多 API 都提供通过用户 密码组合远程访问其数据的功能 我想知道存储这些值的最佳方式是什么 高度安全的方式 即使 100 是不可能的 以便直接连接它们而无需每次都询问这些值 我推荐以下三种方法之一 使用身份验证令牌完全避免存储密码 在此
  • 什么是 API 密钥? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如今 我几乎在每个跨服务应用程序中都看到这个词 API 密钥到底是什么以及它的用途是什么 另外 公共 API 密钥和私有 API 密钥
  • 在 JavaScript 中生成 RSA 密钥对

    我最近发现了这个 RSA JavaScript 库 http www ohdave com rsa http www ohdave com rsa 但是 它要求预先生成密钥 这是我的问题 问题 我想在 JavaScript 中生成 RSA
  • Jenkins中找不到环境变量

    我想在詹金斯中设置很多变量 我试过把它们放进去 bashrc bash profile and profile of the jenkins用户 但 Jenkins 在构建发生时找不到它们 唯一有效的方法是将所有环境变量放入Jenkinsf
  • apt-get 无法在 ubuntu dockerfile 中工作

    我对 docker 相当陌生 正在尝试通过编写自己的镜像来学习 并且目前正在阅读 Docker 的实际操作 ISBN 1633430235 在我自己的代码和书中的示例 第 146 页 中 我想通过 dockerfile 安装 git My
  • 如何在ubuntu的conda环境中更改Rstudio中的R版本

    我在基本系统中安装了 R 4 3 和 Rstudio 在 conda 环境中安装了旧版本的 R 4 2 3 命令which R返回环境中安装的 R 的目录 home 用户 miniconda3 envs anndata2ri pip bin
  • pip:需要将包名称tensorflow-gpu更改为tensorflow

    我正在尝试将具有 GPU 支持的张量流安装到 conda 环境中 我使用命令 pip install ignore installed upgrade https storage googleapis com tensorflow linu
  • Rails 安全:完全避免大规模分配

    我倾向于不需要批量分配 http guides rubyonrails org security html mass assignment我的生产代码中的功能 在我的测试代码中 我经常使用它 但在这些情况下我do想要设置任意列 因此 如果在
  • 让 Rails 生产在端口 80 上运行

    我正在尝试让我的 Rails 应用程序在生产模式下运行 但遇到了一些困难 我正在使用 Passenger 和 apache 并运行 Ubuntu 12 04 我已经配置和创建了生产数据库 并设置了乘客 状态如下 rvmsudo passen
  • 保护 ASP.NET 网站中 Elmah RSS 源的安全

    我遵循了这个问题的答案在 ASP NET 网站中保护 Elmah 的安全 https stackoverflow com questions 1245364 securing elmah in asp net website限制对 elma
  • 导入错误:没有名为 django 的模块

    我使用的是centos Linux 我有 python 2 6 和 django 现在我升级到 python 2 7 Python 2 6 位于 usr lib python2 6 Python 2 7 位于 usr local lib p
  • 使用 PBKDF2 和 SHA256 生成 128 位 AES 密钥是否安全?

    我想使用 PBKDF2 和一些加密哈希函数来生成 128 位 AES 密钥 SHA1 也是 128 位 所以我想将其与 PBKDF2 一起使用 但它已损坏 所以我选择使用 SHA256 这是否安全 或者散列大小和生成的密钥大小之间的差异是否
  • 交叉编译armv5,但它创建v7二进制文件

    我设法为arm926ej s创建了一个目标文件我在 qemu 上使用 Debian Arm arm linux gnueabi gcc 4 4 static O c mcpu arm926ej s hello c o hello root
  • ubuntu 16.04.1 LTS 启动 Android 模拟器时崩溃

    我已经尝试过 Android studio 上的 AVD 和 Genymotion 模拟器 我的 ubuntu 16 04 1 在启动 android 模拟器时崩溃 冻结 我的电脑内存是16G 在我于 2016 年 9 月 19 日安装了
  • 从 HTTPS 重定向到 HTTP 的安全问题?

    我在一些博客上读过 抱歉没有提及参考资料 但我找不到了 如果您将用户从 https 页面重定向到 http 页面 您将失去保护网站安全的所有工作 那么 有人可以向我解释一下在以下情况下我是对还是错 在登录页面上使用 https 然后使用 h
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 对客户端 JavaScript 计算器使用 eval 安全吗?

    我正在制作一个计算器 作为用户浏览器的静态 HTML 页面 该页面并非旨在将任何信息提交回服务器 除了这个计算器之外 网页上不会出现任何其他内容 在这种情况下使用 eval 安全吗 或者换句话说 在这种情况下使用 eval 是否会导致额外的
  • Ubuntu 上的 Vim:文本渲染错误,奇怪地重复和消失

    不久前我在 ubuntu 12 04 上安装了 vim 有时 当我在代码上运行光标 使用键盘 而不是鼠标 时 文本会消失 就好像渲染字符时出现问题一样 当我再次运行光标时 它通常会重新出现 这似乎是随机发生的 但通常足以让人恼火 为了更清楚
  • 无法使用maven编译java项目

    我正在尝试在 java 16 0 1 上使用 maven 构建 IntelliJ 项目 但它无法编译我的项目 尽管 IntelliJ 能够成功完成 在此之前 我使用maven编译了一个java 15项目 但我决定将所有内容更新到16 0 1
  • Docker 错误绑定:地址已在使用中

    当我跑步时docker compose up在我的 Docker 项目中 它失败并显示以下消息 启动用户层代理时出错 监听 tcp 0 0 0 0 3000 绑定 地址已在使用中 netstat pna grep 3000 显示这个 tcp

随机推荐

  • 如何在 CentOS 8 上安装 Xrdp 服务器(远程桌面)

    Xrdp 是 Microsoft 远程桌面协议 RDP 的开源实现 允许您以图形方式控制远程系统 使用 RDP 您可以登录到远程计算机并创建真实的桌面会话 就像登录到本地计算机一样 本教程介绍如何在 CentOS 8 上安装和配置 Xrdp
  • 如何在 Ubuntu 18.04 上安装 Flask

    Flask 是一个免费 开源的 Python 微型 Web 框架 旨在帮助开发人员构建安全 可扩展和可维护的 Web 应用程序 烧瓶是基于Werkzeug和用途Jinja2作为模板引擎 Unlike Django 默认情况下 Flask 不
  • Linux 中的 Whoami 命令

    在本文中 我们将介绍whoami命令 顾名思义 whoami命令打印有效用户 ID 的用户名 换句话说 它显示当前登录用户的名称 如何使用whoami命令 语法为whoami命令如下 whoami OPTION 要显示当前登录用户的名称 请
  • 如何在 CentOS 8 上安装和配置 Redmine

    Redmine 是一款免费的开源项目管理和问题跟踪应用程序 它是跨平台和跨数据库的 构建在 Ruby on Rails 框架之上 Redmine包括对多个项目 wiki 问题跟踪系统 论坛 日历 电子邮件通知等的支持 本教程介绍如何在 Ce
  • Linux 中的 Stat 命令

    stat是一个命令行实用程序 显示有关给定文件或文件系统的详细信息 本文介绍了如何使用stat命令 使用stat命令 语法为stat命令如下 stat OPTION FILE stat接受一个或多个输入FILE名称并包含许多控制命令行为和输
  • 如何在 CentOS 8 上安装 Python 3.8

    Python 是世界上使用最广泛的编程语言之一 凭借其简单易学的语法 Python 成为初学者和经验丰富的开发人员的热门选择 Python 是一种非常通用的编程语言 它可用于构建各种应用程序 从简单的脚本到复杂的机器学习算法 CentOS
  • Linux 中的 Chgrp 命令(更改组)

    在 Linux 中 每个文件都与一个所有者和一个组相关联 并具有确定哪些用户可以读取 写入或执行该文件的权限 本文介绍了如何使用chgrp命令更改给定文件的组所有权 chgrp命令语法 The chgrp命令采用以下形式 chgrp OPT
  • 如何在 CentOS 7 上安装 Ruby

    Ruby 是当今最流行的语言之一 它具有优雅的语法 是 Ruby on Rails 框架背后的语言 本文展示了在 CentOS 上安装 Ruby 的几种不同方法 每种安装方法都有自己的优点 您可以选择最适合您的一种安装方法 先决条件 在开始
  • 如何每 5 分钟、10 分钟或 15 分钟运行一次 Cron 作业

    cron 作业是按指定时间间隔执行的任务 可以将任务安排为按分钟 小时 每月的某一天 每月 每周的某一天或这些的任意组合运行 Cron 作业通常用于自动化系统维护或管理 例如备份数据库或数据 使用最新的安全补丁更新系统 检查磁盘空间使用情况
  • Bash:追加到文件

    在 Bash 中 有多种方法可以将文本附加到文件中 本文解释了其中一些 要将文本附加到文件 您需要对其具有写入权限 否则 您将收到权限被拒绝的错误 使用重定向运算符附加到文件 gt gt 重定向允许您捕获命令的输出并将其作为输入发送到另一个
  • 在 C/C++ 中使用 INT_MAX 和 INT_MIN

    在本文中 我们将了解在 C C 中使用 INT MAX 和 INT MIN 这些实际上是有用的宏 它们表示最大和最小整数值 让我们用一些例子来看看它 使用 INT MAX 和 INT MIN INT MAX 是一个表示最大整数值的宏 同样
  • Google Guice 依赖注入示例教程

    谷歌指南是在应用程序中自动执行依赖项注入的框架 如果您直接遇到这里 我建议您查看一下依赖注入示例在这里我们了解了传统对象创建方法的问题以及依赖注入的实现优势 在上一篇教程中 我们学习了如何在应用程序中手动实现依赖注入 但是 当应用程序中的类
  • 如何在 CentOS 7 上安装 MySQL

    介绍 MySQL是一个开源数据库管理系统 通常作为流行的一部分安装LEMP Linux Nginx MySQL MariaDB PHP Python Perl 堆栈 它使用关系数据库和 SQL 结构化查询语言 来管理其数据 CentOS 7
  • 如何配置 DNS 循环负载平衡以实现高可用性

    介绍 尽管这是一种更有争议的技术 但利用提供商的全球影响力在地理上分发应用程序的一个好方法是使用和管理 DNS 响应 即返回的 IP 地址列表 除非您愿意在硬件和基础设施成本上花费一点钱 否则使用 DNS 来实现高可用性可能是一个很好的方法
  • 如何在 CentOS 7 上使用 FreeIPA 设置集中式 Linux 身份验证

    介绍 FreeIPA是 Linux 的开源安全解决方案 提供帐户管理和集中身份验证 类似于 Microsoft 的 Active Directory FreeIPA 构建在多个开源项目之上 包括 389 Directory Server M
  • Spring Boot 教程

    欢迎来到 Spring Boot 教程 春季启动是 Pivotal Team The Spring Team 的一个全新项目 它是在现有 Spring 框架之上开发的框架 Spring Boot 教程 Spring Boot使用全新的开发模
  • 如何使用 Whisper 和 Spleeter AI 工具制作卡拉 OK 视频

    介绍 人工智能工具可用于处理图像 音频或视频以产生新颖的结果 直到最近 在不使用大量时间和计算能力的情况下 自动编辑图像或音频仍然具有挑战性 即使如此 通常也只能运行交钥匙滤波器来删除声音中的某些频率或更改图像的调色板 较新的方法使用人工智
  • JSF PrimeFaces 教程

    欢迎来到 JSF Primefaces 教程 JavaServer Faces是当今用于实现 Java Web 应用程序用户界面的领先框架之一 JSF 已经组件化了 Web 应用程序 特别是与界面相关的部分 因为 JSF 中的所有单一视图都
  • 如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin

    介绍 很大一部分网站和应用程序都需要 MySQL 等关系数据库管理系统 然而 并非所有用户都愿意从命令行管理数据 为了解决这个问题 创建了一个名为 phpMyAdmin 的项目 以提供基于 Web 的管理界面形式的替代方案 在本指南中 我们
  • 如何保护您的服务器免受 POODLE SSLv3 漏洞的影响

    介绍 2014年10月14日 SSL加密协议第3版中的漏洞被披露 该漏洞被称为 POODLE Padding Oracle On Downgraded Legacy Encryption 允许攻击者使用中间人攻击以纯文本形式读取使用此版本协