Dal articolo si è collegato , ci sono tre passaggi raccomanda di proteggere se stessi contro questa vulnerabilità. In linea di principio, questi passaggi si applicano a qualsiasi software che è possibile utilizzare con SSL / TLS, ma qui verranno trattati i passaggi specifici per applicarli ad Apache (httpd) poiché si tratta del software in questione.
- Disabilita Export Cipher Suites
Di cui ci occuperemo nelle modifiche alla configurazione che faremo in 2. di seguito ( !EXPORT
verso la fine della SSLCipherSuite
riga è come disabiliteremo le suite di crittografia di esportazione)
- Distribuisci (effimero) curva ellittica Diffie-Hellman (ECDHE)
Per questo, è necessario modificare alcune impostazioni nei file di configurazione di Apache SSLProtocol
, vale a dire SSLCipherSuite
, SSLHonorCipherOrder
per avere una configurazione "best practice". Qualcosa di simile al seguente sarà sufficiente:
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder on
Nota: per quanto riguarda l' SSLCipherSuite
impostazione da utilizzare, questa è sempre in evoluzione ed è una buona idea consultare risorse come questa per verificare l'ultima configurazione consigliata.
3. Generare un gruppo Hellman Diffie forte e unico
Per fare ciò, puoi correre
openssl dhparam -out dhparams.pem 2048
.
Si noti che ciò comporterà un carico significativo sul server durante la generazione dei parametri: è sempre possibile aggirare questo potenziale problema generando i parametri su un altro computer e utilizzando scp
o simili per trasferirli sul server in questione per l'uso.
Per utilizzare questi appena generati dhparams
in Apache, dalla documentazione di Apache :
Per generare parametri DH personalizzati, utilizzare il comando openssl dhparam. In alternativa, è possibile aggiungere i seguenti parametri DH a 1024 bit standard da RFC 2409, sezione 6.2 al rispettivo file SSLCertificateFile :
(enfatizzare il mio)
a cui fa seguito un parametro DH standard a 1024 bit. Da ciò possiamo dedurre che i parametri DH personalizzati possono essere semplicemente aggiunti al pertinente SSLCertificateFile
in questione.
Per fare ciò, eseguire qualcosa di simile al seguente:
cat /path/to/custom/dhparam >> /path/to/sslcertfile
In alternativa, secondo la sottosezione Apache dell'articolo che hai originariamente collegato, puoi anche specificare il file dhparams personalizzato che hai creato se preferisci non modificare il file del certificato stesso, quindi:
SSLOpenSSLConfCmd DHParameters "/path/to/dhparams.pem"
in qualunque configurazione di Apache sia rilevante per la tua specifica implementazione SSL / TLS - generalmente in conf.d/ssl.conf
o conf.d/vhosts.conf
ma questo differirà a seconda di come hai configurato Apache.
Vale la pena notare che, come da questo link ,
Prima di Apache 2.4.7, il parametro DH è sempre impostato su 1024 bit e non è configurabile dall'utente. Questo è stato corretto in mod_ssl 2.4.7 che Red Hat ha eseguito il backport nella sua distribuzione Apache 2.2 di RHEL 6 con httpd-2.2.15-32.el6
Su Debian Wheezy aggiorna apache2 a 2.2.22-13 + deb7u4 o successivo e si apre a 1.0.1e-2 + deb7u17. Il precedente SSLCipherSuite non funziona perfettamente, invece usa quanto segue come in questo blog :
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-DSS-AES128-SHA256:DHE-DSS-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-RSA-AES256-SHA256:!DHE-RSA-CAMELLIA128-SHA:!DHE-RSA-CAMELLIA256-SHA
Dovresti verificare se la tua versione di Apache è successiva a questi numeri di versione a seconda della tua distribuzione e, in caso contrario, aggiornarla se possibile.
Dopo aver eseguito i passaggi precedenti per aggiornare la configurazione e aver riavviato il servizio Apache per applicare le modifiche, è necessario verificare che la configurazione sia desiderata eseguendo i test su SSLLabs e sull'articolo relativo a questa particolare vulnerabilità.