3 认证
概述
Administration → Authentication 部分允许指定Zabbix 的全局用户认证方法和内部密码要求。 可用internal、HTTP、LDAP 和 SAML方式进行验证。
默认身份验证
默认情况下,Zabbix 对所有用户使用内部 Zabbix 身份验证。可以将默认方法更改为 LDAP 系统范围或仅对特定用户组启用 LDAP 身份验证。
要将 LDAP 设置为所有用户的默认身份验证方法,请导航至LDAP 选项卡并配置身份验证参数,然后返回Authentication 选项卡并将 Default authentication 选择器切换到LDAP
请注意,身份验证方法可以在 用户组 级别。即使LDAP认证全局设置,部分用户组仍然可以 由 Zabbix 认证。这些组必须有 前端访问 设置到内部。反之亦然,如果全局使用内部身份验证,可以为特定用户指定和使用 LDAP 身份验证详细信息 前端访问 是设置为 LDAP。如果一个用户包含在至少一个用户组中LDAP 认证,此用户将无法使用内部身份验证方法。
HTTP 和 SAML 2.0除了默认的身份验证方法之外,还可以使用身份验证方法身份验证方法。
内部认证
Authentication 选项卡允许定义自定义密码复杂性 内部 Zabbix 用户的要求。
可以配置以下密码策略选项:
参数 | 说明 |
---|---|
最小密码长度 | 默认情况下,最小密码长度设置为 8。支持范围:1-70。请注意,超过 72 个字符的密码将被截断。 |
密码必须包含 | 标记一个或多个复选框以要求在密码中使用指定字符: -一个大写和一个小写拉丁字母 -一个数字 -一个特殊字符 将鼠标悬停在问号上可查看每个选项的字符列表提示。 |
避免使用容易猜到的密码 | 如果标记,将根据以下要求检查密码: - 不得包含用户名、姓氏或用户名 - 不得为常见或上下文之一-特定密码。 常用密码和上下文特定密码列表是从 NCSC“前 100k 密码”列表、SecLists“前 1M 密码”列表和 Zabbix 上下文特定密码列表自动生成的.不允许内部用户设置此列表中包含的密码,因为此类密码因其常见用途而被视为弱密码。 |
密码复杂性要求的变化不会影响现有的用户密码,但如果现有用户选择更改密码,新密码必须满足当前要求。一个提示要求列表将显示在 Password 字段旁边用户配置 和 用户配置表单 可访问从管理→用户菜单。
HTTP 认证
基于 HTTP 或 Web 服务器的身份验证(例如:Basic Authentication、NTLM/Kerberos)可用于检查用户名和密码。 请注意,用户也必须存在于 Zabbix 中,但是它的不会使用 Zabbix 密码。
当心! 确保网络服务器身份验证在切换之前已配置且正常工作。
配置参数:
参数 | 说明 |
---|---|
启用 HTTP 身份验证 | 选中复选框以启用 HTTP 身份验证。 |
默认登录表单 | 指定是否将未经身份验证的用户定向到: Zabbix 登录表单 - 标准 Zabbix 登录页面。 HTTP 登录表单 - HTTP 登录页面。<br >建议仅对 indexhttp.php 页面启用基于 Web 服务器的身份验证。如果 Default login form 设置为“HTTP login page”,如果 Web 服务器身份验证模块将在 $SERVER 变量中设置有效的用户登录名,则用户将自动登录。支持的 $_SERVER 键是 PHP_AUTH_USER ,REMOTE_USER ,AUTH_USER 。 |
删除域名 | 应从用户名中删除的以逗号分隔的域名列表。 例如 comp,any - 如果用户名是 ‘<a href=”https://www.zabbix.com/cdn-cgi/l/email-protection“ class=”__cf_email“ data-cfemail=”0746636a6e694766697e”>[email protected]‘, ‘comp\Admin’,用户将作为 ‘Admin’ 登录;如果用户名是’notacompany\Admin’,登录将被拒绝。 |
区分大小写的登录 | 取消选中该复选框以禁用用户名的区分大小写登录(默认启用)。 例如禁用区分大小写的登录并使用例如“ADMIN”用户登录,即使 Zabbix 用户是“Admin”。 注意禁用区分大小写登录的情况下,如果在 Zabbix 数据库存在多个用户,登录将被拒绝(例如 Admin、admin)。 |
在 Web 服务器身份验证的情况下,所有用户(即使 前端访问 设置 到 LDAP/内部)将由 Web 服务器进行身份验证,而不是由Zabbix!
对于无法使用 HTTP 登录的内部用户导致 401 的凭据(默认设置为 HTTP 登录表单)错误,您可能需要添加一个 ErrorDocument 401 /index.php?form=default
行到基本身份验证指令,将重定向到常规的 Zabbix 登录表单。
LDAP 身份验证
外部 LDAP 身份验证可用于检查用户名和密码。请注意,用户也必须存在于 Zabbix 中,但不会使用其 Zabbix 密码。
Zabbix LDAP 身份验证至少适用于 Microsoft Active Directory 和 OpenLDAP。
配置参数:
参数 | 说明 |
---|---|
启用 LDAP 身份验证 | 选中复选框以启用 LDAP 身份验证。 |
LDAP 主机 | LDAP 服务器的名称。例如:ldap://ldap.zabbix.com 对于安全的 LDAP 服务器,请使用 ldaps 协议。 ldaps://ldap.zabbix.com 对于 OpenLDAP 2.xx 及更高版本,完整的可以使用 ldap://hostname:port 或 ldaps://hostname:port 形式的 LDAP URI。 |
端口 | LDAP 服务器的端口。默认值为 389。 对于安全 LDAP 连接,端口号通常为 636。 在使用完整 LDAP URI 时不使用。 |
Base DN | 搜索帐户的基本路径: ou=Users,ou=system(对于 OpenLDAP), DC=company,DC=com(对于 Microsoft Active Directory) |
搜索属性 | 用于搜索的 LDAP 帐户属性: uid(用于 OpenLDAP)、 sAMAccountName(用于 Microsoft Active Directory) |
绑定 DN | LDAP 帐户,用于在 LDAP 服务器上进行绑定和搜索,示例: uid=ldap_search,ou=system (for OpenLDAP), CN=ldap_search,OU=user_group ,DC=company,DC=com(用于 Microsoft Active Directory) 还支持匿名绑定。 |
区分大小写的登录 | 取消选中该复选框以禁用用户名的区分大小写登录(默认启用)。 例如禁用区分大小写的登录并使用例如“ADMIN”用户登录,即使 Zabbix 用户是“Admin”。 注意禁用区分大小写登录的情况下,如果存在多个用户,登录将被拒绝具有相似用户名的 Zabbix 数据库(例如 Admin、admin)。 |
绑定密码 | LDAP服务器上绑定和搜索帐号的LDAP密码。 |
测试认证 | 测试部分的标题 |
Login | 测试用户的名称(当前登录在 Zabbix 前端)。此用户名必须存在于 LDAP 服务器中。 如果 Zabbix 无法对测试用户进行身份验证,它将不会激活 LDAP 身份验证。 |
用户密码 | 测试用户的LDAP密码。 |
如果证书出现问题,要使安全的 LDAP 连接 (ldaps) 正常工作,您可能需要在 /etc/openldap/ldap.conf 配置文件中添加 TLS_REQCERT allow
行。它可能会降低连接到 LDAP 目录的安全性。
建议创建一个单独的 LDAP 帐户 (Bind DN) 以在 LDAP 中以最低权限在 LDAP 服务器上执行绑定和搜索,而不是使用真实用户帐户(用于登录 Zabbix 前端)。这种方法提供了更高的安全性,并且当用户在 LDAP 服务器中更改自己的密码时,不需要更改 Bind password。 在上表中,它是 ldap_search 帐户名。
SAML 身份验证
SAML 2.0 身份验证可用于登录 Zabbix。 请注意,用户必须存在于 Zabbix 中,但不会使用其 Zabbix 密码。 如果身份验证成功,则 Zabbix 会将本地用户名与 SAML 返回的用户名属性进行匹配。
如果启用 SAML 身份验证,用户将能够在本地登录或通过 SAML 单点登录之间进行选择。
设置身份提供者
为了与 Zabbix 合作,SAML 身份提供商 (onelogin.com、auth0.com、okta.com 等) 需要按如下方式配置:
- · Assertion Consumer URL 应该设置为 ·
<path_to_zabbix_ui>/index_sso.php?acs
- · Single Logout URL 应设置为 ·
<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
如果要在前端使用 SAML 身份验证,则需要安装 php-openssl。
要使用 SAML 身份验证,Zabbix 应按以下方式配置:
1. 私钥和证书应存储在 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 身份验证 | 选中复选框以启用 SAML 身份验证。 |
IDP 实体 ID | SAML 身份提供者的唯一标识符。 |
SSO 服务 URL | 用户登录时将被重定向到的 URL。 |
SLO 服务 URL | 用户注销时将被重定向到的 URL。如果留空,则不会使用 SLO 服务。 |
// 用户名属性// | 登录 Zabbix 时用作用户名的 SAML 属性。 支持的值列表由身份提供者确定。 示例: uid 用户主体名 samaccountname 用户名 用户用户名 urn:oid:0.9.2342.19200300.100.1.1 urn:oid:1.3.6.1.4.1.5923.1.1.1.13< br>urn:oid:0.9.2342.19200300.100.1.44 |
SP 实体 ID | SAML 服务提供者的唯一标识符。 |
SP 名称 ID 格式 | 定义应使用的名称标识符格式。 示例: 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 签名的实体: 消息 断言 AuthN 请求 注销请求 注销回复 |
加密 | 标记复选框以选择应启用 SAML 加密的实体: 断言 名称 ID |
区分大小写的登录 | 标记复选框以启用用户名区分大小写的登录(默认禁用)。 例如禁用区分大小写的登录并使用例如“ADMIN”用户登录,即使 Zabbix 用户是“Admin”。 注意禁用区分大小写登录的情况下,如果存在多个用户,登录将被拒绝具有相似用户名的 Zabbix 数据库(例如 Admin、admin)。 |
高级设置
可以在 Zabbix 前端配置文件 (zabbix.conf.php) 中配置额外的 SAML 参数:
- $SSO[‘SP_KEY’] = ‘<SP 私钥文件的路径>’;
- $SSO[‘SP_CERT’] = ‘<SP 证书文件的路径>’;
- $SSO[‘IDP_CERT’] = ‘<IDP 证书文件的路径>’;
- $SSO[‘设置’]
Zabbix 使用 OneLogin 的 SAML PHP Toolkit 库(版本 3.4.1)。 $SSO[‘SETTINGS’] 部分的结构应该与库使用的结构相似。配置选项的说明见官方库文档。
只有以下选项可以设置为 $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
- 签名算法
- digestAlgorithm
- 小写Urlencoding
所有其他选项将从数据库中获取并且不能被覆盖。 debug 选项将被忽略。
此外,如果 Zabbix UI 位于代理或负载均衡器之后,则可以使用自定义 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‘, // … ], // … ];