Ошибка разрешения, когда пользователь Nagios запускает сценарий bash, также с sudo

Я хочу отключить питание своего 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 вообще: /

1
задан 1 October 2020 в 20:52
1 ответ

Итак, проблема здесь в том, что SELinux не позволяет Nagios делать множество вещей, которые, по-видимому, вам действительно нужны (например, запуск ssh). Дистрибутив не может угадать все, что вам может понадобиться от Nagios, поэтому, хотя политика SELinux разрешает большинство вещей, связанных с мониторингом, она не разрешает эти вещи.

Вы можете временно обойти эту проблему, установив Nagios в разрешающий режим (вам не нужно устанавливать разрешающий режим для всего SELinux, вы можете сделать это для отдельных типов):

semanage permissive -a nagios_t

После этого журнал аудита со временем будет накапливать все AVC, необходимые для создания пользовательского модуля политики SELinux, если вы хотите, и после установки этого пользовательского модуля политики вы можете вернуть SELinux к принудительному применению для Nagios.

semanage permissive -d nagios_t

(Обратите внимание, что попытка создать настраиваемый модуль политики не работает, если только домен не является разрешительным, поскольку не все необходимые разрешения будут активированы и зарегистрированы в принудительном режиме.)

1
ответ дан 1 October 2020 в 17:58

Теги

Похожие вопросы