HAproxy SSL / TLS警告:tune.ssl.default-dh-paramをデフォルトで1024に設定
序章
このチュートリアルでは、このシリーズの冒頭にある一般的なHAProxyエラーのトラブルシューティング方法チュートリアルで説明されている方法を使用して、HAProxySetting tune.ssl.default-dh-param to 1024 by default
警告メッセージのトラブルシューティングと修正方法を学習します。 サーバーが警告メッセージを生成していることを確認したら、カスタムdhparams.pem
ファイルを使用するようにHAProxyのssl-dh-param-file
構成オプションを設定して警告メッセージを修正する方法を学習します。
HAProxyサーバーがSSL/TLS証明書で構成されていて、tune.ssl.default-dh-param
パラメーターがHAProxyのhaproxy.cfg
構成ファイルに設定されていない場合、HAProxySetting tune.ssl.default-dh-param to 1024 by default
警告メッセージが表示されることがあります。 パラメータが設定されていない場合、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
警告セクションの解決方法について説明します。問題を修正します。
systemctl
を使用したtune.ssl.default-dh-param
警告の確認
このシリーズの冒頭にある一般的なHAProxyエラーのトラブルシューティング方法チュートリアルのトラブルシューティング手順に従って、Setting tune.ssl.default-dh-param to 1024 by default
警告メッセージのトラブルシューティングを行う最初の手順は、systemctl
。
systemctl status
からの出力には、エラーを解決するために必要なすべての診断情報が含まれている場合があります。 ただし、haproxy
サービスの現在のステータスを調べて、サービスが実行されていること、および警告を解決している間、サービスに依存するすべてのサービスが引き続き機能できることを確認することが重要です。
このsystemctl
コマンドを使用して、LinuxディストリビューションでのHAProxyのステータスを調べます。
- sudo systemctl status haproxy.service -l --no-pager
-l
フラグは、systemctl
が長い行を楕円(…
)に置き換えるのではなく、行の内容全体を出力することを保証します。 --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つの重要な強調表示されたセクションがあります。 1つ目は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-paramWarningセクションの解決にスキップしてください。より安全な値でHAProxyを設定する方法を学びます。
それ以外の場合、systemctl
出力で警告に関する特定の情報が得られないが、サーバーが弱いDiffie-Hellmanパラメーターを使用していることがわかっている場合は、このチュートリアルの次のセクションでjournalctl
の使用方法を説明します。警告メッセージを見つけるためにログに記録します。
journalctl
を使用したtune.ssl.default-dh-param
警告の確認
systemctl
出力にtune.ssl.default-dh-param
警告が含まれていないが、サーバーが影響を受けていることがわかっている場合は、journalctl
コマンドを使用してsystemd
を調べる必要があります。 HAProxyのログ。
Linuxディストリビューションで次のコマンドを実行して、systemd
ジャーナルのログでhaproxy
サービスを調べます。
- sudo journalctl -u haproxy.service -l --no-pager | grep tune.ssl.default-dh-param
コマンドの| grep tune.ssl.default-dh-param
部分は、パイプ(|
)を使用して、journalctl
からの出力をgrep
コマンドに入力として送信します。 パイプを使用すると、ジャーナルの一致する行のみが画面に表示されます。
ジャーナルにtune.ssl.default-dh-param
警告が含まれている場合、次のような出力が表示されます。
OutputOct 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
コマンドを実行しても出力が表示されない場合は、次のセクションで、HAProxyの組み込み構成チェックツールを使用してtune.ssl.default-dh-param
警告をチェックする方法を示します。
haproxy -c
またはログファイルを使用したtune.ssl.default-dh-param
警告の確認
HAProxyには、構成ファイルを調べて検証できるコマンドが含まれています。 このコマンドを使用すると、HAProxyを再起動したり、サービスのダウンタイムを発生させたりすることなく、構文エラーや無効な設定を確認できます。 さらに、HAProxyサーバーが出力をファイルまたはシステムログに記録するように構成されている場合は、ログファイルを調べてtune.ssl.default-dh-param
警告を確認できます。
HAProxy自体を使用してtune.ssl.default-dh-param
警告を確認するには、任意のLinuxディストリビューションで次のコマンドを実行します。 HAProxy構成ファイルが強調表示された/etc/haproxy/haproxy.cfg
パスとは異なる場所にある場合は、ファイルへの正しいパスに置き換えてください。
- 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のログを使用して警告メッセージを確認するには、grep
コマンドを使用してtune.ssl.default-dh-param
文字列に一致する行を検索できます。 次のコマンドを実行して、警告を確認します。
- sudo grep tune.ssl.default-dh-param /var/log/haproxy.log
別のログの場所でHAproxyを設定した場合は、強調表示された/var/log/haproxy.log
ファイルの代わりにパスを使用してください。
サーバーが警告を生成している場合は、次のような出力が表示されます。
OutputOct 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
警告の解決
いくつかの異なる設定を使用して、HAProxyでtune.ssl.default-dh-param
警告を解決できます。 1つのオプションは、警告メッセージに従って、tune.ssl.default-dh-param
の値を/etc/haproxy/haproxy.cfg
で明示的に1024より大きい値に設定することです。 ただし、 HAProxyドキュメントでは、カスタムのDiffie-Hellmanパラメーターを指定することを推奨しています。これは、そのアプローチの方が安全であるため、代わりにその方法を使用するためです。
まず、openssl
ユーティリティを使用してdhparams.pem
ファイルを生成します。 ファイルが作成されたら、それをグローバルHAProxy構成セクションに追加して、frontend
ブロックが設定を継承するようにします。
カスタムDHパラメーターを生成するには、以下を実行します。
- sudo openssl dhparam -out /etc/haproxy/dhparams.pem 2048
次のような出力が表示されます。
OutputGenerating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..............
コマンドが完了したら、カスタムDHパラメータファイルを使用するようにHAProxyを設定します。 vi
またはお好みのエディターで/etc/haproxy/haproxy.cfg
を開きます。
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
ファイルにアクセスできることを確認します。
- sudo haproxy -c -f /etc/haproxy/haproxy.cfg
次のように、構成が有効であることを示す出力を受け取るはずです。
OutputConfiguration file is valid
構成が有効な場合は、HAProxyを再起動して、新しいDiffie-Hellmanパラメーターファイルを使用します。
- sudo systemctl restart haproxy.service
これで、すべてのフロントエンドが使用できるカスタムDiffie-Hellmanパラメーターの2048ビットセットを使用してHAProxyを構成しました。 tune.ssl.default-dh-param
の警告も抑制しました。
結論
このチュートリアルでは、HAProxySetting tune.ssl.default-dh-param to 1024 by default
警告メッセージのトラブルシューティング方法を学習しました。 メッセージを見つけるためにHAProxyの構成を調べるために、4つの異なる方法を検討しました。 まず、systemctl
とjournalctl
を使用してHAProxyサーバーのステータスを調べ、systemd
ログでメッセージを見つけようとしました。 次に、組み込みのhaproxy -c
構成チェックを使用してHAProxy構成ファイルを調べました。 最後に、HAProxyのログファイルでgrep
コマンドを使用してログエントリを確認しました。
サーバーがSetting tune.ssl.default-dh-param to 1024 by default
警告メッセージを生成していることを確認した後、カスタムDiffie-Hellmanパラメーターファイルを生成し、ssl-dh-param-file
構成ディレクティブを設定してそれを使用するようにHAProxyを構成しました。
この構成が整ったので、HAProxyサーバーはデフォルトでより安全なDiffie-Hellmanパラメーターを使用し、tune.ssl.default-dh-param
警告メッセージはログに記録されなくなります。