3 认证

概述

管理 → 认证 部分允许指定Zabbix的全局用户认证方法及内部密码要求。可用的认证方式包括内部认证、HTTP认证、LDAP认证和SAML认证。

默认认证

默认情况下,Zabbix对所有用户使用内部Zabbix认证。可以将默认方法更改为全系统范围的LDAP认证,或仅为特定用户组启用LDAP认证。

要将LDAP设置为所有用户的默认认证方法,请导航至LDAP选项卡并配置认证参数,然后返回Authentication选项卡并将Default authentication选择器切换为LDAP。

请注意,认证方法可以在user group级别进行微调。即使全局设置了LDAP认证,某些用户组仍可通过Zabbix进行认证。这些用户组的配置必须设置为Internal。反之,如果全局使用内部认证,可以为配置设置为LDAP的特定用户组指定并使用LDAP认证详细信息。如果用户被包含在至少一个使用LDAP认证的用户组中,则该用户将无法使用内部认证方法。

除默认认证方法外,还可使用HTTPSAML 2.0认证方法。

内部认证

认证选项卡允许为Zabbix内部用户定义自定义密码复杂度要求

可配置以下密码策略选项:

参数 描述
Minimum password length 默认最小密码长度为8. 支持范围:1-70. 注意超过72个字符的密码将被截断.
Password must contain 勾选一个或多个复选框以要求密码中包含指定字符类型:
- 大写和小写拉丁字母
- 数字
- 特殊字符

将鼠标悬停在问号上可查看每个选项对应的字符列表提示.
Avoid easy-to-guess passwords 若勾选,密码将检查是否符合以下要求:
- 不得包含用户姓名或用户名
- 不得是常见或上下文相关密码

常见及上下文相关密码列表自动生成自NCSC "Top 100k密码"清单、SecLists "Top 1M密码"清单以及Zabbix上下文相关密码清单. 系统将禁止内部用户设置该列表中的密码,因这些密码由于普遍使用而被视为弱密码.

密码复杂度要求的变更不会影响现有用户密码,但当现有用户选择修改密码时,新密码必须符合当前要求. 在user profile及通过管理→用户菜单访问的user configuration form中,密码字段旁将显示包含要求列表的提示信息.

HTTP 认证

基于HTTP或Web服务器的认证(例如:Basic) 身份验证(NTLM/Kerberos)可用于检查用户名和 密码。请注意,用户也必须存在于Zabbix中,然而其 Zabbix密码将不会被使用。

注意!确保Web服务器 在切换之前,认证已配置并正常工作 开启。

配置参数:

参数 描述
Enable HTTP authentication 勾选此复选框以启用HTTP认证。将鼠标悬停在上会显示提示框,警告在启用Web服务器认证的情况下,所有用户(即使配置设置为LDAP/内部)都将由Web服务器而非Zabbix进行认证。
Default login form 指定是否将未认证用户重定向至:
Zabbix login 表单 - 标准Zabbix login页面.
HTTP login 表单 - HTTP login页面.
建议仅对index_http.php页面启用基于Web服务器的认证. 若默认login表单设置为'HTTP login页面',当Web服务器认证模块在$_SERVER变量中设置了有效的用户login时,用户将自动登录.
支持的$_SERVER键值为PHP_AUTH_USER, REMOTE_USER, AUTH_USER.
Remove domain name 应从用户名中移除的域名列表(以逗号分隔)。
例如 comp,any - 若用户名为'Admin@any'或'comp\Admin',用户将以'管理员'身份登录;若用户名为'notacompany\Admin',则login将被拒绝。
Case sensitive login 取消勾选该复选框以禁用用户名的大小写敏感login(默认启用)。
禁用大小写敏感login后,例如即使用户名为"Admin"或"ADMIN",仍可以"admin"身份登录。
请注意,如果禁用大小写敏感login且存在多个相似用户名(如Admin和admin),这些用户的login将始终被拒绝并显示错误信息:"认证失败:提供的凭据不唯一。"

对于无法使用HTTP登录的内部用户 凭据(默认设置为HTTP login表单)导致401 错误,您可能需要添加一个ErrorDocument 401 /index.php?form=default 行到基本认证指令,这将重定向到 常规Zabbix login表单。

LDAP 认证

外部LDAP认证可用于验证用户名和 密码。请注意,用户也必须在Zabbix中存在,然而其 Zabbix密码将不会被使用。

Zabbix LDAP认证至少可与Microsoft Active Directory协同工作 目录与OpenLDAP

配置参数:

参数 描述
Enable LDAP authentication 勾选复选框以启用LDAP认证。
LDAP host LDAP服务器名称。例如: ldap://ldap.zabbix.com
对于安全LDAP服务器请使用ldaps协议。
ldaps://ldap.zabbix.com
对于OpenLDAP 2.x.x及更高版本,可以使用完整形式的LDAP URI,如ldap://hostname:port或ldaps://hostname:port。
Port LDAP服务器端口。默认为389。
安全LDAP连接通常使用636端口。
使用完整LDAP URI时不适用。
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服务器的账户,示例:
uid=ldap_search,ou=system(适用于OpenLDAP)
CN=ldap_search,OU=user_group,DC=company,DC=com(适用于Microsoft Active Directory)
同时支持匿名绑定。需注意匿名绑定可能向未授权用户暴露域配置信息(包括用户、计算机、服务器、组、服务等相关信息)。出于安全考虑,应在LDAP 主机 上禁用匿名绑定,改用认证访问方式。
Case sensitive login 取消勾选该复选框以禁用用户名的大小写敏感login(默认启用)。
禁用大小写敏感login后,例如即使用户名为"Admin"或"ADMIN",仍可以"admin"身份登录。
请注意,如果禁用大小写敏感login且存在多个相似用户名(如Admin和admin),这些用户的login将始终被拒绝并显示错误信息:"认证失败:提供的凭据不唯一。"
Bind password 用于绑定及在LDAP服务器上执行搜索的账户密码。
Test authentication 测试部分的标题
Login 测试用户的名称(当前已登录Zabbix前端)。该用户名必须存在于LDAP服务器中。
如果无法验证测试用户身份,Zabbix将不会激活LDAP认证。
User password 测试用户的LDAP密码。

如果遇到证书问题,为了使 安全LDAP连接(ldaps)工作可能需要添加一个 TLS_REQCERT allow 行添加到 /etc/openldap/ldap.conf 配置文件 file. 这可能会降低连接到LDAP的安全性 目录

建议create一个单独的LDAP账户 (绑定DN)用于通过LDAP服务器执行绑定和搜索操作 在LDAP中使用最小权限而非真实用户账户(已使用 用于登录Zabbix前端). 这种方法提供了更高的安全性且无需进行更改 当用户在LDAP中更改自己的密码时的绑定密码 服务器。 在上表中是ldap_search账户名称。

SAML 认证

SAML 2.0认证可用于登录Zabbix。需要注意的是,用户必须在Zabbix中存在,但其Zabbix密码不会被使用。如果认证成功,Zabbix会将本地用户名与SAML返回的用户名属性进行匹配。

如果启用了SAML认证,用户将能够在本地登录或通过SAML单点登录之间进行选择。

设置身份提供程序

为了与Zabbix配合使用,需要按照以下方式配置SAML身份提供商 (onelogin.com, auth0.com, okta.com等):

  • 断言消费者URL应设置为 <path_to_zabbix_ui>/index_sso.php?acs

  • 单点登出URL应设置为

    <path_to_zabbix_ui>/index_sso.php?sls

<path_to_zabbix_ui>/index_sso.php?sls

<path_to_zabbix_ui>示例: <https://example.com/zabbix/ui>, <http://another.example.com/zabbix>, <http://><any\_public\_ip\_address>/zabbix

设置Zabbix

需要安装php-openssl 在前端使用SAML认证

要使用SAML认证,需按以下方式配置Zabbix 方式

1. 私钥和证书应存储在 ui/conf/certs/, 除非提供了自定义路径 高级设置.

默认情况下,Zabbix将在以下位置查找:

  • ui/conf/certs/sp.key - SP私钥 file
  • ui/conf/certs/sp.crt - SP证书 file
  • ui/conf/certs/idp.crt - IDP证书 file

2. 所有最重要的设置都可以在Zabbix中进行配置 前端。然而,可以在其中指定额外的设置 configuration file.

Zabbix前端中可用的配置参数:

参数 描述
Enable SAML authentication 勾选复选框以启用SAML认证.
IDP entity ID SAML身份提供者的唯一标识符。
SSO service URL 用户登录时将被重定向到的URL。
SLO Service URL 用户登出时将被重定向的URL。若留空则不使用SLO服务。
Username attribute 登录Zabbix时用作用户名的SAML属性.
支持的值列表由身份提供商确定.

示例:
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
SP entity ID SAML服务提供商的唯一标识符。
SP name ID format 请求响应中使用特定的名称ID格式.

示例:
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified
urn:oasis:names:tc:SAML:2.0:nameid-format:transient
Sign 勾选复选框以选择需要启用SAML签名的实体:
消息
断言
认证请求
注销请求
注销响应
Encrypt 勾选复选框以选择需要启用SAML加密的实体:
断言
名称ID
Case sensitive login 取消勾选该复选框以禁用用户名的大小写敏感login(默认启用)。
禁用大小写敏感login后,例如即使用户在Zabbix中注册为"Admin"或"ADMIN",仍可使用"admin"登录。
请注意,若禁用大小写敏感login且存在多个相似用户名(如Admin和admin),这些用户的login将始终被拒绝,并显示错误信息:"认证失败:提供的凭据不唯一。"
高级设置

额外的SAML参数可在Zabbix前端配置文件file(zabbix.conf.php)中配置:

  • $SSO['SP_KEY'] = '<SP私钥路径 file>';
  • $SSO['SP_CERT'] = '<SP证书路径 file>';
  • $SSO['IDP_CERT'] = '<IDP证书路径 file>';
  • $SSO['SETTINGS']

Zabbix使用OneLogin's SAML PHP Toolkit库 (version 3.4.1)。$SSO['SETTINGS']部分的结构应与该库使用的结构相似。有关配置选项的描述,请参阅官方库 documentation

仅以下选项可作为$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 UI位于proxy或负载均衡器之后,可使用自定义的use_proxy_headers选项:

  • false (默认) - 忽略该选项;
  • true - 使用X-Forwarded-* HTTP头构建基础URL。

如果使用负载均衡器连接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',
               // ...
           ],
           // ...
       ];
使用Kerberos/ADFS的前端配置

Zabbix前端配置文件file (zabbix.conf.php)可用于配置基于Kerberos认证和ADFS的SSO:

$SSO['SETTINGS'] = [
           'security' => [
               'requestedAuthnContext' => [
                   'urn:oasis:names:tc:SAML:2.0:ac:classes:Kerberos',
               ],
               'requestedAuthnContextComparison' => 'exact'
           ]
       ]; 

在此情况下,SAML配置中的SP name ID字段应设置为:

urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified