У меня есть среда node.js, развернутая с использованием AWS Elastic Beanstalk на сервере Apache. Я провел сканирование PCI в среде и получаю 2 ошибки:
- Apache ServerTokens Раскрытие информации
- Раскрытие информации HTTP-заголовка веб-сервера
Естественно, я думаю, что мне нужно обновить файл httpd.conf следующим образом:
ServerSignature Off
ServerTokens Prod
Однако, учитывая природу Elastic Beanstalk и Elastic Load Balancers, как только среда масштабируется, добавляет новые серверы, перезагружается и т. Д., Конфигурация экземпляра будет перезаписана.
Я также попытался поместить в файл .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 я использую пакет "шлем", чтобы применить некоторые меры безопасности, я также использую пакет "express-force-https", чтобы обеспечить применение приложением https. Однако, похоже, что они вступают в силу только после запуска приложения Express и после перенаправления.
У меня есть прослушиватели Elastic Load Balancer, настроенные как для HTTP (порт 80), так и для HTTPS (порт 443), однако запросы 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 для HTTP, а также HTTPS?