AWS Load Balancer Risposta Intestazione Server Apache Disclosure

0

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?

    
posta contool 13.11.2018 - 18:06
fonte

1 risposta

1

Credito a u / stdunbar per avermi condotto alla soluzione corretta qui usando le estensioni di questo link stackoverflow .

La soluzione ha funzionato per me come segue:

  1. Crea un file nella root del progetto chiamato .ebextensions/01_server_hardening.config
  2. Aggiungi il seguente contenuto al file:

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"

(Nota: il rientro è importante in questo file YAML - 2 spazi anziché tabulazioni nel codice sopra).

Durante la distribuzione di beanstalk elastico, ciò creerà un nuovo file di conf nella cartella /etc/httpd/conf.d che è impostata per estendere le impostazioni httpd.conf in ELB per impostazione predefinita.

Il contenuto disattiva manualmente Server Signign e imposta ServerTokens su Prod, ottenendo lo standard PCI.

L'esecuzione del comando container impone un riavvio httpd (per questa particolare versione di Amazon linux - ubuntu e altre versioni richiederebbero il proprio ricarico standard).

Dopo aver distribuito i nuovi comandi nel mio ambiente EB, i miei comandi di arricciatura vengono eseguiti come previsto su HTTP e HTTPS.

    
risposta data 14.11.2018 - 03:19
fonte

Leggi altre domande sui tag