Nagios SSL 핸드셰이크

Nagios SSL 핸드셰이크

nagios업그레이드 후 갑자기 오류가 발생한 클라이언트가 있습니다 . 다시 설치 nagios-plugin하고 nrpe프록시를 다시 설치했지만 오류를 해결할 수 없습니다. 이 버전 nrpexinetd.

# /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_nrpeNagios 서버)

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_nrpecheck_nrpe_newcommandcheck_command

(최후의 수단으로 좋지 않은 작업을 수행 socat하거나 stunnel불일치를 보상할 수 있는 방법은 다음과 같습니다.https://security.stackexchange.com/a/108850/18555.)

보다 정확한 답변을 얻으려면 OpenSSL 버전( openssl version -a또는 관련 패키지 관리자 출력)과 배포판이 필요합니다.

관련 정보