Я пытаюсь настроить команду 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, вот что у меня сработало:
Сгенерируйте ключ DH на машине Linux (это занимает много времени)
openssl dhparam -C 2048 2> /dev/null|sed -n '/BEGIN/,/END/p'
Вставьте свой ключ DH во вновь созданный файл C:\Program Files\NSClient++\security\nrpe_dh_2048.pem
редактировать C:\Program Files\NSClient++\nsclient.ini
:
[/settings/NRPE/server]
dh = ${certificate-path}/nrpe_dh_2048.pem
Перезапустите службу NSClient ++: net stop nscp && net start nscp
Это основано на замечательной статье http://hodza.net/2019/09/21/failed-to-establish-secure-connection-sslv3-alert-handshake-failure-1040/