3 Authentication

Overview

In Administration → Authentication the global user authentication method to Zabbix can be specified. The available methods are internal, HTTP, LDAP and SAML authentication.

Note that the authentication method can be fine-tuned on the user group level.

3 Authentication - 图1

By default, internal Zabbix authentication is used globally. To change:

  • to HTTP - navigate to the HTTP settings tab and enter authentication details;

  • to LDAP - select LDAP as Default authentication and enter authentication details in the LDAP settings tab;

  • to SAML - navigate to the SAML settings tab and enter authentication details.

When done, click on Update at the bottom of the form.

HTTP authentication

HTTP or web server-based authentication (for example: Basic Authentication, NTLM/Kerberos) can be used to check user names and passwords. Note that a user must exist in Zabbix as well, however its Zabbix password will not be used.

Be careful! Make sure that web server authentication is configured and works properly before switching it on.

3 Authentication - 图2

Configuration parameters:

ParameterDescription
Enable HTTP authenticationMark the checkbox to enable HTTP authentication.
Default login formSpecify whether to direct non-authenticated users to:
Zabbix login form - standard Zabbix login page.
HTTP login form - HTTP login page.
It is recommended to enable web-server based authentication for the indexhttp.php page only. If Default login form is set to ‘HTTP login page’ the user will be logged in automatically if web server authentication module will set valid user login in the $SERVER variable.
Supported $_SERVER keys are PHP_AUTH_USER, REMOTE_USER, AUTH_USER.
Remove domain nameA comma-delimited list of domain names that should be removed from the username.
E.g. comp,any - if username is ‘<a href=”https://www.zabbix.com/cdn-cgi/l/email-protection“ class=”__cf_email“ data-cfemail=”89c8ede4e0e7c9e8e7f0”>[email protected]‘, ‘comp\Admin’, user will be logged in as ‘Admin’; if username is ‘notacompany\Admin’, login will be denied.
Case sensitive loginUnmark the checkbox to disable case-sensitive login (enabled by default) for usernames.
E.g. disable case-sensitive login and log in with, for example, ‘ADMIN’ user even if the Zabbix user is ‘Admin’.
Note that with case-sensitive login disabled the login will be denied if multiple users exist in Zabbix database with similar alias (e.g. Admin, admin).

In case of web server authentication all users (even with frontend access set to Internal) will be authenticated by the web server, not by Zabbix!

For internal users who are unable to log in using HTTP credentials (with HTTP login form set as default) leading to the 401 error, you may want to add a ErrorDocument 401 /index.php?form=default line to basic authentication directives, which will redirect to the regular Zabbix login form.

LDAP authentication

External LDAP authentication can be used to check user names and passwords. Note that a user must exist in Zabbix as well, however its Zabbix password will not be used.

While LDAP authentication is set globally, some user groups can still be authenticated by Zabbix. These groups must have frontend access set to Internal. Vice versa, if internal authentication is used globally, LDAP authentication details can be specified and used for specific user groups whose frontend access is set to LDAP.

Zabbix LDAP authentication works at least with Microsoft Active Directory and OpenLDAP.

3 Authentication - 图3

Configuration parameters:

ParameterDescription
Enable LDAP authenticationMark the checkbox to enable LDAP authentication.
LDAP hostName of LDAP server. For example: ldap://ldap.zabbix.com
For secure LDAP server use ldaps protocol.
ldaps://ldap.zabbix.com
With OpenLDAP 2.x.x and later, a full LDAP URI of the form ldap://hostname:port or ldaps://hostname:port may be used.
PortPort of LDAP server. Default is 389.
For secure LDAP connection port number is normally 636.
Not used when using full LDAP URIs.
Base DNBase path to search accounts:
ou=Users,ou=system (for OpenLDAP),
DC=company,DC=com (for Microsoft Active Directory)
Search attributeLDAP account attribute used for search:
uid (for OpenLDAP),
sAMAccountName (for Microsoft Active Directory)
Bind DNLDAP account for binding and searching over the LDAP server, examples:
uid=ldap_search,ou=system (for OpenLDAP),
CN=ldap_search,OU=user_group,DC=company,DC=com (for Microsoft Active Directory)
Anonymous binding is also supported.
Case-sensitive loginUnmark the checkbox to disable case-sensitive login (enabled by default) for usernames.
E.g. disable case-sensitive login and log in with, for example, ‘ADMIN’ user even if the Zabbix user is ‘Admin’.
Note that with case-sensitive login disabled the login will be denied if multiple users exist in Zabbix database with similar alias (e.g. Admin, admin).
Bind passwordLDAP password of the account for binding and searching over the LDAP server.
Test authenticationHeader of a section for testing
LoginName of a test user (which is currently logged in the Zabbix frontend). This user name must exist in the LDAP server.
Zabbix will not activate LDAP authentication if it is unable to authenticate the test user.
User passwordLDAP password of the test user.

In case of trouble with certificates, to make a secure LDAP connection (ldaps) work you may need to add a TLS_REQCERT allow line to the /etc/openldap/ldap.conf configuration file. It may decrease the security of connection to the LDAP catalog.

It is recommended to create a separate LDAP account (Bind DN) to perform binding and searching over the LDAP server with minimal privileges in the LDAP instead of using real user accounts (used for logging in the Zabbix frontend).
Such an approach provides more security and does not require changing the Bind password when the user changes his own password in the LDAP server.
In the table above it’s ldap_search account name.

SAML authentication

SAML 2.0 authentication can be used to sign in to Zabbix. Note that a user must exist in Zabbix, however, its Zabbix password will not be used. If authentication is successful, then Zabbix will match a local username (alias) with the username attribute returned by SAML.

If SAML authentication is enabled, users will be able to choose between logging in locally or via SAML Single Sign-On.

Setting up the identity provider

In order to work with Zabbix, a SAML identity provider (onelogin.com, auth0.com, okta.com, etc.) needs to be configured in the following way:

  • Assertion Consumer URL should be set to <path_to_zabbix_ui>/index_sso.php?acs

  • Single Logout URL should be set to <path_to_zabbix_ui>/index_sso.php?sls

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

Setting up Zabbix

It is required to install php-openssl if you want to use SAML authentication in the frontend.

To use SAML authentication Zabbix should be configured in the following way:

1. Private key and certificate should be stored in the ui/conf/certs/, unless custom paths are provided in zabbix.conf.php.

By default, Zabbix will look in the folowing locations:

  • ui/conf/certs/sp.key - SP private key file

  • ui/conf/certs/sp.crt - SP cert file

  • ui/conf/certs/idp.crt - IDP cert file

2. All of the most important settings can be configured in the Zabbix frontend. However, it is possible to specify additional settings in the configuration file.

3 Authentication - 图4

Configuration parameters, available in the Zabbix frontend:

ParameterDescription
Enable SAML authenticationMark the checkbox to enable SAML authentication.
IDP entity IDThe unique identifier of SAML identity provider.
SSO service URLThe URL users will be redirected to when logging in.
SLO Service URLThe URL users will be redirected to when logging out. If left empty, the SLO service will not be used.
Username attributeSAML attribute to be used as a username when logging into Zabbix.
List of supported values is determined by the identity provider.

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 IDThe unique identifier of SAML service provider.
SP name ID formatDefines which name identifier format should be used.

Examples:
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
SignMark the checkboxes to select entities for which SAML signature should be enabled:
Messages
Assertions
AuthN requests
Logout requests
Logout responses
EncryptMark the checkboxes to select entities for which SAML encryption should be enabled:
Assertions
Name ID
Case-sensitive loginMark the checkbox to enable case-sensitive login (disabled by default) for usernames.
E.g. disable case-sensitive login and log in with, for example, ‘ADMIN’ user even if the Zabbix user is ‘Admin’.
Note that with case-sensitive login disabled the login will be denied if multiple users exist in Zabbix database with similar alias (e.g. Admin, admin).
Advanced settings

Additional SAML parameters can be configured in the Zabbix frontend configuration file (zabbix.conf.php):

  • $SSO[‘SP_KEY’] = ‘<path to the SP private key file>’;

  • $SSO[‘SP_CERT’] = ‘<path to the SP cert file>’;

  • $SSO[‘IDP_CERT’] = ‘<path to the IDP cert file>’;

  • $SSO[‘SETTINGS’]

Zabbix uses OneLogin’s SAML PHP Toolkit library (version 3.4.1). The structure of $SSO[‘SETTINGS’] section should be similar to the structure used by the library. For the description of configuration options, see official library documentation.

Only the following options can be set as part of $SSO[‘SETTINGS’]:

  • strict

  • compress

  • contactPerson

  • organization

  • sp (only options specified in this list)

    • attributeConsumingService

    • x509certNew

  • idp (only options specified in this list)

    • singleLogoutService (only one option)

      • responseUrl
    • certFingerprint

    • certFingerprintAlgorithm

    • x509certMulti

  • security (only options specified in this list)

    • signMetadata

    • wantNameId

    • requestedAuthnContext

    • requestedAuthnContextComparison

    • wantXMLValidation

    • relaxDestinationValidation

    • destinationStrictlyMatches

    • rejectUnsolicitedResponsesWithInResponseTo

    • signatureAlgorithm

    • digestAlgorithm

    • lowercaseUrlencoding

All other options will be taken from the database and cannot be overridden. The debug option will be ignored.

Configuration example:

  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. ];