- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Apache 服务器上使用 AWS Elastic Beanstalk 部署了一个 node.js 环境。我对环境运行了 PCI 扫描,但遇到了 2 次失败:
当然,我想我需要使用以下内容更新 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
在节点 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 header 响应?
最佳答案
感谢@stdunbar 引导我使用 ebextensions 找到正确的解决方案。
解决方案对我来说如下:
.ebextensions/01_server_hardening.config
的文件>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 个空格而不是制表符)。
在 elastic beanstalk 部署期间,这将在/etc/httpd/conf.d 文件夹中创建一个新的 conf 文件,该文件默认设置为扩展 ELB 中的 httpd.conf 设置。
内容手动关闭ServerSignature,设置ServerTokens为Prod,达到PCI标准。
运行容器命令强制重新启动 httpd(对于这个特定版本的 Amazon linux - ubuntu 和其他版本需要它们自己的标准 reload
)。
将新命令部署到我的 EB 环境后,我的 curl 命令在 HTTP 和 HTTPS 上按预期运行。
关于apache - 如何在 AWS 负载均衡器响应中禁用 Apache HTTP header 信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53287356/
我是一名优秀的程序员,十分优秀!