Aller au contenu

HTTP

L'authentification HTTP est l'une des méthodes d'authentification externe fournies par Zabbix et peut être utilisée pour sécuriser davantage votre interface Web Zabbix avec un mécanisme d'authentification de base au niveau du serveur HTTP.

L'authentification HTTP de base protège les ressources du site Web (Zabbix WebUI) avec un nom d'utilisateur et un mot de passe. Lorsqu'un utilisateur tente d'accéder à Zabbix WebUI, le navigateur affiche une boîte de dialogue demandant des informations d'identification avant d'envoyer quoi que ce soit au code php de Zabbix WebUI.

Un serveur HTTP dispose d'un fichier contenant des informations d'identification utilisées pour authentifier les utilisateurs.

Voyons d'abord comment configurer l'authentification de base dans le serveur HTTP.

Warning

The examples below provide just minimum set of options to configure basic authentication. Please refer to respective HTTP server documentation for more details

Basic authentication

To enable basic authentication, we first need a "password-file" containing all usernames and passwords that are allowed to access the frontend.

Important

Usernames configured for basic authentication in HTTP server must exist in Zabbix. But only passwords configured in HTTP server are used for users authentication.

To create this file we need the command htpasswd. Execute following commands to ensure we have this utility:

Install htpasswd utility

Red Hat

dnf install httpd-utils

SUSE

zypper install apache2-utils

Ubuntu

sudo apt install apache2-utils

Next we will create the required file and the Admin user in it:

Info

NGINX

sudo htpasswd -c /etc/nginx/httpauth Admin

Apache on Red Hat

sudo htpasswd -c /etc/httpd/.htpasswd Admin

Apache on SUSE / Ubuntu

sudo htpasswd -c /etc/apache2/.htpasswd Admin

This command will request you to input the desired password for the Admin user and will then create the specified password-file with the username and encrypted password in it.

For any additional user we can use the same command but without the -c option as the file is now already created:

Add additional users
localhost:~> sudo htpasswd /etc/nginx/httpauth user1
New password: 
Re-type new password: 
Adding password for user user1

Which will add user1 to the /etc/nginx/httpauth-file. Replace this path with the path of this file on your distribution/webserver.

In the end the password-file should look something like:

Example password-file
localhost:~> sudo cat /etc/nginx/httpauth
Admin:$1$8T6SbR/N$rgANUPGvFh7H.R1Mffexh.
user1:$1$GXoDIOCA$u/n1kkDeFwcI4KhyHkY6p/

Now that we have a password-file, we can continue to configure the web-browser to actually perform basic authentication, using this file.

Configure authentication file on Nginx

Find location / { block in Nginx configuration file that defines your Zabbix WebUI (if you followed the installation steps as described in earlier chapters, this should be in /etc/nginx/conf.d/zabbix.conf) and add these two lines:

Info

    location / {
        ...
        auth_basic "Basic Auth Protected Site";
        auth_basic_user_file /etc/nginx/httpauth;
    }

N'oubliez pas de redémarrer le service Nginx après avoir effectué cette modification.

Configure authentication file on Apache HTTPD

Trouvez le bloc <Directory "/usr/share/zabbix"> dans le fichier de configuration Apache HTTP, il définit votre WebUI Zabbix (ie : /etc/zabbix/apache.conf) et ajoutez ces lignes :

Note

By default configuration has Require all granted, remove this line.

Example

RedHat:

    <Directory "/usr/share/zabbix">
        ...
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/httpd/.htpasswd
        Require valid-user
    </Directory>

Ubuntu / SUSE

    <Directory "/usr/share/zabbix">
        ...
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>

Do not forget to restart apache2 or httpd service after making this change.

Configuration de Zabbix pour l'authentification HTTP

Une fois le serveur WEB configuré avec l'authentification de base, il est temps de configurer le serveur Zabbix. Dans le menu Zabbix, sélectionnez Users | Authentication | HTTP settings et cochez la case Enable HTTP authentication. Cliquez sur Update et confirmez les changements en cliquant sur OK.

Authentification des utilisateurs HTTP{ align=center }

2.1 Authentification des utilisateurs HTTP

Remove domain name Le champ doit contenir une liste de domaines séparés par des virgules que Zabbix supprimera du nom d'utilisateur fourni. Par exemple, si un utilisateur entre "test@myzabbix" ou "myzabbix\test" et que nous avons "myzabbix" dans ce champ, l'utilisateur sera connecté avec le nom d'utilisateur "test".

Décocher la case Case-sensitive login indiquera à Zabbix de ne pas tenir compte des majuscules/minuscules dans les noms d'utilisateur, par exemple "tEst" et "test" deviendront des noms d'utilisateur tout aussi légitimes même si dans Zabbix nous n'avons que l'utilisateur "test" de configuré.

Notez que le formulaire de connexion par défaut est réglé sur "Zabbix login form". Maintenant, si vous vous déconnectez, vous verrez le lien "Sign in with HTTP" (se connecter avec HTTP) sous les champs Username (nom d'utilisateur) et Password (mot de passe). Si vous cliquez sur ce lien, vous serez automatiquement connecté à Zabbix WebUI avec le même nom d'utilisateur que celui que vous avez utilisé précédemment. Vous pouvez également saisir un nom d'utilisateur et un mot de passe différents et vous connecter normalement à Zabbix WebUI en tant qu'utilisateur différent.

HTTP users authentication login

2.2 Formulaire d'authentification des utilisateurs HTTP

Si vous sélectionnez "HTTP login form" dans le menu déroulant Default login form, vous ne verrez pas le formulaire de connexion standard de Zabbix lorsque vous essayerez de vous déconnecter. En fait, vous ne pourrez pas vous déconnecter à moins que votre session d'authentification n'expire. La seule façon de se déconnecter est d'effacer les cookies dans votre navigateur. Vous devrez alors suivre à nouveau la procédure d'authentification de base du serveur Web.


Conclusion

La configuration de l'authentification au niveau HTTP ajoute une couche critique de contrôle d'accès à votre interface Web Zabbix en exploitant les mécanismes d'authentification natifs de votre serveur Web. Que vous utilisiez Nginx ou Apache, cette approche garantit que les utilisateurs sont invités à fournir des informations d'identification avant même d'atteindre Zabbix, ce qui protège efficacement contre les accès non autorisés au niveau du point d'entrée HTTP. Il est essentiel de s'assurer que les noms d'utilisateur utilisés dans l'authentification HTTP sont déjà définis dans Zabbix lui-même - seul le mot de passe du serveur web compte pour les vérifications d'identité - et de configurer correctement les paramètres d'authentification HTTP de Zabbix (tels que la suppression du domaine et les options de sensibilité à la casse). En coordonnant les paramètres d'authentification du serveur web avec la configuration interne de Zabbix, vous pouvez obtenir des flux de travail de connexion des utilisateurs transparents et sécurisés qui combinent la facilité d'utilisation frontale avec des mesures de protection robustes.


Questions

  • Quel est l'avantage de l'authentification HTTP (basée sur le serveur web) par rapport au mécanisme d'authentification interne de Zabbix ? (Pensez à la protection au niveau du serveur web avant même que l'utilisateur n'atteigne l'interface utilisateur de Zabbix.)

  • Pourquoi est-il essentiel qu'un utilisateur existe dans Zabbix même lorsque l'authentification HTTP est activée et pourquoi le mot de passe Zabbix n'est-il pas pertinent dans ce cas ?

  • Quelles sont les options de configuration dans le frontend de Zabbix sous "Administration → Authentification" pour l'authentification HTTP, et comment chacune d'entre elles peut-elle affecter le comportement de connexion ? Les exemples incluent l'activation/désactivation de la sensibilité à la casse, la suppression du domaine et le choix du formulaire de connexion.

  • Supposons que vous désactiviez la sensibilité à la casse des logins et que vous mainteniez les deux comptes 'Admin' et 'admin' dans Zabbix. Comment l'authentification HTTP se comportera-t-elle, et à quel résultat devez-vous vous attendre ?

  • Imaginez la résolution d'un problème d'échec de connexion lors de l'utilisation de l'authentification HTTP : Quelles mesures prendriez-vous pour vous assurer que l'authentification du serveur web est configurée correctement avant d'examiner les paramètres de Zabbix ?

  • Du point de vue de la sécurité, quand l'authentification HTTP seule serait-elle insuffisante et quelles autres méthodes d'authentification (par exemple, LDAP, SAML, MFA) pourriez-vous mettre en œuvre pour plus de sécurité ?

URL utiles