序章

このチュートリアルでは、HAProxyのトラブルシューティングと修正の方法を学習します Setting tune.ssl.default-dh-param to 1024 by default このシリーズの冒頭にある一般的なHAProxyエラーのトラブルシューティング方法チュートリアルで説明されている方法を使用した警告メッセージ。 サーバーが警告メッセージを生成していることを確認したら、HAProxyを設定して警告メッセージを修正する方法を学びます。 ssl-dh-param-file カスタムを使用するための構成オプション dhparams.pem ファイル。

HAProxyに遭遇する可能性があります Setting tune.ssl.default-dh-param to 1024 by default HAProxyサーバーがSSL/TLS証明書で構成されている場合の警告メッセージ tune.ssl.default-dh-param パラメータがHAProxyに設定されていません haproxy.cfg 構成ファイル。 パラメータが設定されていない場合、HAProxyはTLSハンドシェイクのDiffie-Hellman鍵合意部分に対してデフォルトで1024ビットの値になります。これは安全ではないと見なされます

HAProxyサーバーは、知らないうちにこの警告をトリガーする場合があります。 SSL / TLS証明書を構成すると、HAProxyが実行されますが、サーバーがバックグラウンドで問題について警告している場合があります。 HAProxyサーバーがデフォルトで1024ビットのDiffie-Hellmanパラメーターに設定されているかどうかわからない場合は、 SSL Labs ServerTestなどのツールを使用して確認できます。 行のあるレポートを受け取った場合 This server supports weak Diffie-Hellman (DH) key exchange parameters、その後、HAProxyサーバーが影響を受けます。

HAProxyサーバーが警告を生成していることをすでに確認している場合 tune.ssl.default-dh-param 設定していて、トラブルシューティングをスキップしたい場合は、 Secure tune.ssl.default-dh-param このチュートリアルの最後にある警告セクションでは、問題を修正する方法について説明しています。

をチェックしています tune.ssl.default-dh-param を使用した警告 systemctl

このシリーズの冒頭にある一般的なHAProxyエラーのトラブルシューティング方法チュートリアルのトラブルシューティング手順に従って、トラブルシューティングを行う際の最初の手順 Setting tune.ssl.default-dh-param to 1024 by default 警告メッセージは、HAProxyのステータスを次のように確認することです。 systemctl.

からの出力 systemctl status エラーを解決するために必要なすべての診断情報が含まれている場合があります。 ただし、現在の状況を調べることが重要です。 haproxy サービスが実行されていること、および警告を解決している間、サービスに依存するすべてのサービスが引き続き機能できることを確認するためのサービス。

これを使って systemctl LinuxディストリビューションでHAProxyのステータスを調べるコマンド:

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

The -l フラグは systemctl 楕円で置き換えるのではなく、行の内容全体を出力します()長い行の場合。 The --no-pager フラグは、次のようなツールを呼び出さずにログ全体を画面に出力します less 一度に表示されるのはコンテンツの画面のみです。

トラブルシューティングしているので Setting tune.ssl.default-dh-param to 1024 by default 警告メッセージが表示されたら、次のような出力が表示されます。

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.

この出力で注意すべき2つの重要な強調表示されたセクションがあります。 最初は active (running) 行。これは、HAProxyが使用可能で実行中であることを示します。 サーバーに次のような行が表示されている場合 Active: failed次に、このシリーズの冒頭にある一般的なHAProxyエラーのトラブルシューティング方法チュートリアルで説明されている方法を使用してHAProxyのトラブルシューティングを行う必要があります。

強調表示された行の2番目のセットは systemd ジャーナルと含む tune.ssl.default-dh-param 警告。 これらの行は、警告、警告がトリガーされる方法、HAProxyによって実行される手順、および警告を解決する方法に関するすべての情報を提供します。

もしあなたの systemctl 出力には、 tune.ssl.default-dh-param 警告してから、このチュートリアルの最後にある tune.ssl.default-dh-param警告セクションにスキップして、より安全な値でHAProxyを設定する方法を学習してください。

そうでなければあなたの systemctl 出力は警告に関する特定の情報を提供しませんが、サーバーが弱いDiffie-Hellmanパラメーターを使用していることはわかっています。このチュートリアルの次のセクションでは、 journalctl 警告メッセージを見つけるためにログを記録します。

をチェックしています tune.ssl.default-dh-param を使用した警告 journalctl

もしあなたの systemctl 出力には含まれていません tune.ssl.default-dh-param 警告ですが、サーバーが影響を受けていることがわかっている場合は、 journalctl 調べるコマンド systemd HAProxyのログ。

Linuxディストリビューションで次のコマンドを実行して、 systemd ジャーナルのログ haproxy サービス:

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

The | grep tune.ssl.default-dh-param コマンドの一部はパイプを使用します(|)からの出力を送信します journalctlgrep 入力としてのコマンド。 パイプを使用すると、ジャーナルの一致する行のみが画面に表示されます。

ジャーナルに tune.ssl.default-dh-param 警告すると、次のような出力が表示されます。

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.

この出力には警告が含まれているため、このチュートリアルの最後にある Secure tune.ssl.default-dh-param Value セクションにスキップして、より安全な値でHAProxyを構成する方法を学ぶことができます。

実行後に出力が表示されない場合 journaltcl コマンド、次のセクションでは、 tune.ssl.default-dh-param HAProxyの組み込み構成チェックツールを使用した警告。

をチェックしています tune.ssl.default-dh-param を使用した警告 haproxy -c またはログファイル

HAProxyには、構成ファイルを調べて検証できるコマンドが含まれています。 このコマンドを使用すると、HAProxyを再起動したり、サービスのダウンタイムを発生させたりすることなく、構文エラーや無効な設定を確認できます。 さらに、HAProxyサーバーが出力をファイルまたはシステムログに記録するように構成されている場合は、ログファイルを調べて tune.ssl.default-dh-param 警告。

を確認するには tune.ssl.default-dh-param HAProxy自体を使用して警告する場合は、Linuxディストリビューションで次のコマンドを実行してください。 HAProxy構成ファイルが強調表示されている場所とは異なる場所にある場合 /etc/haproxy/haproxy.cfg パス、ファイルへの正しいパスに置き換えてください:

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

サーバーがSSL/TLSで構成されていて、 tune.ssl.default-dh-param を設定すると、次のような警告出力が表示されます。

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

強調表示された行には、 tune.ssl.default-dh-param 警告。

HAProxyのログを使用して警告メッセージを確認するには、 tune.ssl.default-dh-param を使用した文字列 grep 指図。 次のコマンドを実行して、警告を確認します。

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

別のログの場所でHAproxyを設定した場合は、強調表示された場所の代わりにパスを使用してください。 /var/log/haproxy.log ファイル。

サーバーが警告を生成している場合は、次のような出力が表示されます。

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.

:ログファイルに警告メッセージが含まれていない可能性がありますが、 haproxy -c コマンドは引き続き警告を生成します。 この場合、ログファイルがローテーションされるのに十分な時間HAproxyサービスが実行されている可能性が高いため、警告は含まれていません。

を使用してメッセージを確認する haproxy -c メソッドは、サーバーが影響を受けているかどうかを判断するための最も信頼できる方法であるため、欠落しているログファイルエントリを安全に無視できます。

これで、サーバーが生成しているかどうかを判断できました。 tune.ssl.default-dh-param 警告、このチュートリアルの次のステップに進むことができます。このステップでは、問題を解決するために使用できる2つの方法について説明しています。

を解決する tune.ssl.default-dh-param 警告

あなたは解決することができます tune.ssl.default-dh-param いくつかの異なる設定でのHAProxyでの警告。 1つのオプションは、 tune.ssl.default-dh-param 明示的に1024より大きい値に /etc/haproxy/haproxy.cfg 警告メッセージごと。 ただし、 HAProxyドキュメントでは、カスタムのDiffie-Hellmanパラメーターを指定することを推奨しています。これは、そのアプローチの方が安全であるため、代わりにその方法を使用するためです。

まず、を生成します dhparams.pem を使用してファイル openssl 効用。 ファイルが作成されたら、それをグローバルHAProxy構成セクションに追加して、 frontend ブロックは設定を継承します。

カスタムDHパラメーターを生成するには、以下を実行します。

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

次のような出力が表示されます。

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

コマンドが完了したら、カスタムDHパラメータファイルを使用するようにHAProxyを設定します。 開ける /etc/haproxy/haproxy.cfgvi またはお好みのエディター。

sudo vi /etc/haproxy/haproxy.cfg

次のようなファイル内のセクションを見つけます。

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

次に、の後に行を追加します ssl-default-server-ciphers PROFILE=SYSTEM このような行:

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

セクション全体は、新しく強調表示されたものを含めて、次のようになります。 ssl-dh-param-file 追加した行:

/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

ファイルの編集が完了したら、を押して保存して閉じます ESC、入力 :wq、を押します ENTER.

を使用して構成をテストします haproxy -c 正しい設定を追加し、HAProxyがカスタムにアクセスできることを確認するコマンド dhparams.pem ファイル:

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

次のように、構成が有効であることを示す出力を受け取るはずです。

Output
Configuration file is valid

構成が有効な場合は、HAProxyを再起動して、新しいDiffie-Hellmanパラメーターファイルを使用します。

  1. sudo systemctl restart haproxy.service

これで、すべてのフロントエンドが使用できるカスタムDiffie-Hellmanパラメーターの2048ビットセットを使用してHAProxyを構成しました。 あなたはまた抑制しました tune.ssl.default-dh-param 警告。

結論

このチュートリアルでは、HAProxyのトラブルシューティング方法を学びました Setting tune.ssl.default-dh-param to 1024 by default 警告メッセージ。 メッセージを見つけるためにHAProxyの構成を調べるために、4つの異なる方法を検討しました。 最初に使用した systemctljournalctl HAProxyサーバーのステータスを調べて、 systemd ログ。 次に、組み込みのHAProxy構成ファイルを使用して調べました。 haproxy -c 構成チェック。 最後に、を使用してログエントリを確認しました grep HAProxyのログファイルに対するコマンド。

サーバーが生成していることを確認した後 Setting tune.ssl.default-dh-param to 1024 by default 警告メッセージ、カスタムDiffie-Hellmanパラメータファイルを生成し、それを使用するようにHAProxyを設定して ssl-dh-param-file 構成ディレクティブ。

その構成が整ったので、HAProxyサーバーはデフォルトでより安全なDiffie-Hellmanパラメーターを使用します。 tune.ssl.default-dh-param 警告メッセージはログに記録されなくなります。