3 Authentification

Aperçu

La section Administration → Authentification permet de spécifier la méthode d'authentification globale de l'utilisateur à Zabbix et les conditions du mot de passe interne. Les méthodes disponibles sont internes, HTTP, LDAP et authentification SAML.

Authentification par défaut

Par défaut, Zabbix utilise l'authentification interne Zabbix pour tous les utilisateurs. Il est possible de changer la méthode par défaut en LDAP à l'échelle du système ou d'activer l'authentification LDAP uniquement pour des groupes d'utilisateurs spécifiques.

Pour définir LDAP comme méthode d'authentification par défaut pour tous les utilisateurs, accédez à l'onglet LDAP et configurez les paramètres d'authentification, puis revenez à l'onglet Authentification et basculez le sélecteur Authentification par défaut sur LDAP.

Notez que la méthode d'authentification peut être affinée au niveau groupe d'utilisateurs. Même si l'authentification LDAP est définie globalement, certains groupes d'utilisateurs peuvent toujours être authentifiés par Zabbix. Ces groupes doivent avoir un accès frontal défini sur Interne. Inversement, si l'authentification interne est utilisée globalement, les détails d'authentification LDAP peuvent être spécifiés et utilisés pour des groupes d'utilisateurs spécifiques dont l'accès frontal est défini sur LDAP. Si un utilisateur est inclus dans au moins un groupe d'utilisateurs avec authentification LDAP, cet utilisateur ne pourra pas utiliser la méthode d'authentification interne.

Les méthodes d'authentification HTTP et SAML 2.0 peuvent être utilisées en plus de la méthode d'authentification par défaut.

Authentification interne

L'onglet Authentification permet de définir des exigences de complexité de mot de passe personnalisées pour les utilisateurs internes de Zabbix.

Les options de stratégie de mot de passe suivantes peuvent être configurées :

Paramètre Description
Longueur minimale du mot de passe Par défaut, la longueur minimale du mot de passe est définie sur 8. Plage prise en charge : 1-70. Notez que les mots de passe de plus de 72 caractères seront tronqués.
Le mot de passe doit contenir Cochez une ou plusieurs cases pour exiger l'utilisation des caractères spécifiés dans un mot de passe :
-une lettre latine majuscule et minuscule
-un chiffre
-un caractère spécial

Passez la souris sur le point d'interrogation pour voir un indice avec la liste des caractères pour chaque option.
Évitez les mots de passe faciles à deviner Si coché, un mot de passe sera vérifié par rapport aux exigences suivantes :
- ne doit pas contenir le nom, le prénom ou le nom d'utilisateur de l'utilisateur
- ne doit pas être l'un des mots de passe courants ou mots de passe spécifiques au contexte.

La liste des mots de passe communs et spécifiques au contexte est générée automatiquement à partir de la liste des NCSC "Top 100k passwords", de la liste des SecLists "Top 1M passwords" et de la liste des contextes Zabbix mots de passe spécifiques. Les utilisateurs internes ne seront pas autorisés à définir des mots de passe inclus dans cette liste car ces mots de passe sont considérés comme faibles en raison de leur utilisation courante.

Les modifications des exigences de complexité des mots de passe n'affecteront pas les mots de passe des utilisateurs existants, mais si un utilisateur existant choisit de modifier un mot de passe, le nouveau mot de passe devra répondre aux exigences actuelles. Un indice avec la liste des exigences sera affiché à côté du champ Mot de passe dans le profil utilisateur et dans le formulaire de configuration utilisateur accessible depuis le menu Administration→Utilisateurs.

Authentification HTTP

L'authentification HTTP ou basée sur un serveur Web (par exemple : authentification de base, NTLM/Kerberos) peut être utilisée pour vérifier les noms d'utilisateur et les mots de passe. Notez qu'un utilisateur doit également exister dans Zabbix, mais son mot de passe Zabbix ne sera pas utilisé.

Faites attention ! Assurez-vous que l'authentification du serveur Web est configurée et fonctionne correctement avant de l'activer.

Paramètres de configuration :

Paramètre Description
Activer l'authentification HTTP Cochez la case pour activer l'authentification HTTP. Passer la souris sur fera apparaître une boîte d'avertissement avertissant que dans le cas d'authentification du serveur Web, tous les utilisateurs (même pour l'accès à l'interface défini sur LDAP/Interne) seront authentifiés par le serveur Web, pas par Zabbix.
Formulaire de connexion par défaut Indiquez si vous souhaitez rediriger les utilisateurs non authentifiés vers :
Formulaire de connexion Zabbix - Page de connexion Zabbix standard.
Formulaire de connexion HTTP - Page de connexion HTTP.
Il est recommandé d'activer l'authentification basée sur le serveur Web pour la page index_http.php uniquement. Si Formulaire de connexion par défaut est défini sur 'Page de connexion HTTP', l'utilisateur sera automatiquement connecté si le module d'authentification du serveur Web définit une connexion utilisateur valide dans la variable $_SERVER.
Les clés $_SERVER prises en charge sont PHP_AUTH_USER, REMOTE_USER, AUTH_USER.
Supprimer le nom de domaine Une liste délimitée par des virgules de noms de domaine qui doivent être supprimés du nom d'utilisateur.
Par ex. comp,any - si le nom d'utilisateur est 'Admin@any', 'comp\Admin', l'utilisateur sera connecté en tant que 'Admin'; si le nom d'utilisateur est 'notacompany\Admin', la connexion sera refusée.
Connexion sensible à la casse Décochez la case pour désactiver la connexion sensible à la casse (activée par défaut) pour les noms d'utilisateur.
Par ex. désactivez la connexion sensible à la casse et connectez-vous avec, par exemple, 'ADMIN' utilisateur même si l'utilisateur Zabbix est 'Admin'.
Notez qu'avec la connexion sensible à la casse désactivée, la connexion sera refusée si plusieurs utilisateurs existent dans la base de données Zabbix avec des noms d'utilisateur similaires (par ex. Admin, admin).

Pour les utilisateurs internes qui ne peuvent pas se connecter à l'aide des informations d'identification HTTP (avec le formulaire de connexion HTTP défini par défaut) entraînant l'erreur 401, vous pouvez ajouter une ligne ErrorDocument 401 /index.php?form=default aux directives d'authentification de base , qui redirigera vers le formulaire de connexion Zabbix habituel.

LDAP authentication

L'authentification LDAP externe peut être utilisée pour vérifier les noms d'utilisateur et les mots de passe. Notez qu'un utilisateur doit également exister dans Zabbix, mais son mot de passe Zabbix ne sera pas utilisé.

L'authentification LDAP Zabbix fonctionne au moins avec Microsoft Active Directory et OpenLDAP.

Paramètres de configuration :

Paramètre Description
Activer l'authentification LDAP Cochez la case pour activer l'authentification LDAP.
Hôte LDAP Nom du serveur LDAP. Par exemple : ldap://ldap.zabbix.com
Pour un serveur LDAP sécurisé, utilisez le protocole ldaps.
ldaps://ldap.zabbix.com
Avec OpenLDAP 2.x.x et versions ultérieures, un URI LDAP complèt au format ldap://hostname:port ou ldaps://hostname:port peut être utilisé.
Port Port du serveur LDAP. La valeur par défaut est 389.
Pour une connexion LDAP sécurisée, le numéro de port est normalement 636.
Non utilisé lors de l'utilisation d'URI LDAP complets.
DN de base Chemin de base pour rechercher des comptes :
ou=Users,ou=system (pour OpenLDAP),
DC=company,DC=com (pour Microsoft Active Directory)
Attribut recherché Attribut de compte LDAP utilisé pour la recherche :
uid (pour OpenLDAP),
sAMAccountName (pour Microsoft Active Directory)
DN de lien Compte LDAP pour la liaison et la recherche sur le serveur LDAP, exemples :
uid=ldap_search,ou=system (pour OpenLDAP),
CN=ldap_search,OU=user_group ,DC=company,DC=com (pour Microsoft Active Directory)
La liaison anonyme est également prise en charge. Notez que la liaison anonyme ouvre potentiellement la configuration du domaine à des utilisateurs non autorisés (informations sur les utilisateurs, les ordinateurs, les serveurs, les groupes, les services, etc.). Pour des raisons de sécurité, désactivez les liaisons anonymes sur les hôtes LDAP et utilisez plutôt l'accès authentifié.
Connexion sensible à la casse Décochez la case pour désactiver la connexion sensible à la casse (activée par défaut) pour les noms d'utilisateur.
Par ex. désactivez la connexion sensible à la casse et connectez-vous avec, par exemple, l'utilisateur 'ADMIN' même si l'utilisateur Zabbix est 'Admin'.
Notez qu'avec la connexion sensible à la casse désactivée, la connexion sera refusée si plusieurs utilisateurs existent dans Base de données Zabbix avec des noms d'utilisateur similaires (par exemple, Admin, admin).
Mot de passe de lien Mot de passe LDAP du compte pour la liaison et la recherche sur le serveur LDAP.
Tester l'authentification En-tête d'une section à tester
Connexion Nom d'un utilisateur de test (qui est actuellement connecté à l'interface Zabbix). Ce nom d'utilisateur doit exister sur le serveur LDAP.
Zabbix n'activera pas l'authentification LDAP s'il est incapable d'authentifier l'utilisateur de test.
Mot de passe utilisateur Mot de passe LDAP de l'utilisateur test.

En cas de problème avec les certificats, pour faire fonctionner une connexion LDAP sécurisée (ldaps), vous devrez peut-être ajouter une ligne TLS_REQCERT allow au fichier de configuration /etc/openldap/ldap.conf. Cela peut diminuer la sécurité de la connexion au catalogue LDAP.

Il est recommandé de créer un compte LDAP séparé (DN de lien) pour effectuer la liaison et la recherche sur le serveur LDAP avec des privilèges minimaux dans le LDAP au lieu d'utiliser de vrais comptes d'utilisateurs (utilisés pour se connecter à l'interface Zabbix).
Une telle approche offre plus de sécurité et ne nécessite pas de changer le Mot de passe de lien lorsque l'utilisateur change son propre mot de passe dans le serveur LDAP.
Dans le tableau ci-dessus, il s'agit du nom du compte ldap_search.

Authentification SAML

L'authentification SAML 2.0 peut être utilisée pour se connecter à Zabbix. Notez qu'un utilisateur doit exister dans Zabbix, cependant, son mot de passe Zabbix ne sera pas utilisé. Si l'authentification réussit, Zabbix associera un nom d'utilisateur local à l'attribut de nom d'utilisateur renvoyé par SAML.

Si l'authentification SAML est activée, les utilisateurs pourront choisir entre se connecter localement ou via l'authentification unique SAML.

Configuration du fournisseur d'identité

Pour travailler avec Zabbix, un fournisseur d'identité SAML (onelogin.com, auth0.com, okta.com, etc.) doit être configuré de la manière suivante :

  • L'URL du consommateur d'assertion doit être définie sur <path_to_zabbix_ui>/index_sso.php?acs
  • URL de déconnexion unique doit être défini sur <path_to_zabbix_ui>/index_sso.php?sls

Exemple <path_to_zabbix_ui> : %% https://example.com/zabbix/ui, http://another.example.com/zabbix, http://<any_public_ip_address>/zabbix %%

Configurer Zabbix

Il est nécessaire d'installer php-openssl si vous souhaitez utiliser l'authentification SAML dans le frontend.

Pour utiliser l'authentification SAML, Zabbix doit être configuré de la manière suivante :

1. La clé privée et le certificat doivent être stockés dans ui/conf/certs/, sauf si des chemins personnalisés sont fournis dans zabbix.conf.php.

Par défaut, Zabbix cherchera dans les emplacements suivants :

  • ui/conf/certs/sp.key - Fichier de clé privée SP
  • ui/conf/certs/sp.crt - Fichier de certificat SP
  • ui/conf/certs/idp.crt - Fichier de certificat IDP

2. Tous les paramètres les plus importants peuvent être configurés dans l'interface Zabbix. Cependant, il est possible de spécifier des paramètres supplémentaires dans le fichier de configuration.

Paramètres de configuration, disponibles dans l'interface Zabbix :

Paramètre Description
Activer l'authentification SAML Cochez la case pour activer l'authentification SAML.
ID d'entité IDP Identifiant unique du fournisseur d'identité SAML.
URL du service SSO L'URL vers laquelle les utilisateurs seront redirigés lors de la connexion.
URL du service SLO L'URL vers laquelle les utilisateurs seront redirigés lors de la déconnexion. Si laissé vide, le service SLO ne sera pas utilisé.
// Attribut de nom d'utilisateur// Attribut SAML à utiliser comme nom d'utilisateur lors de la connexion à Zabbix.
La liste des valeurs prises en charge est déterminée par le fournisseur d'identité.

Exemples :
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 d'entité SP L'identifiant unique du fournisseur de services SAML.
Format d'ID du nom du SP Définit le format d'identifiant de nom à utiliser.

Exemples :
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
Signature Cochez les cases pour sélectionner les entités pour lesquelles la signature SAML doit être activée :
Messages
Assertions
AuthN requests
Logout requests
Logout responses
Chiffrement Cochez les cases pour sélectionner les entités pour lesquelles le chiffrement SAML doit être activé :
Assertions
Name ID
Connexion sensible à la casse Cochez la case pour activer la connexion sensible à la casse (désactivée par défaut) pour les noms d'utilisateur.
Par exemple, désactivez la connexion sensible à la casse et connectez-vous avec, par exemple, l'utilisateur 'ADMIN' même si l'utilisateur Zabbix est 'Admin'.
Notez qu'avec la connexion sensible à la casse désactivée, la connexion sera refusée si plusieurs utilisateurs existent dans Base de données Zabbix avec des noms d'utilisateur similaires (par exemple, Admin, admin).
Réglages avancés

Des paramètres SAML supplémentaires peuvent être configurés dans le fichier de configuration de l'interface Zabbix (zabbix.conf.php) :

  • $SSO['SP_KEY'] = '<chemin d'accès au fichier de clé privée du SP>';
  • $SSO['SP_CERT'] = '<chemin d'accès au fichier de certificat SP>';
  • $SSO['IDP_CERT'] = '<chemin d'accès au fichier de certificat IDP>';
  • $SSO['SETTINGS']

Zabbix utilise la bibliothèque OneLogin's SAML PHP Toolkit (version 3.4.1). La structure de la section $SSO['SETTINGS'] doit être similaire à la structure utilisée par la bibliothèque. Pour la description des options de configuration, voir la documentation officielle de la bibliothèque .

Seules les options suivantes peuvent être définies dans le cadre de $SSO['SETTINGS'] :

  • strict
  • baseurl
  • compress
  • contactPerson
  • organization
  • sp (uniquement les options spécifiées dans cette liste)
    • attributeConsumingService
    • x509certNew
  • idp (uniquement les options spécifiées dans cette liste)
    • singleLogoutService (une seule option)
      • responseUrl
    • certFingerprint
    • certFingerprintAlgorithm
    • x509certMulti
  • security (uniquement les options spécifiées dans cette liste)
    • signMetadata
    • wantNameId
    • requestedAuthnContext
    • requestedAuthnContextComparison
    • wantXMLValidation
    • relaxDestinationValidation
    • destinationStrictlyMatches
    • rejectUnsolicitedResponsesWithInResponseTo
    • signatureAlgorithm
    • digestAlgorithm
    • lowercaseUrlencoding

Toutes les autres options seront extraites de la base de données et ne peuvent pas être remplacées. L'option debug sera ignorée.

De plus, si l'interface utilisateur Zabbix se trouve derrière un proxy ou un équilibreur de charge, l'option personnalisée use_proxy_headers peut être utilisée :

  • false (par défaut) - ignorer l'option ;
  • true - use X-Forwarded-* En-têtes HTTP pour la création de l'URL de base.

Si vous utilisez un équilibreur de charge pour vous connecter à l'instance Zabbix, où l'équilibreur de charge utilise TLS/SSL et pas Zabbix, vous devez indiquer les paramètres 'baseurl', 'strict' et 'use_proxy_headers' comme suit :

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

Exemple de configuration :

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