nagios
업그레이드 후 갑자기 오류가 발생한 클라이언트가 있습니다 . 다시 설치 nagios-plugin
하고 nrpe
프록시를 다시 설치했지만 오류를 해결할 수 없습니다. 이 버전 nrpe
은 xinetd
.
# /usr/local/nagios/libexec/check_nrpe -H localhost
CHECK_NRPE: Error - Could not complete SSL handshake.
# netstat -plan | grep :5666
tcp 0 0 :::5666 :::* LISTEN 20265/xinetd
Nagios-server-IP 10.10.3.30
# cat /etc/xinetd.d/nrpe | grep -i only_from
only_from = 127.0.0.1 10.10.3.30
# cat /etc/xinetd.d/nrpe
# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 10.10.3.30
}
클라이언트에서 서버로 텔넷할 수 없습니다.
# telnet 10.10.3.30 5666
Trying 10.10.3.30...
Connected to 10.10.3.30.
Escape character is '^]'.
Connection closed by foreign host.
답변1
NRPE는 몇 년 동안 업데이트되지 않았습니다(2013 년 9 월), 이것이 서버 측에서 수행되는 작업입니다.
SSL_library_init();
SSLeay_add_ssl_algorithms();
meth=SSLv23_server_method();
...
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3);
...
SL_CTX_set_cipher_list(ctx,"ADH");
dh=get_dh512();
및 클라이언트( check_nrpe
Nagios 서버)
SSL_library_init();
SSLeay_add_ssl_algorithms();
meth=SSLv23_client_method();
...
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3);
...
SSL_CTX_set_cipher_list(ctx,"ADH");
이러한 SSLv23_xxx
기능은 한때 SSLv2 또는 SSLv3.x 시스템에 연결하는 가장 호환 가능한 방법이었습니다. 위의 두 가지 모두더 이상 사용되지 않음. 코드는 프로토콜 버전 2.0 및 3.0을 비활성화하지만(TLS만 남겨두고) 클라이언트 연결은 SSLv2 ClientHello로 시작됩니다.
1024보다 작은 DH 소수는이제 안전하지 않은 것으로 간주됨(일부 OpenSSL 버전에서는 768일 수 있지만) 이는 OpenSSL 클라이언트(check_nrpe)에 연결할 수 없는 경우 짧은 DH 키를 거부하는 이유를 설명합니다. (ADH는 인증서가 필요하지 않으므로 "익명"이므로 신뢰할 수 없는 네트워크에서는 좋은 계획이 아니지만 이러한 목적으로는 허용됩니다.)
새 시스템에 연결하는 데 두 번째 문제가 있을 수도 있습니다. 클라이언트(NSCA 서버)가 최신 OpenSSL을 사용하도록 업데이트되었고 최근 SSLv2도 업데이트되었기 때문일 수 있습니다.기본적으로 비활성화됨, 일부 배포판에서는 수년 동안 이 작업을 수행해 왔습니다. 대부분의 경우 프로토콜/암호 모음에는 여전히 중복이 있어야 하지만 SSLv2가 비활성화된 TLS 서버(이 경우 nrpe 데몬)는 SSLv2를 거부할 수 있습니다.안녕하세요 고객님클라이언트가 핸드셰이크에서 SSLv3 이상을 표시하는 경우에도 핸드셰이크 패킷(기술 세부정보:https://security.stackexchange.com/questions/59367/what-exactly-determines-what-version-of-ssl-tls-is-used-when-accessing-a-site)
이 문제를 해결하려면 최신 시스템에서 OpenSSL을 다운그레이드하거나 이러한 (합리적인!) 예방 조치 없이 병렬 이전 버전의 OpenSSL을 설치해야 할 수도 있습니다. 둘 다 좋은 선택은 아닌 것 같은데...
직접 지었다 면 nrpe
,~해야 한다충분합니다.get_dh512()
통화를 다음으로 바꿔야 합니다.get_dh1024()
그리고새로운 정적 1024비트 키로 다시 컴파일하십시오. configure
(라인 6748)에서 하드코딩된 512를 수정하여 이를 수행하고 다시 실행하거나 다음을 사용하십시오.
opensl dhparam -C 1024 | awk '/^-----/{exit} {print}' > include/dh.h
그런 다음 make
다시 빌드하십시오. 또한 SSLv2 "호환" ClientHello를 시도하지 않고 Nagios 서버에서 다시 컴파일하지 않도록 호출을 대체할 수도 있습니다 SSLv23_client_method()
. 다른 클라이언트와의 연결이 끊어질 위험이 있으므로 서버를 "업그레이드"하기 위한 두 번째 바이너리가 필요할 수 있으며 이를 템플릿에서 사용할 수 있습니다 ( 그러나 나는 이것이 일어나서는 안 된다고 생각합니다).TLSv1_client_method()
check_nrpe
check_nrpe_new
command
check_command
(최후의 수단으로 좋지 않은 작업을 수행 socat
하거나 stunnel
불일치를 보상할 수 있는 방법은 다음과 같습니다.https://security.stackexchange.com/a/108850/18555.)
보다 정확한 답변을 얻으려면 OpenSSL 버전( openssl version -a
또는 관련 패키지 관리자 출력)과 배포판이 필요합니다.