Secondo lo studio di Netcraft, il 95% dei server HTTPS è vulnerabile agli attacchi Man-in-the-Middle. Pertanto, è molto importante implementare correttamente HSTS. HSTS (HTTP Strict Transport Security) è una politica che protegge i siti Web da attacchi dannosi come clickjacking, downgrade del protocollo e attacchi man-in-the-middle, come spiegato nel mio articolo precedente. In questo articolo, vedremo vari passaggi per abilitare HSTS su NGINX e Apache.
Come abilitare HSTS su Nginx
Apri il tuo file di configurazione Nginx per il dominio di cui hai bisogno per abilitare HSTS.
Ad esempio:/etc/nginx/conf.d/tg.conf
Aggiungi la riga seguente al blocco del server HTTPS:
NON AGGIUNGERE HSTS al blocco HTTPadd_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" always;includeSubDomains parametro
Il includeSubDomains
facoltativo Il parametro indica al browser che la politica HSTS si applica anche a tutti i sottodomini del dominio corrente.
Il always
assicura che l'intestazione sia impostata per tutte le risposte, comprese le risposte di errore generate internamente.
Per configurare l'HSTS per un intervallo di tempo di 1 anno, impostare l'età massima su 31536000 (in secondi). Devono essere necessari almeno 3 mesi per soddisfare i requisiti di sicurezza.
Riavvia il servizio Nginx
Prima di riavviare, verificare il file di configurazione come di seguito:
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Riavvia il server Nginx per accettare le nuove modifiche.
# systemctl restart nginx
Come abilitare HSTS su Apache
Per abilitare HSTS su Apache, abbiamo bisogno di mod_headers
modulo installato. Esegui il comando seguente per scoprire se il modulo è già installato.
# apachectl -M | grep headers headers_module (shared)
se ce l'hai, procediamo con la configurazione delle impostazioni dell'intestazione del dominio che ti serve per abilitare HSTS. Apri il file di configurazione che contiene il VirtualHost
che utilizza SSL.
For eg: /etc/httpd/conf.d/tg.conf
Aggiungi la configurazione seguente all'interno del tuo VirtualHost
per la porta 443 come di seguito:
<VirtualHost *:443> ...... Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" ...... </VirtualHost>
Riavvia il servizio Apache
Prima di riavviare, verificare il file di configurazione come di seguito:
# apachectl configtest Syntax OK
Se la sintassi è corretta, riavvia il server Apache per accettare le nuove modifiche.
# systemctl restart httpd ## Redhat systems # systemctl restart apache2 ## Debian systems
Questo è tutto! Testare il server web per vedere se l'HSTS è stato abilitato.
$ curl -kIs https://example.com | grep Strict Strict-Transport-Security: max-age=31536000; includeSubDomains