L’uso del protocollo HTTPS è diventato sempre più diffuso, garantendo una connessione criptata tra l’utente e il server, esistono ancora vulnerabilità che possono essere sfruttate per compromettere queste connessioni. Qui entra in gioco HSTS, o HTTP Strict Transport Security. Questo meccanismo di garantisce che i browser degli utenti si connettano ai siti web esclusivamente attraverso HTTPS, prevenendo attacchi potenzialmente dannosi. In questo articolo, esploreremo in dettaglio che cos’è HSTS, perché è essenziale per la sicurezza dei tuo utenti e come puoi implementarlo.
Che cos’è HSTS?
HSTS, acronimo di HTTP Strict Transport Security, rappresenta un meccanismo di sicurezza progettato specificamente per proteggere i siti web e i loro utenti da una serie di vulnerabilità e attacchi associati alle connessioni non protette. Ma per comprendere appieno l’importanza di HSTS, è fondamentale avere una chiara visione di come funziona la navigazione web a livello di protocollo.
Quando visiti un sito web, il tuo browser stabilisce una connessione con il server su cui è ospitato il sito. Questa connessione può avvenire attraverso due protocolli principali: HTTP (HyperText Transfer Protocol) e HTTPS (HTTP Secure). Mentre il primo è un protocollo standard per la trasmissione di informazioni, il secondo offre un livello di sicurezza aggiuntivo, criptando i dati trasmessi tra il browser e il server. Questa crittografia rende estremamente difficile per un malintenzionato intercettare o modificare le informazioni in transito.
Tuttavia, nonostante i benefici offerti da HTTPS, molti siti web hanno ancora la possibilità di essere accessibili tramite connessioni sia HTTP che HTTPS. In scenari come questo, un attaccante potrebbe sfruttare questo momento di debolezza per forzare la connessione a utilizzare il protocollo HTTP non protetto, in un tentativo noto come “downgrade attack“.
Ecco dove HSTS mostra la sua forza. Quando un sito web implementa HSTS, esso invia un’intestazione speciale al browser dell’utente. Questa intestazione dice, in sostanza: “Per il periodo di tempo specificato, connettiti sempre utilizzando solo HTTPS”. Questo garantisce che, una volta stabilita una connessione sicura con un sito, tutte le connessioni future rimarranno sicure, prevenendo efficacemente i downgrade attacks e altri vettori di attacco simili.
Come Attivare HSTS su siti WordPress e non
L’attivazione di HSTS richiede una serie di passaggi tecnici, ma, con una guida chiara, è un processo alla portata di chiunque gestisca un sito web.
Ecco come procedere:
Assicurarsi che il sito funzioni correttamente su HTTPS
Prima di tutto, è fondamentale che il tuo sito sia completamente funzionante su HTTPS. Qualsiasi risorsa (immagini, script, fogli di stile) deve essere caricata attraverso HTTPS.
Quasi tutti gli hosting provider consento l’installazione di certificati gratuititi come Let’s Encrypt.
Configurare il Webserver
Per i siti web che utilizzano Apache (solitamente la maggior parte degli hosting WordPress), inserire nel file .htaccess
la seguente direttiva:
<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</ifModule>
Per i siti che utilizzano Nginx come web server inserire:
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
Cosa significano max-age, includeSubDomains e preload?
: dice al browser di ricordarsi di connettersi al tuo sito esclusivamente via HTTPS per il prossimo anno (misurato in secondi).
max-age=31536000
includeSubDomains
: Assicura che la policy si applichi a tutti i sottodomini del tuo sito. Essere cauti quando si attiva includeSubDomains
. Assicurarsi che tutti i sottodomini siano pronti e in grado di funzionare esclusivamente su HTTPS. Un sottodominio non protetto potrebbe diventare inaccessibile agli utenti che hanno ricevuto l’intestazione HSTS dal dominio principale.
preload
: indica l’intenzione di includere il dominio nella lista di preload HSTS, una lista incorporata nei browser che indica quali domini dovrebbero essere contattati esclusivamente tramite HTTPS, senza aver mai visitato il sito in precedenza. L’adesione alla lista di preload offre una protezione da attacchi “man-in-the-middle” perché la prima connessione ad un nuovo sito mai visitato, avverrà sempre in HTTPS.
Come inserire un sito nella lista di preload
- Requisiti Preliminari:
- Assicurati che il tuo sito e tutti i suoi sottodomini funzionino correttamente su HTTPS.
- Attiva HSTS sul tuo sito con un
max-age
di almeno 31536000 secondi (un anno). - Usa il parametro
includeSubDomains
per estendere la protezione HSTS a tutti i sottodomini. - Aggiungi la direttiva
preload
all’intestazione HSTS del tuo sito.
- Verifica il Sito:
- Vai al sito ufficiale di HSTS preload: hstspreload.org.
- Inserisci il nome del tuo dominio nel campo di ricerca e fai clic su “Check”.
- Il sito eseguirà una serie di controlli per assicurarsi che il tuo dominio soddisfi tutti i requisiti per essere incluso nella lista di preload.
- Sottometti il Sito:
- Se il tuo sito passa tutti i controlli, ti verrà fornita l’opzione di sottometterlo per l’inclusione nella lista di preload.
- Clicca sul pulsante di sottomissione e segui le istruzioni.
- Attesa e Verifica:
- Una volta sottomesso, ci potrebbe volere del tempo prima che il tuo sito venga effettivamente incluso nella lista di preload e prima che tale lista venga aggiornata nei browser. La tempistica varia, ma può richiedere diverse settimane o anche mesi.
- Puoi controllare periodicamente su hstspreload.org per vedere lo stato della tua richiesta.
- Attenzione:
- Ricorda che una volta che il tuo sito è incluso nella lista di preload, è difficile tornare indietro. La rimozione dal preload può richiedere molto tempo e non è garantito che tutti i browser aggiornino la loro lista immediatamente.
- Assicurati di essere pronto a supportare HTTPS a lungo termine sul tuo sito e su tutti i suoi sottodomini prima di sottomettere per la pre-caricamento.
Mentre l’attivazione di HSTS e l’aggiunta del proprio dominio alla lista di preload potrebbero sembrare passaggi tecnici, sono, in realtà, azioni fondamentali per qualsiasi amministratore di sito che tenga alla sicurezza dei propri utenti. Come abbiamo visto, l’attivazione e la configurazione di HSTS sono passaggi concreti e realizzabili.
HSTS su Aruba
Personalmente ho incontrato delle difficoltà nella configurazione dell’HSTS su hosting Linux di Aruba.
Per far in modo che HSTS funzioni correttamente, la sequenza di reindirizzamenti deve avvenire nel seguente modo:
http://mio-sito.it
→https://
mio-sito
.ithttps://
→mio-sito
.ithttps://www.
mio-sito
.it/
Purtroppo Aruba esegue un redirect automatico da http://mio-sito.it
→ http://www.
bypassando completamente le direttive inserite nel file .htaccess e di conseguenza il sito hstspreload.org restituiva il seguente errore:mio-sito
.it
`http://mio-sito.it` (HTTP) should immediately redirect to `https://mio-sito.it` (HTTPS) before adding the www subdomain. Right now, the first redirect is to `https://www.mio-sito.it/`. The extra redirect is required to ensure that any browser which supports HSTS will record the HSTS entry for the top level domain, not just the subdomain.
Risoluzione problema
Per risolvere il problema è stato necessario aprire un ticket su Aruba spiegando la problematica e dopo qualche giorno sono riusciti a rimuovere il redirect che dava il problema. Nel file .htaccess go inserito anche la seguente direttiva:
# Se l'accesso avviene via HTTP e senza www, reindirizza prima a HTTPS senza www
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^mio-sito\.it$ [NC]
RewriteRule ^ https://mio-sito.it%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP:X-Forwarded-Proto} !^https$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Lascia un commento