Avviso SSL/TLS di HAproxy: Impostazione di tune.ssl.default-dh-param su 1024 per impostazione predefinita

Introduzione

In questo tutorial imparerai come risolvere e correggere un messaggio di avvertimento di HAProxy Setting tune.ssl.default-dh-param a 1024 per impostazione predefinita utilizzando i metodi descritti nel tutorial Come Risolvere gli Errori Comuni di HAProxy all’inizio di questa serie. Una volta confermato che il tuo server sta generando il messaggio di avvertimento, imparerai come risolverlo impostando l’opzione di configurazione ssl-dh-param-file di HAProxy per utilizzare un file dhparams.pem personalizzato.

Potresti incontrare un messaggio di avvertimento di HAProxy Setting tune.ssl.default-dh-param a 1024 per impostazione predefinita quando il tuo server HAProxy è configurato con un certificato SSL/TLS e il parametro tune.ssl.default-dh-param non è impostato nel file di configurazione haproxy.cfg di HAProxy. Quando il parametro non è impostato, HAProxy utilizzerà per impostazione predefinita un valore di 1024 bit per la parte di accordo sulla chiave Diffie-Hellman della fase di handshake TLS, che è considerato non sicuro.

Il tuo server HAProxy potrebbe attivare questo avviso senza che tu ne sia a conoscenza. Puoi configurare un certificato SSL/TLS e HAProxy funzionerà, ma il server potrebbe avvisarti del problema in background. Se non sei sicuro se il tuo server HAProxy sta utilizzando un parametro Diffie-Hellman a 1024 bit per impostazione predefinita, puoi utilizzare uno strumento come il Test del server SSL Labs per controllare al tuo posto. Se ricevi un report che contiene la riga Questo server supporta parametri di scambio chiave Diffie-Hellman (DH) deboli, allora il tuo server HAProxy è interessato.

Se hai già determinato che il tuo server HAProxy sta generando un avviso riguardante l’impostazione tune.ssl.default-dh-param e desideri saltare il processo di risoluzione dei problemi, la sezione Risoluzione di un avviso Secure tune.ssl.default-dh-param alla fine di questo tutorial spiega come risolvere il problema.

Controllo di un avviso tune.ssl.default-dh-param utilizzando systemctl

Seguendo i passaggi di risoluzione dei problemi del tutorial Come Risolvere Errori Comuni di HAProxy all’inizio di questa serie, il primo passo quando stai risolvendo un messaggio di avviso Impostazione di tune.ssl.default-dh-param su 1024 per impostazione predefinita è controllare lo stato di HAProxy con systemctl.

L’output dal comando systemctl status potrebbe contenere tutte le informazioni diagnostiche di cui hai bisogno per risolvere l’errore. Tuttavia, è importante esaminare lo stato attuale del servizio haproxy per assicurarsi che sia in esecuzione e che tutti i servizi che dipendono da esso siano ancora in grado di funzionare mentre risolvi l’avviso.

Utilizza questo comando systemctl per esaminare lo stato di HAProxy su qualsiasi distribuzione Linux:

  1. sudo systemctl status haproxy.service -l --no-pager

Il flag -l garantirà che systemctl produca in output l’intero contenuto di una riga, anziché sostituire ellissi () per le righe lunghe. Il flag --no-pager produrrà l’intero registro sullo schermo senza invocare uno strumento come less che mostra solo una schermata di contenuto per volta.

Dato che stai risolvendo un messaggio di avviso Setting tune.ssl.default-dh-param to 1024 by default, dovresti ricevere un output simile al seguente:

Output
● haproxy.service - HAProxy Load Balancer Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2020-10-06 14:31:39 UTC; 2min 31s ago Process: 71406 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS) Main PID: 71407 (haproxy) . . . Oct 06 14:31:39 bb9fb4c53743 systemd[1]: Starting HAProxy Load Balancer... Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : parsing [/etc/haproxy/haproxy.cfg:69] : 'bind *:5000' : Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: unable to load default 1024 bits DH parameter for certificate '/etc/haproxy/fullchain.pem'. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: , SSL library will use an automatically generated DH parameter. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy main started. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy static started. Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy app started. Oct 06 14:31:39 bb9fb4c53743 systemd[1]: Started HAProxy Load Balancer.

Ci sono due sezioni importanti evidenziate da notare in questo output. La prima è la linea active (running), che indica che HAProxy è disponibile ed in esecuzione. Se il tuo server mostra una riga come Active: failed, allora dovrai risolvere i problemi di HAProxy utilizzando i metodi descritti nel tutorial Come Risolvere i Comuni Errori di HAProxy all’inizio di questa serie.

Il secondo insieme di linee evidenziate proviene dal diario di systemd e contiene l’avvertimento tune.ssl.default-dh-param. Queste linee forniscono tutte le informazioni sull’avvertimento, su come viene attivato, le azioni intraprese da HAProxy e come risolverlo.

Se l’output del tuo systemctl include linee con l’avvertimento tune.ssl.default-dh-param, passa alla sezione Risoluzione di un Avvertimento tune.ssl.default-dh-param alla fine di questo tutorial per imparare come configurare HAProxy con un valore più sicuro.

Altrimenti, se l’output del tuo systemctl non fornisce informazioni specifiche sull’avvertimento, ma sai che il tuo server sta utilizzando parametri Diffie-Hellman deboli, la prossima sezione di questo tutorial ti guiderà nell’uso dei log di journalctl per individuare il messaggio di avvertimento.

Controllo di un Avvertimento tune.ssl.default-dh-param Utilizzando journalctl

Se l’output del tuo systemctl non include un avvertimento tune.ssl.default-dh-param ma sai che il tuo server è interessato, procedi con l’uso del comando journalctl per esaminare i log di systemd per HAProxy.

Esegui il seguente comando su qualsiasi distribuzione Linux per ispezionare i log del diario di systemd per il servizio haproxy:

  1. sudo journalctl -u haproxy.service -l --no-pager | grep tune.ssl.default-dh-param

La parte | grep tune.ssl.default-dh-param del comando utilizza un tubo (|) per inviare l’output da journalctl al comando grep come input. Utilizzare il tubo significa che verranno mostrate solo le righe corrispondenti dal diario sullo schermo.

Se il diario include un avviso tune.ssl.default-dh-param, riceverai un output come il seguente:

Output
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.

Dato che questo output include l’avviso, puoi passare alla sezione Impostare un Valore Sicuro per tune.ssl.default-dh-param alla fine di questo tutorial per imparare come configurare HAProxy con un valore più sicuro.

Se non ricevi alcun output dopo aver eseguito il comando journalctl, la sezione successiva mostrerà come puoi verificare la presenza di un avviso tune.ssl.default-dh-param utilizzando lo strumento di verifica della configurazione incorporato in HAProxy o i file di registro.

Verifica di un Avviso tune.ssl.default-dh-param Utilizzando haproxy -c o i File di Registro

HAProxy include un comando che può esaminare e validare i suoi file di configurazione. È possibile utilizzare il comando per controllare errori di sintassi o impostazioni non valide senza riavviare HAProxy e rischiare tempi di inattività per i vostri servizi. Inoltre, se il vostro server HAProxy è configurato per registrare l’output su un file o nei log di sistema, è possibile esaminare i file di registro per controllare un avvertimento tune.ssl.default-dh-param.

Per controllare un avvertimento tune.ssl.default-dh-param utilizzando HAProxy stesso, eseguire il seguente comando su qualsiasi distribuzione Linux. Se il file di configurazione di HAProxy si trova in una posizione diversa rispetto al percorso evidenziato /etc/haproxy/haproxy.cfg, assicurarsi di sostituire il percorso corretto del proprio file:

  1. sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Se il vostro server è configurato con SSL/TLS e non ha impostato tune.ssl.default-dh-param, riceverete un output di avviso simile al seguente:

Output
[WARNING] 279/150829 (71512) : parsing [/etc/haproxy/haproxy.cfg:69] : 'bind *:5000' : unable to load default 1024 bits DH parameter for certificate '/etc/haproxy/fullchain.pem'. , SSL library will use an automatically generated DH parameter. [WARNING] 279/150829 (71512) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear. Configuration file is valid

La riga evidenziata contiene l’avviso tune.ssl.default-dh-param.

Per controllare il messaggio di avviso utilizzando i log di HAProxy, è possibile cercare righe che corrispondano alla stringa tune.ssl.default-dh-param utilizzando il comando grep. Eseguire il seguente comando per controllare gli avvisi:

  1. sudo grep tune.ssl.default-dh-param /var/log/haproxy.log

Notare che se avete configurato HAProxy con una posizione diversa per i log, assicuratevi di sostituire il vostro percorso al posto del file evidenziato /var/log/haproxy.log.

Se il vostro server sta generando l’avviso, riceverete un output simile al seguente:

Output
Oct 6 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.

Nota: I tuoi file di registro potrebbero non includere il messaggio di avviso, ma il comando haproxy -c genererà comunque il avviso. Se questo è il caso, è probabile che il servizio HAproxy sia in esecuzione da tempo sufficiente per consentire la rotazione del file di registro, quindi non include il avviso.

Controllare il messaggio utilizzando il metodo haproxy -c è il modo più affidabile per determinare se il tuo server è interessato, quindi puoi tranquillamente ignorare le voci di file di registro mancanti.

Ora che hai determinato se il tuo server sta generando un avviso tune.ssl.default-dh-param, puoi procedere al passaggio successivo di questo tutorial, che spiega due metodi che puoi utilizzare per risolvere il problema.

Risoluzione di un Avviso tune.ssl.default-dh-param

Puoi risolvere un avviso tune.ssl.default-dh-param in HAProxy con diverse impostazioni diverse. Un’opzione è impostare il valore tune.ssl.default-dh-param su qualcosa di più grande di 1024 esplicitamente in /etc/haproxy/haproxy.cfg come indicato nel messaggio di avviso. Tuttavia, la documentazione di HAProxy consiglia di specificare parametri Diffie-Hellman personalizzati poiché questo approccio è più sicuro, quindi useremo questo metodo invece.

Prima genererai un file dhparams.pem utilizzando l’utilità openssl. Una volta creato il file, lo aggiungerai alla sezione di configurazione globale di HAProxy in modo che eventuali blocchi frontend ereditino l’impostazione.

Per generare i parametri DH personalizzati, esegui il seguente comando:

  1. sudo openssl dhparam -out /etc/haproxy/dhparams.pem 2048

Riceverai un output simile al seguente:

Output
Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time ..............

Una volta completato il comando, configura HAProxy per utilizzare il file di parametri DH personalizzati. Apri /etc/haproxy/haproxy.cfg in vi o nel tuo editor preferito.

sudo vi /etc/haproxy/haproxy.cfg

Trova la sezione nel file simile alla seguente:

Output
. . . # turn on stats unix socket stats socket /var/lib/haproxy/stats # utilize system-wide crypto-policies #ssl-default-bind-ciphers PROFILE=SYSTEM ssl-default-server-ciphers PROFILE=SYSTEM

Aggiungi ora una riga dopo la linea ssl-default-server-ciphers PROFILE=SYSTEM come segue:

ssl-dh-param-file /etc/haproxy/dhparams.pem

L’intera sezione dovrebbe assomigliare alla seguente, inclusa la nuova riga evidenziata ssl-dh-param-file che hai aggiunto:

/etc/haproxy/haproxy.cfg
. . . # turn on stats unix socket stats socket /var/lib/haproxy/stats # utilize system-wide crypto-policies #ssl-default-bind-ciphers PROFILE=SYSTEM ssl-default-server-ciphers PROFILE=SYSTEM ssl-dh-param-file /etc/haproxy/dhparams.pem

Quando hai finito di modificare il file, salvalo e chiudilo premendo ESC, digitando :wq e premendo ENTER.

Testa la configurazione utilizzando il comando haproxy -c per assicurarti di aver aggiunto l’impostazione corretta e che HAProxy possa accedere al file dhparams.pem personalizzato:

  1. sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Dovresti ricevere un output che indica che la configurazione è valida come segue:

Output
Configuration file is valid

Se la tua configurazione è valida, riavvia HAProxy in modo che utilizzi il nuovo file dei parametri Diffie-Hellman:

  1. sudo systemctl restart haproxy.service

Ora hai configurato HAProxy con un set di parametri Diffie-Hellman personalizzati a 2048 bit che tutti i frontend saranno in grado di utilizzare. Hai anche soppresso gli avvisi tune.ssl.default-dh-param.

Conclusione

In questo tutorial, hai imparato come risolvere un messaggio di avviso HAProxy Impostazione tune.ssl.default-dh-param su 1024 per impostazione predefinita. Hai esplorato quattro metodi diversi per esaminare la configurazione di HAProxy per trovare il messaggio. Inizialmente hai utilizzato systemctl e journalctl per esaminare lo stato del server HAProxy e cercare di trovare il messaggio nei log di systemd. Successivamente hai esaminato il file di configurazione di HAProxy utilizzando il controllo della configurazione integrato haproxy -c. Infine hai controllato le voci di log utilizzando il comando grep sul file di log di HAProxy.

Dopo aver confermato che il tuo server stava generando un messaggio di avviso Impostazione tune.ssl.default-dh-param su 1024 per impostazione predefinita, hai generato un file di parametri Diffie-Hellman personalizzato e configurato HAProxy per utilizzarlo impostando la direttiva di configurazione ssl-dh-param-file.

Ora che hai questa configurazione in atto, il tuo server HAProxy utilizzerà per impostazione predefinita i parametri Diffie-Hellman più sicuri, e il messaggio di avviso tune.ssl.default-dh-param non comparirà più nei tuoi log.

Source:
https://www.digitalocean.com/community/tutorials/haproxy-ssl-tls-warning-setting-tune-ssl-default-dh-param-to-1024-by-default