1. Контроль доступа

Обзор

В этом разделе приведены рекомендации по настройке контроля доступа безопасным образом.

Принцип наименьших привилегий

Учётные записи пользователей всегда должны иметь как можно меньше привилегий. Это означает, что учётные записи пользователей веб-интерфейса Zabbix, пользователей баз данных или пользователей, от имени которых запускаются процессы сервера/прокси/агента Zabbix, должны иметь только те привилегии, которые необходимы для выполнения предназначенных функций.

Предоставление избыточных привилегий пользователю «zabbix» позволит ему получать доступ к файлам конфигурации и выполнять операции, которые могут поставить под угрозу безопасность инфраструктуры.

При настройке прав учётной записи пользователя следует учитывать типы пользователей веб-интерфейса Zabbix. Обратите внимание, что, хотя тип пользователя Администратор имеет меньше прав, чем тип пользователя Супер-администратор, он, тем не менее, может управлять конфигурацией и выполнять пользовательские скрипты.

Некоторая информация доступна даже непривилегированным пользователям. Например, хотя раздел ОповещенияСкрипты доступен только для пользователей с ролью Супер-администратор, скрипты также можно получить посредством Zabbix API. В этом случае ограничение прав доступа к скриптам и исключение конфиденциальной информации из скриптов (например, учётных данных) может помочь избежать раскрытия конфиденциальной информации, доступной в глобальных скриптах.

Безопасный пользователь для агента Zabbix

По умолчанию процессы сервера Zabbix, прокси и агента (или agent 2) используют одного пользователя zabbix. Чтобы предотвратить доступ агента Zabbix/agent 2 (запущенного на том же компьютере, что и сервер/прокси) к конфиденциальным данным в конфигурации сервера/прокси (например, учетным данным базы данных), агент следует запускать от имени другого пользователя:

Для агента Zabbix:

  1. Создайте безопасные группу и пользователя (например, zabbix-agent).
  2. Укажите этого пользователя в параметре User файла конфигурации агента.
  3. Перезапустите агент, чтобы понизить привилегии до нового пользователя.

Для Zabbix agent 2 конфигурацию необходимо применять на уровне службы, поскольку файл конфигурации agent 2 не поддерживает параметр User. Пример см. в ZBX-26442.

Отзыв доступа на запись к конфигурации SSL (Windows)

Если вы скомпилировали агент Zabbix в Windows, где OpenSSL находится в незащищённом каталоге (например, C:\zabbix, c:\openssl-64bit, C:\OpenSSL-Win64-111-static или C:\dev\openssl), обязательно отмените доступ на запись в этот каталог для пользователей, не являющихся администраторами. В противном случае агент будет загружать настройки SSL из пути, который могут изменить непривилегированные пользователи, что приведёт к потенциальной уязвимости безопасности.

Усиление безопасности компонентов Zabbix

Для усиления безопасности компонентов Zabbix некоторые функции можно отключить:

  • Выполнение глобальных скриптов на Zabbix сервере можно отключить, установив EnableGlobalScripts=0 в настройках сервера.
  • Выполнение глобальных скриптов на Zabbix прокси по умолчанию отключено (можно включить, установив EnableRemoteCommands=1 в настройках прокси).
  • Выполнение глобальных скриптов на агентах Zabbix agents по умолчанию отключено (можно включить, добавив параметр AllowKey=system.run[<command>,*] для каждой разрешённой команды в настройках агента).
  • HTTP-аутентификацию пользователей можно отключить, установив $ALLOW_HTTP_AUTH=false в файле конфигурации веб-интерфейса (zabbix.conf.php). Обратите внимание, что переустановка веб-интерфейса (запуск setup.php) удалит этот параметр.

Доступ к UNC-путям в Windows через Zabbix агент

В элементах данных вроде vfs.file.*, vfs.dir.*, modbus.get и perf_counter* Zabbix агенты в Windows используют UNC-пути (ресурсы SMB наподобие \\сервер\ресурс\файл.txt). В некоторых контекстах это может представлять угрозу безопасности.

Когда Windows запрашивает доступ к UNC-пути, выполняется попытка аутентификации на том сервере. Это означает, что вредоносный запрос к Zabbix агенту может раскрыть NTLM-хеш серверу отправителя запроса. Если необходимо, пользователи могут предотвратить это с помощью параметров конфигурации AllowKey и DenyKey.