Я хочу отключить питание своего NAS и ESXI при сбое питания. Обе системы работают на ИБП Eaton. Я запускаю только системы Linux и поэтому не могу использовать Eaton Manager только для Windows.
Поскольку я использую Nagios для других задач, я хотел бы создать плагин, который с помощью ssh-public-key мог подключаться к вышеуказанному системы и выключите их.
Открытый ключ пользователя Nagios уже установлен на корневом пользователе ESXI (NAS появится позже). Когда я меняю пользователя на Nagios (на сервере Nagios) и вручную запускаю сценарий , он подключается к ESXI и (на данный момент) записывает «тестовый файл» в / tmp. Он работает .
Когда сценарий запускается самим Nagios, он не работает . Этот скрипт работает как обработчик:
define host {
name home-monitoring
use generic-host
check_period 24x7
check_interval 5
contact_groups admins
event_handler poweroff_host
register 0
}
cat /usr/lib64/nagios/plugins/poweroff_host.sh
#!/bin/bash
/usr/bin/ssh root@esxi -i /var/spool/nagios/.ssh/id_rsa "touch /tmp/testfile"
cat /etc/nagios/objects/commands.cfg
define command{
command_name poweroff_host
command_line sudo /usr/lib64/nagios/plugins/poweroff_host.sh
}
visudo
(at the bottom of the file)
nagios ALL = (root) NOPASSWD:/usr/lib64/nagios/plugins/poweroff_host.sh
Я также добавил пользователя nagios в группу wheel (с помощью usermod)
# grep wheel /etc/group
wheel:x:10:nagios
И, наконец, последние 4 дня я бился здесь головой и продолжаю получать ошибки в журнале. Последняя ошибка:
journalctl -xef
stderr line 01: /usr/lib64/nagios/plugins/poweroff_host.sh: line 2: /usr/bin/ssh: Permission denied
До visudo ошибка была no ssh in (/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin )
, по крайней мере, теперь мне удалось изменить тип ошибки.
Могу я получить помощь и исправить проблему?
ОБНОВЛЕНИЕ 1:
[root@nagios ~]# audit2allow -i /var/log/audit/audit.log
#============= nagios_t ==============
allow nagios_t ldconfig_exec_t:file { execute getattr };
allow nagios_t nagios_spool_t:dir create;
allow nagios_t pam_var_run_t:dir write;
allow nagios_t ssh_exec_t:file { execute getattr };
allow nagios_t tmpfs_t:dir write;
Перенесемся в semodule
команда, но stderr строка 01: /usr/lib64/nagios/plugins/poweroff_host.sh: строка 2: / usr / bin / ssh: Permission denied
все еще существует: /
Я попробую отключить Selinux вообще: /
Итак, проблема здесь в том, что SELinux не позволяет Nagios делать множество вещей, которые, по-видимому, вам действительно нужны (например, запуск ssh). Дистрибутив не может угадать все, что вам может понадобиться от Nagios, поэтому, хотя политика SELinux разрешает большинство вещей, связанных с мониторингом, она не разрешает эти вещи.
Вы можете временно обойти эту проблему, установив Nagios в разрешающий режим (вам не нужно устанавливать разрешающий режим для всего SELinux, вы можете сделать это для отдельных типов):
semanage permissive -a nagios_t
После этого журнал аудита со временем будет накапливать все AVC, необходимые для создания пользовательского модуля политики SELinux, если вы хотите, и после установки этого пользовательского модуля политики вы можете вернуть SELinux к принудительному применению для Nagios.
semanage permissive -d nagios_t
(Обратите внимание, что попытка создать настраиваемый модуль политики не работает, если только домен не является разрешительным, поскольку не все необходимые разрешения будут активированы и зарегистрированы в принудительном режиме.)