소개
이 튜토리얼에서는 이전 시리즈의 첫 부분에서 설명된 방법을 사용하여 HAProxy Setting tune.ssl.default-dh-param to 1024 by default
경고 메시지를 해결하고 수정하는 방법을 배우게 됩니다. 서버가 경고 메시지를 생성하는지 확인한 후 HAProxy의 ssl-dh-param-file
구성 옵션을 사용하여 사용자 정의 dhparams.pem
파일을 사용하도록 설정하여 이를 수정하는 방법을 배우게 됩니다.
HAProxy 서버가 SSL/TLS 인증서로 구성되어 있고 tune.ssl.default-dh-param
매개변수가 HAProxy의 haproxy.cfg
구성 파일에 설정되지 않은 경우 HAProxy Setting tune.ssl.default-dh-param to 1024 by default
경고 메시지를 만날 수 있습니다. 이 매개변수가 설정되지 않은 경우 TLS 핸드셰이크의 Diffie-Hellman 키 합의 부분에 대해 1024 비트의 값을 기본으로 사용하게 됩니다. 이는 보안상 취약하다고 간주됩니다.
당신의 HAProxy 서버는 이 경고를 알지 못하게 발생시킬 수 있습니다. SSL/TLS 인증서를 구성하고 HAProxy를 실행할 수 있지만, 서버는 배경에서 이 문제에 대해 경고할 수 있습니다. HAProxy 서버가 1024 비트 디피-헬만 매개 변수를 기본값으로 설정하는지 확실하지 않은 경우 SSL Labs Server Test와 같은 도구를 사용하여 확인할 수 있습니다. This server supports weak Diffie-Hellman (DH) key exchange parameters
라인이 있는 보고서를 받으면 HAProxy 서버가 영향을 받았음을 나타냅니다.
이미 HAProxy 서버가 tune.ssl.default-dh-param
설정에 대한 경고를 생성하는 것으로 판명되었고 문제 해결을 건너뛰고 싶다면, 이 튜토리얼의 끝에 있는 Resolving a Secure tune.ssl.default-dh-param
Warning 섹션에서 문제를 해결하는 방법을 설명합니다.
tune.ssl.default-dh-param
경고 확인하기 systemctl
사용하기
Common HAProxy Errors를 Troubleshoot하는 방법 시리즈의 처음에서 Setting tune.ssl.default-dh-param to 1024 by default
경고 메시지를 해결할 때의 문제 해결 단계를 따라 HAProxy의 상태를 systemctl
로 확인합니다.
systemctl status
의 출력에는 오류를 해결하는 데 필요한 모든 진단 정보가 포함될 수 있습니다. 그러나 경고를 해결하는 동안 haproxy
서비스의 현재 상태를 확인하여 실행 중이며 이를 의존하는 서비스가 계속 작동하는지 확인하는 것이 중요합니다.
이 systemctl
명령을 사용하여 HAProxy의 상태를 확인할 수 있습니다. 이 명령은 모든 리눅스 배포판에서 작동합니다:
-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.
이 출력에서 주목해야 할 두 가지 중요한 하이라이트된 섹션이 있습니다. 첫 번째는 active (running)
라인으로, 이는 HAProxy가 사용 가능하고 실행 중임을 나타냅니다. 서버에서 Active: failed
와 같은 라인이 표시되면 이전 시리즈의 HAProxy의 일반적인 오류 해결 방법 튜토리얼에서 설명한 방법을 사용하여 HAProxy를 문제 해결해야 합니다.
두 번째 강조된 줄은 systemd
저널에서 가져온 것으로 tune.ssl.default-dh-param
경고를 포함합니다. 이러한 줄들은 경고에 대한 모든 정보를 제공하며, 이 경고가 어떻게 트리거되는지, HAProxy가 취한 단계들, 그리고 이를 해결하는 방법에 대해 설명합니다.
만약 당신의 systemctl
출력에 tune.ssl.default-dh-param
경고를 포함한 줄이 있다면, 이 튜토리얼의 마지막 부분에 있는 tune.ssl.default-dh-param
경고 해결 섹션으로 건너뛰어 더 안전한 값으로 HAProxy를 구성하는 방법을 배우세요.
그렇지 않은 경우에는 systemctl
출력이 경고에 대한 구체적인 정보를 제공하지 않지만, 서버가 약한 Diffie-Hellman 매개변수를 사용하고 있다는 것을 알고 있다면, 이 튜토리얼의 다음 섹션에서 journalctl
로그를 사용하여 경고 메시지의 위치를 찾는 방법을 안내합니다.
journalctl
을 사용하여 tune.ssl.default-dh-param
경고 확인
만약 당신의 systemctl
출력에 tune.ssl.default-dh-param
경고가 포함되어 있지 않지만 서버가 영향을 받았다고 알고 있다면, journalctl
명령을 사용하여 HAProxy에 대한 systemd
로그를 검사해야 합니다.
임의의 리눅스 배포판에서 다음 명령을 실행하여 haproxy
서비스에 대한 systemd
저널 로그를 검사하십시오:
명령의 | 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.
이 출력에는 경고가 포함되어 있으므로 HAProxy를 더 안전한 값으로 구성하는 방법을 배우기 위해 튜토리얼 끝의 안전한 tune.ssl.default-dh-param
값을 설정 섹션으로 건너뛸 수 있습니다.
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
경고를 확인하려면 다음 명령을 실행하십시오. HAProxy 구성 파일이 강조된 /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
문자열과 일치하는 줄을 검색할 수 있습니다. 다음 명령을 실행하여 경고를 확인하십시오:
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
경고를 생성하는지 여부를 결정했으므로, 문제를 해결할 두 가지 방법을 설명하는 이 튜토리얼의 다음 단계로 진행할 수 있습니다.
tune.ssl.default-dh-param
경고 해결
HAProxy에서 tune.ssl.default-dh-param
경고를 해결하는 방법은 몇 가지 다양한 설정으로 가능합니다. 하나의 옵션은 /etc/haproxy/haproxy.cfg
에서 경고 메시지에 따라 명시적으로 tune.ssl.default-dh-param
값을 1024보다 큰 값으로 설정하는 것입니다. 그러나 HAProxy 문서는 해당 접근 방식이 더 안전하다고 하여 사용자 정의 Diffie-Hellman 매개변수를 지정하는 것을 권장하므로, 대신 해당 방법을 사용할 것입니다.
먼저 openssl
유틸리티를 사용하여 dhparams.pem
파일을 생성합니다. 파일이 생성되면 해당 파일을 전역 HAProxy 구성 섹션에 추가하여 모든 frontend
블록이 설정을 상속하도록합니다.
사용자 정의 DH 매개 변수를 생성하려면 다음을 실행하십시오:
다음과 같은 출력을 받게됩니다:
OutputGenerating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..............
명령이 완료되면 HAProxy가 사용자 정의 DH 매개 변수 파일을 사용하도록 구성하십시오. /etc/haproxy/haproxy.cfg
를 vi
또는 기본 편집기에서 엽니다.
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
파일에 액세스 할 수 있는지 확인하십시오:
다음과 같이 구성이 유효하다는 출력을 받아야합니다:
OutputConfiguration file is valid
당신의 설정이 유효하면 HAProxy를 재시작하여 새 Diffie-Hellman 매개 변수 파일을 사용하도록 설정하십시오:
이제 HAProxy를 2048 비트의 사용자 정의 Diffie-Hellman 매개 변수 집합으로 구성했습니다. 이를 사용할 수 있도록 모든 프론트엔드를 구성했습니다. 또한 tune.ssl.default-dh-param
경고를 억제했습니다.
결론
이 튜토리얼에서는 HAProxy의 Setting tune.ssl.default-dh-param to 1024 by default
경고 메시지를 문제 해결하는 방법을 배웠습니다. HAProxy의 구성을 조사하여 메시지를 찾는 네 가지 다른 방법을 탐구했습니다. 먼저 systemctl
및 journalctl
을 사용하여 HAProxy 서버의 상태를 검사하고 systemd
로그에서 메시지를 찾으려고했습니다. 그런 다음 내장된 haproxy -c
구성 확인을 사용하여 HAProxy 구성 파일을 검사했습니다. 마지막으로 grep
명령을 사용하여 HAProxy의 로그 파일에서 로그 항목을 확인했습니다.
서버가 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
경고 메시지는 더 이상 로그에 표시되지 않습니다.