Назад | Перейти на главную страницу

Nagios - не удалось завершить подтверждение SSL

Я пытаюсь настроить команду Nagios для проверки состояния физической памяти на удаленном хосте Windows с помощью плагина NRPE. Я использую Nagios v3.0.6 на Ubuntu Server v14.10 и последнюю стабильную версию NSClient ++ 0.4.3. Вот фрагменты из файлов конфигурации:

define command {
          command_name check_ph_mem
          command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -p 5666 -c CheckMEM -a MaxWarn=$ARG1$% MaxCrit=$ARG2$% ShowAl$
}

и

define service{
        host_name               remote-win-host
        service_description     Check Memory NRPE
        check_command           check_ph_mem
        use                     generic-service
}

Nagios не смог получить информацию из этой команды, потому что когда я выполняю

/usr/lib/nagios/plugins/check_nrpe -H  192.168.1.150

он возвращает следующую ошибку:

CHECK_NRPE: Error - Could not complete SSL handshake.

Я пробовал переконфигурировать часть C:\Program Files\NSClient++\nsclient.ini следующим образом:

[/settings/NRPE/server]

allow arguments = true

allowed hosts = 192.168.1.15

port = 5666 

но он возвращает ту же ошибку. Я уже прочитал десятки похожих тем и пробовал разные советы, но у меня все еще та же проблема.

Ты хоть представляешь, как это исправить?

Если вы используете NSCP-0.4.3.x (а не NSCP-0.4.2.x) на своем хосте Windows, то проверка подлинности на основе сертификатов стала методом проверки подлинности по умолчанию. Вот почему ваш чек не работает. Чтобы обойти проблему, вам необходимо добавить в конфигурацию следующее:

[/settings/NRPE/server]
insecure = true  

После этого вам необходимо перезапустить службу NSClient ++. Больше информации можно найти вот (6.1 Что такое небезопасный режим)

В моем случае мне пришлось добавить:

; ALLOW INSECURE CHIPHERS and ENCRYPTION - Only enable this if you are using legacy check_nrpe client.

следующие две строки:

insecure = true

allow arguments = true

и изменить под:

; VERIFY MODE - Comma separated list of verification flags to set on the SSL socket

из

verify mode = peer-cert

к

verify mode = none

Отредактируйте файл nsclient.ini и установите параметр, как показано ниже, он работает для меня:

[/settings/NRPE/server]
allow arguments = 1
allow nasty_meta chars = 1
allowed hosts = 10.10.83.94,127.0.0.1
port = 5666
use SSL = 1   
ssl options = no-sslv2,no-sslv3  
verify mode = none
insecure = true

Используя NSClient ++ 0.5.2.39 и check_nrpe 3.2.1, вот что у меня сработало:

  1. Сгенерируйте ключ DH на машине Linux (это занимает много времени)

    openssl dhparam -C 2048 2> /dev/null|sed -n '/BEGIN/,/END/p'
    
  2. Вставьте свой ключ DH во вновь созданный файл C:\Program Files\NSClient++\security\nrpe_dh_2048.pem

  3. редактировать C:\Program Files\NSClient++\nsclient.ini:

    [/settings/NRPE/server]
    dh = ${certificate-path}/nrpe_dh_2048.pem
    
  4. Перезапустите службу NSClient ++: net stop nscp && net start nscp

Это основано на замечательной статье http://hodza.net/2019/09/21/failed-to-establish-secure-connection-sslv3-alert-handshake-failure-1040/