3 身份验证

概述

Administration → Authentication(管理 → 身份验证) 验证中,可以指定对Zabbix的全局用户身份验证方法。可用的方法有内部,HTTP,LDAP和SAML身份验证。

请注意,可以在用户组级别上微调身份验证方法。

3 身份验证 - 图1

默认情况下,全局使用内部Zabbix身份验证。改变:

  • 到HTTP-导航到“ HTTP设置”标签并输入身份验证详细信息;

  • 到LDAP-选择LDAP作为默认身份验证,然后在LDAP设置标签中输入身份验证详细信息;

  • 到SAML-导航到“ SAML设置”标签,然后输入身份验证详细信息。

完成后,单击表单底部的“更新”。

HTTP认证

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

当心!在打开Web服务器身份验证之前,请确保已对其进行配置并正常工作。

3 身份验证 - 图2

配置参数:

参数描述说明
Enable HTTP authentication
(启用HTTP身份验证)
选中该复选框以启用HTTP身份验证。
Default login form
(默认登录表单)
指定是否将未经身份验证的用户定向到:
Zabbix login form-标准Zabbix登录页面。
HTTP login form-HTTP登录页面。
建议index_http.php仅对页面启用基于Web服务器的身份验证。如果将默认登录表单设置为“ HTTP登录页面”,并且Web服务器身份验证模块将在$_SERVER变量中设置有效的用户登录名,则该用户将自动登录。
支持$_SERVERPHP_AUTH_USERREMOTE_USERAUTH_USER
Case sensitive login
(区分大小写的登录)
取消选中该复选框可禁用用户名区分大小写的登录(默认情况下启用)。
例如,禁用区分大小写的登录并使用“ ADMIN”用户登录,即使Zabbix用户为“ Admin”。
请注意,如果区分大小写的登录禁用,则Zabbix数据库中存在多个具有相似别名(例如Admin,admin)的用户时,将拒绝登录。

如果进行Web服务器身份验证,则所有用户(即使前端访问权限设置为Internal)都将由Web服务器而不是Zabbix进行身份验证!

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

LDAP验证

外部LDAP身份验证可用于检查用户名和密码。请注意,用户也必须存在于Zabbix中,但是不会使用其Zabbix密码。

全局设置LDAP身份验证后,Zabbix仍可以对某些用户组进行身份验证。这些组必须将前端访问权限设置为“内部”。反之亦然,如果全局使用内部身份验证,则可以指定LDAP身份验证详细信息,并将其用于前端访问设置为LDAP的特定用户组。

Zabbix LDAP身份验证至少与Microsoft Active Directory和OpenLDAP一起使用。

3 身份验证 - 图3

配置参数:

参数描述说明
Enable LDAP authentication启动LDAP认证,选中复选框以启用LDAP身份验证。
LDAP hostLDAP服务器名称。例如:ldap:ldap.zabbix.com
对于安全的LDAP服务器,请使用ldaps协议。
ldaps:
ldap.zabbix.com
在OpenLDAP 2.xx和更高版本中,可以使用格式为ldap: hostname:port或ldaps: hostname:port的完整LDAP URI。
PortLDAP服务器的端口。默认值为389。
对于安全LDAP连接,端口号通常为636。
使用完整LDAP URI时不使用。
Base DN搜索帐户的基本路径:
ou =用户,ou =系统(对于OpenLDAP),
DC =公司,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)
匿名绑定也是支持的。
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前端)。
这样的方法提供了更高的安全性,并且在用户更改LDAP服务器中自己的密码时不需要更改“绑定”密码。
在上表中是ldap_search帐户名。

SAML身份验证

SAML 2.0身份验证可用于登录Zabbix。请注意,用户必须存在于Zabbix中,但是不会使用其Zabbix密码。如果身份验证成功,则Zabbix将匹配本地用户名(别名)与SAML返回的用户名属性。

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

设置身份提供者

为了使用Zabbix,需要以以下方式配置SAML身份提供程序(onelogin.comauth0.comokta.com等)

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

  • 单一登出网址应设置为<path_to_zabbix_ui>/index_sso.php?sls

<path_to_zabbix_ui> 示例:

  1. https://example.com/zabbix/ui, http://another.example.com/zabbix, http://<任意公网IP地址>/zabbix
设置ZABBIX

如果要在前端使用SAML身份验证,则需要安装php-openssl。

要使用SAML身份验证,应按以下方式配置Zabbix:

1.除非zabbix.conf.php中提供了自定义路径,否则私钥和证书应存储在ui/conf/certs/中。

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

  • ui/conf/certs/sp.key-SP 私钥文件

  • ui/conf/certs/sp.crt-SP 证书文件

  • ui/conf/certs/idp.crt-IDP 证书文件

2.所有最重要的设置都可以在Zabbix前端中进行配置。但是,可以在配置文件中指定其他设置。

3 身份验证 - 图4

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

参数描述说明
Enable SAML authentication选中复选框以启用SAML身份验证。
IDP entity IDSAML身份提供者的唯一标识符。
SSO service URL登录时,URL用户将被重定向到.
SLO Service URL注销时,URL用户将被重定向到。如果保留为空,将不使用SLO服务。
Username attribute登录到Zabbix时用作用户名的SAML属性。
支持的值列表由身份提供商确定。

示例:
Examples:
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 IDSAML服务提供者的唯一标识符。
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 requests(AuthN请求)
Logout requests(注销请求)
Logout responses(注销响应)
Encrypt标记复选框以选择应为其启用SAML加密的实体:
Assertions(断言)
Name ID(名称ID)
Case-sensitive login选中该复选框以启用区分大小写的登录名(默认情况下禁用)。
例如,禁用区分大小写的登录并使用“ ADMIN”用户登录,即使Zabbix用户为“ Admin”。
请注意,如果区分大小写的登录禁用,则Zabbix数据库中存在多个具有相似别名(例如Admin,admin)的用户时,将拒绝登录。
高级设置

可以在Zabbix前端配置文件(zabbix.conf.php)中配置其他SAML参数:

  • $ SSO [‘SP_KEY’] =’<SP私钥文件的路径>’;

  • $ SSO [‘SP_CERT’] =’<SP证书文件的路径>’;

  • $ SSO [‘IDP_CERT’] =’<IDP证书文件的路径>’;

  • $ SSO [‘SETTINGS’]

Zabbix使用OneLogin的SAML PHP工具包库(版本3.4.1)。$ SSO [‘SETTINGS’]部分的结构应类似于库使用的结构。有关配置选项的说明,请参见官方库文档

只能将以下选项设置为$ SSO [‘SETTINGS’]的一部分:

  • strict(严格的)

  • compress(压缩)

  • contactPerson(联系人)

  • organization(组织)

  • sp(仅此列表中指定的选项)

    • attributeConsumingService

    • x509certNew

  • idp(仅此列表中指定的选项)

  • singleLogoutService(仅一个选项)

  • responseUrl(响应Url)

  • certFingerprint(证书指纹)

  • certFingerprintAlgorithm(证书指纹算法)

  • x509certMulti

  • 安全性(仅此列表中指定的选项)

    • signMetadata(符号元数据)

    • wantNameId(想要的名称标识)

    • requestAuthnContext(请求认证上下文)

    • requestAuthnContextComparison(请求认证上下文比较)

    • wantXMLValidation(想要的XML验证)

    • RelaxDestinationValidation(目的验证)

    • destinationStrictlyMatches(严格匹配)

    • rejectUnsolicitedResponsesWithInResponseTo(拒绝未经请求的响应)

    • signatureAlgorithm(签名算法)

    • digestAlgorithm(摘要算法)

    • lowercaseUrlencoding

所有其他选项将从数据库中获取,并且不能被覆盖。在调试选项将被忽略。

配置示例:

  1. $SSO['SETTINGS'] = [
  2. 'security' => [
  3. 'signatureAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384'
  4. 'digestAlgorithm' => 'http://www.w3.org/2001/04/xmldsig-more#sha384',
  5. // ...
  6. ],
  7. // ...
  8. ];