3. Аутентификация

Обзор

В разделе Администрирование → Аутентификация можно задать глобальный метод аутентификации в Zabbix и требования к паролю. Доступны следующие методы аутентификации: внутренний, HTTP, LDAP и SAML.

Аутентификация по умолчанию

По умолчанию Zabbix использует внутреннюю аутентификацию Zabbix для всех пользователей. Можно изменить метод по умолчанию на LDAP для всей системы или включить аутентификацию LDAP только для конкретных групп пользователей.

Чтобы установить LDAP в качестве метода аутентификации по умолчанию для всех пользователей, перейдите к вкладке LDAP и настройте параметры аутентификации, затем вернитесь на вкладку Аутентификация и установите переключатель Аутентификация по умолчанию в положение LDAP.

Обратите внимание, что метод аутентификации можно точно настроить на уровне групп пользователей. Даже если глобально настроена аутентификация LDAP, некоторые группы пользователей по-прежнему могут проходить аутентификацию средствами Zabbix. У этих групп доступ к веб-интерфейсу должен быть выставлен как Внутренний. И наоборот, если глобально используется внутренняя аутентификация, подробности аутентификации LDAP можно указать и использовать для конкретных групп пользователей, чей доступ к веб-интерфейсу настроен как LDAP. Если пользователь входит хотя бы в одну группу пользователей с аутентификацией LDAP, то этот пользователь не сможет использовать метод внутренней аутентификации.

Методы аутентификации HTTP и SAML 2.0 могут использоваться в дополнение к методам аутентификации по умолчанию.

Внутренняя аутентификация

Вкладка Аутентификация позволяет определить настраиваемые требования к сложности пароля для внутренних пользователей Zabbix.

Можно настроить следующие параметры политики паролей:

Параметр Описание
Минимальная длина пароля
(Minimum password length)
По умолчанию минимальная длина пароля установлена на 8. Поддерживаемый диапазон: 1-70. Обратите внимание, что пароли длиннее 72 символов будут усечены.
Пароль должен содержать
(Password must contain)
Отметьте один или несколько флажков, чтобы требовать использования в пароле указанных символов:
- прописная и строчная латинская буква
- цифра
- специальный символ

Наведите указатель мыши на вопросительный знак, чтобы увидеть подсказку со списком символов для каждого варианта.
Избегать легко угадываемых паролей
(Avoid easy-to-guess passwords)
Если отмечено, пароль будет проверяться на соответствие следующим требованиям:
- не должен содержать имя, фамилию или имя пользователя
- не должен быть одним из общеупотребительных или контекстно-зависимых паролей.

Список общеупотребительных и контекстно-зависимых паролей генерируется автоматически из списка NCSC «100 000 популярных паролей», списка SecList «1 миллион популярных паролей» и списка контекстно-зависимых паролей Zabbix. Внутренним пользователям не будет разрешено устанавливать пароли, включённые в этот список, поскольку такие пароли считаются слабыми из-за их частого использования.

Изменения в требованиях к сложности пароля не повлияют на существующие пароли пользователей, но если существующий пользователь решит изменить пароль, то новый пароль должен соответствовать текущим требованиям. Подсказка со списком требований будет отображаться рядом с полем Пароль в профиле пользователя и в диалоге настройки пользователя, доступном из меню Администрирование→Пользователи.

Аутентификация HTTP

Для проверки имён пользователей и паролей можно использовать аутентификацию на основе HTTP или веб-сервера (например: базовая аутентификация, NTLM/Kerberos). Обратите внимание, что пользователь также должен существовать в Zabbix; однако, его пароль Zabbix не будет использоваться.

Будьте осторожны! Перед переключением на аутентификацию веб-сервера убедитесь, что она настроена и работает правильно.

Параметры конфигурации:

Параметр Описание
Активация HTTP аутентификации
(Enable HTTP authentication)
Отметьте флажок, чтобы включить аутентификацию HTTP. При наведении указателя мыши на появится подсказка с предупреждением, что в случае аутентификации веб-сервера все пользователи (даже с доступом к веб-интерфейсу, установленному в LDAP/внутренний) будут аутентифицироваться веб-сервером, а не сервером Zabbix.
Диалог входа в систему по умолчанию
(Default login form)
Укажите, следует ли направлять неаутентифицированных пользователей на:
Диалог входа в систему Zabbix — стандартную страницу входа Zabbix.
HTTP диалог входа в систему — страницу входа HTTP.
Рекомендуется включать аутентификацию на основе веб-сервера только для страницы index_http.php. Если для Диалога входа в систему по умолчанию установлено значение «HTTP диалог входа в систему», пользователь будет входить в систему автоматически, если модуль аутентификации веб-сервера установит действительный логин пользователя в переменной $_SERVER.
Поддерживаемые ключи $_SERVER: PHP_AUTH_USER, REMOTE_USER, AUTH_USER.
Удаление имени домена
(Remove domain name)
Список доменных имен через запятую, которые следует удалить из имени пользователя.
Например: comp,any - если имя пользователя «Admin@any» или «comp\Admin», пользователь войдет в систему как «Admin»; если имя пользователя «notacompany\Admin», вход будет запрещён.
Регистрозависимый вход
(Case sensitive login)
Снимите флажок, чтобы отключить вход с учётом регистра (включённый по умолчанию) для имен пользователей.
Скажем, отключите вход с учётом регистра и войдите в систему, например, пользователем «ADMIN», даже если пользователем Zabbix является «Admin».
Обратите внимание, что при отключённом входе с учетом регистра вход будет запрещён, если в базе данных Zabbix существует несколько пользователей с похожими именами пользователей (например, Admin и admin).

Для внутренних пользователей, которые не могут войти в систему с использованием учётных данных HTTP (с установленным по умолчанию диалогом входа HTTP), что приводит к ошибке 401, вы можете добавить строку «ErrorDocument 401 /index.php?form=default» к основным директивам аутентификации, что перенаправит на обычный диалог входа в Zabbix.

Аутентификация LDAP

Внешнюю аутентификацию LDAP можно использовать для проверки имён пользователей и паролей. Обратите внимание, что пользователь также должен существовать в Zabbix, однако его пароль Zabbix не будет использоваться.

Аутентификация Zabbix LDAP работает как минимум с Microsoft Active Directory и OpenLDAP.

Параметры конфигурации:

Параметр Описание
Активация LDAP аутентификации
(Enable LDAP authentication)
Поставьте флажок, чтобы включить аутентификацию LDAP.
Хост LDAP
(LDAP host)
Имя сервера LDAP. Например: ldap://ldap.zabbix.com
Для защищённого сервера LDAP используйте протокол ldaps.
ldaps://ldap.zabbix.com
Для OpenLDAP 2.x.x и более поздних версий можно использовать полный URI LDAP в форме ldap://имяхоста:порт или ldaps://имяхоста:порт.
Порт
(Port)
Порт сервера LDAP. По умолчанию — 389.
Для безопасного подключения LDAP номер порта обычно равен 636.
Не используется при использовании полных URI LDAP.
База для поиска (Base DN) Базовый путь для поиска учётных записей:
ou=Users,ou=system (для OpenLDAP),
DC=company,DC=com (для Microsoft Active Directory)
Атрибут поиска
(Search attribute)
Атрибут учётной записи LDAP, используемый для поиска:
uid (для OpenLDAP),
sAMAccountName (для Microsoft Active Directory)
Имя для подключения (Bind DN) Учётная запись LDAP для подключения и поиска на сервере LDAP, примеры:
uid=ldap_search,ou=system (для OpenLDAP),
CN=ldap_search,OU=user_group ,DC=company,DC=com (для Microsoft Active Directory)
Анонимное подключение также поддерживается. Обратите внимание, что анонимное подключение потенциально открывает доступ к конфигурации домена неавторизованным пользователям (информация о пользователях, компьютерах, серверах, группах, службах и т. д.). Из соображений безопасности отключите анонимные подключения на хостах LDAP и используйте вместо этого аутентифицированный доступ.
Регистрозависимый вход
(Case-sensitive login)
Снимите флажок, чтобы отключить вход с учётом регистра (включённый по умолчанию) для имён пользователей.
Скажем, отключите вход с учётом регистра и войдите в систему, например, пользователем «ADMIN», даже если пользователем Zabbix является «Admin».
Обратите внимание, что при отключённом входе с учетом регистра вход будет запрещён, если в базе данных Zabbix существует несколько пользователей с похожими именами пользователей (например, Admin и admin).
Пароль подключения (Bind password) Пароль LDAP учётной записи для подключения и поиска на сервере LDAP.
Тест аутентификации
(Test authentication)
Заголовок секции для тестирования
Вход в систему
(Login)
Имя тестового пользователя (который в данный момент зарегистрирован в веб-интерфейсе Zabbix). Это имя пользователя должно существовать на сервере LDAP.
Zabbix не будет активировать аутентификацию LDAP, если он не сможет аутентифицировать тестового пользователя.
Пароль пользователя
(User password)
Пароль LDAP тестового пользователя.

В случае проблем с сертификатами, чтобы обеспечить работу безопасного соединения LDAP (ldaps), вам может потребоваться добавить строку TLS_REQCERT allow в файл конфигурации /etc/openldap/ldap.conf. Это может снизить безопасность подключения к каталогу LDAP.

Рекомендуется создать отдельную учётную запись LDAP (Bind DN) для выполнения подключения и поиска на сервере LDAP с минимальными привилегиями в LDAP вместо использования учётных записей реальных пользователей (которые подключаются к веб-интерфейсу Zabbix).
Такой подход обеспечивает большую безопасность и не требует изменения Пароля подключения (Bind password), когда пользователь меняет свой пароль на сервере LDAP.
В таблице выше эта учётная запись имеет имя ldap_search.

Аутентификация SAML

Для входа в Zabbix можно использовать аутентификацию SAML 2.0. Обратите внимание, что пользователь должен существовать в Zabbix, однако его пароль Zabbix не будет использоваться. Если аутентификация прошла успешно, Zabbix сопоставит локальное имя пользователя с атрибутом имени пользователя, возвращаемым SAML.

Если аутентификация SAML включена, пользователи смогут выбирать между входом в систему локально или через систему единого входа SAML.

Настройка поставщика идентификационных данных

Для работы с Zabbix, поставщика идентификационных данных SAML (onelogin.com, auth0.com, okta.com и т.д.) необходимо настроить следующим образом:

  • Утверждение Потребителя URL (Assertion Consumer URL) должно быть установлено в <путь_к_веб-интерфейсу_zabbix>/index_sso.php?acs
  • Единый URL-адрес выхода (Single Logout URL) должен быть установлен в <путь_к_веб-интерфейсу_zabbix>/index_sso.php?sls

Примеры <пути_к_веб-интерфейсу_zabbix>: %% https://example.com/zabbix/ui, http://another.example.com/zabbix, http://<любой_общедоступный_ip_адрес>/zabbix %%

Настройка Zabbix

Если вы хотите использовать аутентификацию SAML в веб-интерфейсе, то необходимо установить php-openssl.

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

1. Закрытый ключ (private key) и сертификат должны храниться в ui/conf/certs/, если только пользовательские пути не указаны в файле zabbix.conf.php.

По умолчанию, Zabbix будет искать в следующих местах:

  • ui/conf/certs/sp.key — файл закрытого ключа SP
  • ui/conf/certs/sp.crt — файл сертификата SP
  • ui/conf/certs/idp.crt — файл сертификата IDP

2. Все наиболее важные настройки могут быть сделаны через веб-интерфейс Zabbix. Однако, в конфигурационном файле можно указать дополнительные настройки.

Параметры конфигурации, доступные в веб-интерфейсе Zabbix:

Параметр Описание
Включить SAML аутентификацию
(Enable SAML authentication)
Отметьте флажок, чтобы включить аутентификацию SAML.
IDP entity ID Уникальный идентификатор поставщика идентификационных данных SAML.
URL единого входа
(SSO service URL)
URL, на который будут перенаправлены пользователи при входе в систему.
URL единого выхода
(SLO Service URL)
URL, на который будут перенаправлены пользователи при выходе из системы. Если это поле оставить пустым, служба SLO использоваться не будет.
Атрибут имени пользователя
(Username attribute)
Атрибут SAML, используемый в качестве имени пользователяпри входе в Zabbix.
Список поддерживаемых значений определяется поставщиком идентификационных данных.

Примеры:
uid
userprincipalname
samaccountname
username
userusername
urn:oid:0.9.2342.19200300.100.1.1
urn:oid:1.3.6.1.4.1.5923.1.1.1.13
urn:oid:0.9.2342.19200300.100.1.44
ID объекта SP
(SP entity ID)
Уникальный идентификатор поставщика услуг SAML.
Формат ID объекта SP
(SP name ID format)
Определяет, какой формат идентификатора имени следует использовать.

Примеры:
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos
urn:oasis:names:tc:SAML:2.0:nameid-format:entity
Войти
(Sign)
Отметьте флажками объекты, для которых должна быть включена подпись SAML:
Сообщения (Messages)
Декларации (Assertions)
Запросы AuthN (AuthN requests)
Запросы на выход из системы (Logout requests)
Ответы на выход из системы (Logout responses)
Шифрование
(Encrypt)
Отметьте флажками объекты, для которых должно быть включено шифрование SAML:
Декларации (Assertions)
ID имени (Name ID)
Регистрозависимый вход
(Case-sensitive login)
Отметьте флажок, чтобы включить вход с учётом регистра (отключённый по умолчанию) для имён пользователей.
Скажем, отключите вход с учетом регистра и войдите, например, под пользователем «ADMIN», даже если пользователем Zabbix является «Admin».
Обратите внимание, что при отключённом входе с учётом регистра вход в систему будет запрещён, если в базе данных Zabbix существует несколько пользователей с похожими именами пользователей (например, Admin и admin).
Расширенные настройки

Дополнительные параметры SAML можно настроить в файле конфигурации веб-интерфейса Zabbix (zabbix.conf.php):

  • $SSO['SP_KEY'] = '<путь к файлу закрытого ключа SP>';
  • $SSO['SP_CERT'] = '<путь к файлу сертификата SP>';
  • $SSO['IDP_CERT'] = '<путь к файлу сертификата IDP>';
  • $SSO['SETTINGS']

Zabbix использует библиотеку OneLogin's SAML PHP Toolkit (версии 3.4.1). Структура секции $SSO['SETTINGS'] должна быть аналогична структуре, используемой этой библиотекой. Для описания параметров конфигурации, смотрите официальную документацию [en] библиотеки.

В рамках $SSO['SETTINGS'] можно задать только следующие параметры:

  • strict
  • baseurl
  • compress
  • contactPerson
  • organization
  • sp (только опции, указанные в этом списке)
    • attributeConsumingService
    • x509certNew
  • idp (только опции, указанные в этом списке)
    • singleLogoutService (только одна опция)
      • responseUrl
    • certFingerprint
    • certFingerprintAlgorithm
    • x509certMulti
  • security (только опции, указанные в этом списке)
    • signMetadata
    • wantNameId
    • requestedAuthnContext
    • requestedAuthnContextComparison
    • wantXMLValidation
    • relaxDestinationValidation
    • destinationStrictlyMatches
    • rejectUnsolicitedResponsesWithInResponseTo
    • signatureAlgorithm
    • digestAlgorithm
    • lowercaseUrlencoding

Все остальные параметры будут взяты из базы данных и не могут быть переопределены. Опция debug будет игнорироваться.

Кроме того, если пользовательский интерфейс Zabbix находится за прокси-сервером или балансировщиком нагрузки, можно использовать пользовательскую опцию use_proxy_headers:

  • false (по умолчанию) - игнорировать эту опцию;
  • true - для построения базового URL использовать HTTP-заголовки X-Forwarded-*.

Если вы используете балансировщик нагрузки для подключения к экземпляру Zabbix, где балансировщик нагрузки использует TLS/SSL, а Zabbix — нет, вы должны указать параметры «baseurl», «strict» и «use_proxy_headers» следующим образом:

$SSO['SETTINGS']=['strict' => false, 'baseurl' => "https://zabbix.example.com/zabbix/", 'use_proxy_headers' => true]

Пример конфигурации:

$SSO['SETTINGS'] = [
           'security' => [
               'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
               'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
               // ...
           ],
           // ...
       ];