如何在 AWS 负载均衡器响应中禁用 Apache HTTP 标头信息?

2024-01-07

我在 Apache 服务器上使用 AWS Elastic Beanstalk 部署了一个 node.js 环境。我对环境运行了 PCI 扫描,但出现了 2 次失败:

  • Apache ServerTokens 信息披露
  • Web服务器HTTP头信息泄露

当然,我认为我需要使用以下内容更新 httpd.conf 文件:

ServerSignature Off
ServerTokens Prod

但是,考虑到 Elastic Beanstalk 和 Elastic Load Balancer 的性质,一旦环境扩展、添加新服务器、重新启动等,实例配置就会被覆盖。

我还尝试将以下内容放入 .htaccess 文件中:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

# Security hardening for PCI
Options -Indexes
ServerSignature Off

# Dissallow iFrame usage outside of loylap.com for PCI Security Scan
Header set X-Frame-Options SAMEORIGIN

在 Node js 方面,我使用“helmet”包来应用一些安全措施,我还使用“express-force-https”包来确保应用程序强制执行 https。然而,这些似乎仅在 Express 应用程序启动后和重定向后才生效。

我为 HTTP(端口 80)和 HTTPS(端口 443)设置了 Elastic Load Balancer 侦听器,但是 HTTP 请求会立即路由到 HTTPS。

当我运行以下curl命令时:

curl -I https://myenvironment.com --head

我得到了以下行的可接受的响应:

Server: Apache

但是,当我在 http 端点上运行相同的请求时(即在重定向之前等):

curl -I http://myenvironment.com --head

我收到的响应披露了更多关于我的服务器的信息,因此导致 PCI 故障:

Server: Apache/2.4.34 (Amazon)

如何强制我的环境限制 HTTP 和 HTTPS 上的 http 标头响应?


感谢 @stdunbar 引导我使用 ebextensions 找到了正确的解决方案。

该解决方案对我有用如下:

  1. 在项目根目录中创建一个名为.ebextensions/01_server_hardening.config
  2. 将以下内容添加到文件中:
files:
  "/etc/httpd/conf.d/03_server_hardening.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
      ServerSignature Off
      ServerTokens Prod

container_commands:
  01_reload_httpd:
    command: "sudo service httpd reload"

(注意:缩进在此 YAML 文件中很重要 - 上面代码中的 2 个空格而不是制表符)。

在弹性beanstalk部署期间,这将在/etc/httpd/conf.d文件夹中创建一个新的conf文件,该文件默认设置为扩展ELB中的httpd.conf设置。

内容手动关闭ServerSignature并将ServerTokens设置为Prod,实现PCI标准。

运行容器命令会强制 httpd 重新启动(对于此特定版本的 Amazon linux - ubuntu 和其他版本将需要自己的标准reload).

将新命令部署到我的 EB 环境后,我的curl 命令在 HTTP 和 HTTPS 上按预期运行。

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

如何在 AWS 负载均衡器响应中禁用 Apache HTTP 标头信息? 的相关文章

  • SNS和SQS访问问题,收不到消息

    我已经经历过AWS SNS SQS 订阅 https docs aws amazon com sns latest dg sns send message to sqs cross account html多次说明 并浏览了一些不同的博客和
  • 需要运行需要超过 15 分钟才能完成的 aws lambda 函数?

    我的 Lambda 函数的时间限制为 15 分钟 早于 5 分钟 Lambda 进程在 15 分钟后自动终止 但我的进程需要超过 15 分钟 我该如何应对 这是没有办法解决的 如果您正在进行某种长时间运行的处理 那么您的另一个选择可能是在
  • 如何调试apache虚拟主机配置?

    我的 apache 虚拟主机配置再次出现问题 使用默认配置而不是我的特定配置 问题不在于配置错误 而在于如何解决它 有人有好的建议可以快速解决此类问题吗 更多信息 默认的conf文件是这样的 NameVirtualHost
  • 如果端口不是 80,.htaccess 重定向到错误页面

    我正在运行一个便携式服务器 http www server2go web de 通过 USB 棒 问题是我还在我的本地计算机上安装了 WAMP 并且 Apache 不知何故在 Windows 启动时启动 因为一些我现在不记得的随机原因并且无
  • GPU 上的 AWS SageMaker [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在 AWS 上训练神经网络 Tensorflow 我有一些 AWS 积分 据我了解 AWS
  • 如何配置 mod_proxy 以阻止除一个网站之外的所有网站

    我正在尝试设置 mod 代理来阻止除特定域之外的所有流量 我可以将其配置为使用 ProxyBlock 指令阻止各个域 并且可以使用 ProxyBlock 阻止所有内容 有没有一种方法可以阻止除一个域之外的所有域 Thanks Andrew
  • FPM 与 apache2 无法工作(权限被拒绝)

    我正在尝试使用 apache fastcgi 和 fpm 设置一个 Debian Web 服务器 但我越来越恼火 一旦我停用 mod php 我就会收到以下错误 2014 年 5 月 22 日星期四 12 16 10 错误 客户端 xxx
  • AWS Amplify Appsync 解决创建具有关系的对象时出现的错误

    我正在尝试创建一个具有关系的对象 我正在使用自动生成的放大突变 当我创建一个没有关系的对象时 操作会成功 当我创建具有关系的对象时 操作失败 我收到的错误消息是 The variables input contains a field na
  • 升级到 Yosemite 后 Apache 配置损坏

    昨天我升级到 Yosemite 现在我的 Web 开发本地配置不再起作用 我设法在下面设置了一个 userdir Users user public html我可以通过以下方式访问所有网站localhost user websitename
  • 如何将 conda 环境与 mod_wsgi 一起使用?

    我的第一篇文章 我对 Python 和 Apache 都很陌生 所以请对我宽容一些 我在 conda 环境中有一个 Python Web 应用程序 可以使用 Flask 很好地提供内容 现在我需要使用 Apache 而不是 Flask 来提
  • Servlet 从 Amazon S3 读取数据非常慢

    我需要一个 Servlet 来从 Amazon S3 服务器返回文件 只有服务器有访问凭据 S3 存储桶不公开 我无法改变这一点 有人告诉我使用数据流 但它们太慢了 为了进行测试 我有一个带有缩略图的小项目 当您单击一个项目时 它会打开一个
  • XAMPP:连接到本地主机修复? [执着的]

    我刚刚在我的计算机上安装了 XAMPP Windows 1 8 2 端口 80 受到保护 Apache 使用时没有任何问题 也没有任何端口冲突 我总是打开 Xampp 并在控制面板中启动 Apache 和 MySQL 模块 两个模块都在运行
  • AWS Cognito-获取带有ID的用户信息

    有没有什么方法可以获取 AWS Cognito 池 在 Android 上 中未登录的用户的信息 并知道他的 ID 我尝试了该代码 AppHelper getPool getUser username getDetailsInBackgro
  • 无法从亚马逊Windows实例的公共IP访问node.js服务器

    我正在 Windows 服务器的亚马逊微实例上运行 Node js 服务器 我无法使用亚马逊实例的公共IP访问node js服务器 我可以使用 localhost 12345 从实例访问 node js 服务器 但无法使用实例的公共 IP
  • 可以在 lambda 中订阅 aws IOT 主题吗?

    新手问题 找不到以前的答案 我想用 Alexa 构建一个简单的泵控制器 希望 Alexa 报告泵状态 最简单的方法是 Alexa gt lambda gt publish to Iot 然后 或者可能在发布之前 订阅另一个主题 本地控制器将
  • YAML 每个缩进有多少个空格?

    如果我在每个缩进级别使用一个空格 两个或四个空格 有什么区别吗 YAML 每个结构类型的空间数量有什么具体规则吗 例如4嵌套空间maps 1每空间项目清单 etc 我正在为 elastic beanstalk ebextensions 编写
  • api网关CORS设置

    我正在尝试在部署脚本中使用 aws cli 从命令行设置 aws CORS 我使用以下 perl to shell 命令创建了 POST 资源 我正在尝试将集成响应设置为 就像启用核心一样 aws apigateway put method
  • 在 Ubuntu 上通过 Apache Web 服务器和 DAV 启用 Subversion 访问

    我的家庭网络上有一台运行 Ubuntu 20 的 PC 我想将其用作我家本地网络中的 Subversion 服务器 我安装了 Apache Web 服务器并安装了 Subversion 现在我想使用 HTTP DAV 协议通过 Apache
  • 如何在纯 HTML 页面中返回特定的 HTTP 状态代码

    Google 建议当网站暂时不可用时返回 503 HTTP 响应 我有一些纯 HTML 网站 如何在纯 HTML 网站中返回 503 状态 我使用的是带有 Apache 的 Linux 机器 您必须在服务器上而不是在 HTML 文件中设置状
  • 如何在不安装 AWS SDK 的情况下通过 Powershell 从 S3 下载文件?

    我想使用 Windows Powershell 从我的 AWS S3 存储桶下载文件 我无法安装任何 AWS 软件 需要创建一个 API 才能访问 AWS S3 中的文件 我使用Postman测试该文件是否可访问并且成功 鉴于这一成功 我尝

随机推荐

  • 节点 8 的推荐 typescript 配置

    如果我想在 Node 8 上使用已编译的源代码 推荐的 typescript 配置是什么 大多数教程使用以下内容tsconfig json compilerOptions target es6 module commonjs 但现在我发现
  • multiprocessing.Queue 的工作示例

    在从这个问题中指出它之后 我正在寻找 multiprocessing Queue 的工作示例 Python 使用多处理器 https stackoverflow com questions 4838738 python utilizing
  • Python 3 中列表内的列表分组

    我有一个字符串列表列表 如下所示 List1 John Doe 1 2 3 Henry Doe 4 5 6 我想变成这样的东西 List1 John Doe 1 2 3 Henry Doe 4 5 6 但我似乎很难这样做 List1 Joh
  • 为什么通用 ICollection 不在 .NET 4.5 中实现 IReadOnlyCollection?

    在 NET 4 5 C 5 中 IReadOnlyCollection
  • UISwipeGestureRecognizer 滑动长度

    知道是否有办法获取滑动手势或触摸的长度 以便我可以计算距离 不可能通过滑动手势获得距离 因为当手势结束时 SwipeGesture 会触发您可以准确访问该位置一次的方法 也许您想使用 UIPanGestureRecognizer 如果您可以
  • 如何从 Azure 数据工厂运行 PowerShell

    I have PowerShell该脚本将复杂的 CSV 文件分割为每 1000 条记录的较小的 CSV 文件 这是代码 i 0 Get Content C Users dell Desktop Powershell Input bigsi
  • SignTool 错误:访问被拒绝

    我正在尝试使用 pfx 文件签署外部 dllSignTool在cmd exe中使用以下代码 SignTool 签名 f MyCert pfx p MyPassword MyControl dll 但是 我不断收到以下错误消息 Done Ad
  • 如何过滤列表

    我正在编写一个简单的函数 从列表中取出任何奇数并返回仅包含偶数的列表 def purify numbers for i in numbers if i 2 0 numbers remove i return numbers print pu
  • 无法从其他应用程序读取 SharedPreferences

    EDITED 我有一个应用程序可以像这样写入 SharedPreferences Context otherAppsContext null try otherAppsContext createPackageContext AfroKey
  • 如何获取 jPlayer 中歌曲当前播放的时间? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我使用 jPlayer 控件来播放音
  • 在notifyAppWidgetViewDataChanged之后没有调用RemoteViewService中的onDataSetChanged()

    在我的 AppWidgetProvider 类中 我有以下代码onUpdate method Update each of the widgets with the remote adapter for int appWidgetId ap
  • 完美转发、可变参数模板、initializer_list - 一起

    gcc 4 8 1 和 clang 3 3 c 11 功能完整 我需要在某些构造 make shared c 14 make unique 等元素的函数中转发参数 但我对类型推导 转发初始值设定项列表 数组有问题 我需要的工作示例foo f
  • 了解托管 bean/支持 bean [重复]

    这个问题在这里已经有答案了 我正在学习 Java EE 6 我正在尝试掌握它的整体形象 我正在阅读有关 JSF 以及如何添加组件的内容 我正在将组件中的值设置 读取到具有 ManagedBean 注释的 bean 我在正确理解它时遇到一些困
  • 单个变量的线程安全

    我了解线程安全的概念 我正在寻找在尝试保护单个变量时简化线程安全的建议 假设我有一个变量 double aPass 我想保护这个变量 所以我创建了一个互斥体 pthread mutex t aPass lock 现在我可以想到两种好方法 但
  • 导入打字稿时如何在路径中使用变量

    是否可以将变量 或常量 放入路径中 而不是将整个路径写为字符串文字 看起来 Angular 除了字符串文字之外不接受任何内容 import aClass require simpleClass import aComponent from
  • 将 pandas 数据框转换为 pandas 系列

    我需要一些有关数据类型问题的帮助 我正在尝试转换 pandas 数据框 如下所示 timestamp number 2018 01 01 1 2018 02 01 0 2018 03 01 5 2018 04 01 0 2018 05 01
  • 从 NSURLConnection 的响应头中读取数据

    如何从服务器响应中发送的标头中读取数据 我正在使用 NSURLConnection 发送请求 如果 URL 是 HTTP URL 则NSURLResponse您在连接的委托中收到的 connection didReceiveResponse
  • xampp mysql 和 phpmyadmin 不起作用

    昨天我使用 xampp 并使用 apache 和 mysql 服务 今天想启动mysql服务 没成功 我尝试在论坛上搜索解决方案 但找不到任何内容 所以我问你 在 mysql 停止工作后 我在日志文件中找到此消息 2015 10 29 12
  • ASP.NET MVC 将数据从视图传递到控制器

    我有一个带有网格的视图 其中包含添加到工作站的项目 用户可以从下拉列表中选择一个项目 然后单击一个操作链接 该链接调用控制器将该项目添加到工作站 我可以通过读取控制器的 Post 操作中的 FormCollection 对象来使其工作 p
  • 如何在 AWS 负载均衡器响应中禁用 Apache HTTP 标头信息?

    我在 Apache 服务器上使用 AWS Elastic Beanstalk 部署了一个 node js 环境 我对环境运行了 PCI 扫描 但出现了 2 次失败 Apache ServerTokens 信息披露 Web服务器HTTP头信息