O NRPE não foi atualizado em alguns anos ( setembro de 2013 ), isso é o que faz no lado do servidor
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();
e o cliente ( check_nrpe
no servidor 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");
As funções SSLv23_xxx
costumavam ser a maneira mais compatível para se conectar a qualquer sistema SSLv2 ou SSLv3.x. Ambos os itens acima são reprovados . Enquanto o código desativa as versões de protocolo 2.0 e 3.0 (deixando apenas TLS), a conexão do cliente será iniciada com um SSLv2 ClientHello.
DH primos menores que 1024 são agora considerados inseguros (embora possa ser 768 em algumas versões do OpenSSL). Isso explica porque você não pode se conectar a si mesmo, o cliente OpenSSL (check_nrpe) irá rejeitar uma chave DH curta. (ADH é usado desde que não precisa de um certificado e é, portanto, "anônimo", não um bom plano em uma rede não confiável, mas aceitável para este fim.)
Suspeito que você também esteja enfrentando um segundo problema ao se conectar ao novo sistema. O que provavelmente aconteceu é que o cliente (servidor NSCA) atualizou para usar um OpenSSL recente, o SSLv2 foi recentemente desativado por padrão , embora algumas distribuições o façam há anos. Na maioria dos casos, ainda deve haver uma sobreposição no protocolo / ciphersuite, mas é possível e comum para o servidor TLS (daemon nrpe, neste caso) com SSLv2 desabilitado rejeitar um pacote de handshake SSLv2 ClientHello , mesmo que o client indica SSLv3 ou superior no handshake (detalhes técnicos aqui: usado quando acessando um site"> )
Para corrigir isso, pode ser necessário fazer o downgrade do OpenSSL no sistema atualizado ou instalar uma versão OpenSSL antiga paralela que não tenha essas precauções (sensatas!). Nem soa como boas opções ...
Se você criou nrpe
, deve ser suficiente , será necessário substituir a chamada por get_dh512()
por get_dh1024()
e recompile-o com uma nova chave estática de 1024 bits - para isso, você precisará criar uma nova codificação de 1024 bits, modificando a codificação embutida 512 em configure
(linha 6748) e reexecutando-a, ou usando
opensl dhparam -C 1024 | awk '/^-----/{exit} {print}' > include/dh.h
e, em seguida, make
para reconstruir.
Provavelmente, você também precisará substituir a chamada para SSLv23_client_method()
with TLSv1_client_method()
para que um Clienthello SSLv2 "compatível" não seja tentado e recompile check_nrpe
no servidor Nagios. Como você corre o risco de quebrar a conectividade com outros clientes, talvez precise de um segundo check_nrpe_new
para servidores "atualizados" e usar isso em command
/ check_command
de seus modelos (não acho que isso deva acontecer embora).
(Como último recurso, você pode fazer algo imprevisível com socat
ou stunnel
para colmatar qualquer incompatibilidade, aqui está uma maneira de fazer isso: link .)
Uma resposta mais precisa exigirá a versão do OpenSSL ( openssl version -a
ou a saída do gerenciador de pacotes relevante) e suas versões de distribuição.