Ho un ambiente node.js distribuito usando AWS Elastic Beanstalk su un server Apache. Ho eseguito una scansione PCI sull'ambiente e sto ottenendo 2 errori:
- Informazioni su Apache ServerTokens Information
- Informazioni sull'intestazione HTTP del server Web
Naturalmente penso di dover aggiornare il file httpd.conf con il seguente:
ServerSignature Off
ServerTokens Prod
Tuttavia, data la natura di Elastic Beanstalk e Elastic Load Balancer, non appena l'ambiente si ridimensiona, aggiunge nuovi server, riavvia, ecc. la configurazione verrà sovrascritta.
Ho anche provato a inserire quanto segue in un file .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
Sul lato nodo js uso il pacchetto "casco" per applicare alcune misure di sicurezza, uso anche il pacchetto "express-force-https" per garantire che l'applicazione stia applicando https. Tuttavia, questi sembrano avere effetto solo dopo l'avvio dell'applicazione Express e dopo il reindirizzamento.
I listener Elastic Load Balancer sono configurati per HTTP (porta 80) e HTTPS (porta 443), tuttavia le richieste HTTP vengono immediatamente instradate su HTTPS.
Quando eseguo il seguente comando di arricciatura:
curl -I https://myenvironment.com --head
Ricevo una risposta accettabile con la seguente riga:
Server: Apache
Tuttavia quando eseguo la stessa richiesta sull'endpoint http (vale a dire prima dei reindirizzamenti ecc.):
curl -I http://myenvironment.com --head
Ricevo una risposta che rivela più informazioni sul mio server di quanto dovrebbe, e quindi l'errore PCI:
Server: Apache/2.4.34 (Amazon)
Come posso forzare il mio ambiente a limitare la risposta dell'intestazione http su HTTP e su HTTPS?