fping от агента zabbix – доступ запрещен

Вопрос или проблема

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

Я пытаюсь провести простой пинг-тест с хоста (на котором работает zabbix agent) на внешний хост.

В моем файле zabbix_agentd.conf я настроил UserParameter следующим образом:

UserParameter=vpnPing[*],fping $1 |grep -c alive

Мои права на fping следующие:

# ls -l /sbin/fping
-rwsr-sr-x. 1 root zabbix 52904 Aug 5 2019 /sbin/fping

Если я запускаю тест zabbix_agentd, я получаю (маскированный IP в целях примера):

# zabbix_agentd -t vpnPing[123.456.78.901]
vpnPing[123.456.78.901] [t|1]

Похоже, это работает.

Когда я перехожу в интерфейс zabbix и смотрю последние данные, я вижу:

2020-06-04 17:55:30 sh: /usr/sbin/fping: Permission denied
0

Интересно, что внизу 0. Я также видел, что иногда это 1. Это звучит так, будто что-то работает, но я не понимаю, почему я получаю отказ в разрешении.

Также, когда я смотрю в журнал аудита, я вижу:

type=AVC msg=audit(1591330891.927:15933): avc:  denied  { execute } for  pid=52320 comm="sh" name="fping" dev="nvme0n1p2" ino=8410299 scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:object_r:ping_exec_t:s0 tclass=file permissive=0
type=SYSCALL msg=audit(1591330891.927:15933): arch=c000003e syscall=21 success=no exit=-13 a0=5601874ee450 a1=1 a2=7ffe62a48db0 a3=0 items=0 ppid=52319 pid=52320 auid=4294967295 uid=990 gid=988 euid=990 suid=990 fsuid=990 egid=988 sgid=988 fsgid=988 tty=(none) ses=4294967295 comm="sh" exe="/usr/bin/bash" subj=system_u:system_r:zabbix_agent_t:s0 key=(null)ARCH=x86_64 SYSCALL=access AUID="unset" UID="zabbix" GID="zabbix" EUID="zabbix" SUID="zabbix" FSUID="zabbix" EGID="zabbix" SGID="zabbix" FSGID="zabbix"
type=PROCTITLE msg=audit(1591330891.927:15933): proctitle=7368002D63006670696E67203136372E3134342E38392E323238207C67726570202D6320616C697665

Я работаю на RHEL 8.2.

# zabbix_agentd -V
zabbix_agentd (daemon) (Zabbix) 4.4.9
$ zabbix_server -V
zabbix_server (Zabbix) 4.4.9
# fping -v
fping: Version 3.16

У меня в Zabbix настроен элемент как Тип: Zabbix agent

Если я попробую:

zabbix_get -s [my_zabbix_server_ip] -k vpnPing[123.456.78.901]

это завершается тайм-аутом (не уверен, почему, так как я могу пинговать его нормально): zabbix_get [30549]: Тайм-аут при выполнении операции

Но не уверен, что последняя часть с zabbix_get имеет отношение, потому что проверки, похоже, возвращаются на сервер zabbix, но он просто говорит отказ в разрешении.

Я уже некоторое время мучаюсь с этим и надеюсь, что кто-то сможет мне помочь?

Как указано в комментариях, ваша проблема, скорее всего, связана с SElinux на RHEL8.

Мое решение заключалось в том, чтобы обойти SElinux с помощью sudo следующим образом:

$ grep ^zabbix /etc/sudoers

zabbix  ALL=NOPASSWD:/usr/sbin/hddtemp, /usr/sbin/smartctl, /usr/bin/fping

и вызывать fping с sudo перед командой. То же самое касается smartctl и hddtemp.

Ответ или решение

Решение проблемы с правами доступа fping в Zabbix Agent на RHEL 8

При работе с Zabbix и его агентом на RHEL 8, многие пользователи могут столкнуться с проблемой "Permission denied" при попытке выполнить ping с использованием утилиты fping. Эта проблема чаще всего возникает из-за ограничений, связанных с системой контроля доступа SELinux. В данной статье мы подробно рассмотрим эту проблему и предложим решения.

Описание проблемы

Ваша конфигурация Zabbix Agent содержит следующий параметр:

UserParameter=vpnPing[*],fping $1 |grep -c alive

При выполнении теста через команду:

zabbix_agentd -t vpnPing[123.456.78.901]

Вы получаете корректный ответ, однако при проверке в интерфейсе Zabbix появляется ошибка:

2020-06-04 17:55:30 sh: /usr/sbin/fping: Permission denied

Это может быть связано с тем, что fping не имеет соответствующих разрешений для выполнения в контексте пользователя zabbix, который используется Zabbix Agent.

Анализ журналов аудита

Согласно данным из журнала аудита:

type=AVC msg=audit(...): avc:  denied  { execute } for ...

Можно сделать вывод о том, что SELinux запрещает выполнение fping из контекста zabbix_agent_t. Это стандартное поведение SELinux, нацеленное на обеспечение безопасности системы.

Решения проблемы

  1. Использование sudo:
    Один из самых простых способов обойти эту проблему – использовать sudo для вызова fping. Для этого вам нужно добавить соответствующую строку в файл /etc/sudoers:

    zabbix ALL=NOPASSWD:/usr/sbin/fping

    После этого вы можете обновить ваш UserParameter следующим образом:

    UserParameter=vpnPing[*],sudo /sbin/fping $1 | grep -c alive
  2. Изменение контекста SELinux:
    Если вы хотите, чтобы fping работал без использования sudo, можно изменить контекст безопасности в SELinux, позволяющий zabbix выполнять fping. Для этого выполните следующие команды:

    chcon -t bin_t /sbin/fping

    Таким образом, вы установите правильный тип контекста для устройства fping, что позволит пользователю zabbix его использовать.

  3. Перевод SELinux в режим Permissive:
    Если предыдущие решения не помогли, вы можете временно перевести SELinux в менее строгий режим:

    setenforce 0

    Однако это менее безопасный вариант и не рекомендуется в долгосрочной перспективе. Убедитесь, что вы вернете его в режим Enforcing после тестирования:

    setenforce 1

Заключение

Проблема с ошибкой "Permission denied" при выполнении команд fping в Zabbix Agent на RHEL 8, скорее всего, связана с настройками SELinux. Используя указанные методы, вы сможете решить данную проблему и обеспечить корректное выполнение ping-тестов через Zabbix. Применение sudo часто является самой простой и безопасной практикой для обхода ограничений SELinux, но также важно оценивать влияние на безопасность при внесении изменений в систему.

Если проблема сохраняется, обязательно проверьте логи и диагностику SELinux для дальнейшего анализа.

Оцените материал
Добавить комментарий

Капча загружается...