Protection de Zabbix par LemonLDAP::NG

Le logiciel de supervision réseau Zabbix supporte nativement l'authentification HTTP, il est donc assez simple de l'intégrer à LemonLDAP::NG.
La première étape est de créer vos utilisateurs sur Zabbix (si Zabbix supporte l'authentification HTTP, il faut tout de même créer les utilisateurs en avance, ils ne sont pas créés automatiquement à la première connexion).

Il faut ensuite configurer Zabbix pour utiliser l'authentification HTTP. Cette configuration se fait dans Administration → Authentification, comme sur cette capture d'écran:

Configuration de l'authentification

Il faut ensuite ajuster la configuration d'apache. La première étape évidente est de créer le virtualhost pour l'accès à Zabbix, par exemple zabbix.domain.tld. La configuration de ce virtualhost va dépendre de votre système et de vos habitudes, le plus important étant qu'il contienne la directive habituelle à savoir PerlHeaderParserHandler My::Package \\Il est aussi recommandé de désactiver l'alias par défaut (/zabbix) qui pourrait rendre l'application accessible depuis un autre vhost, court-circuitant la protection de LemonLDAP::NG.

Dernier point, par défaut Zabbix cherche le nom de l'utilisateur dans la variable PHP_AUTH_USER au lieu de la plus standard REMOTE_USER. Il faut donc ajouter cette directive dans la configuration apache:

    SetEnvIfNoCase Auth-User "(.*)" PHP_AUTH_USER=$1

Voilà par exemple la configuration apache que nous utilisons:

#
# Zabbix monitoring system php web frontend
#

# Alias /zabbix /usr/share/zabbix

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    php_admin_value post_max_size 16M
    php_admin_value max_execution_time 600
    php_admin_value max_input_time 300
    php_admin_value date.timezone "Europe/Paris"

    Order deny,allow
    Deny from all
    Allow from all

    SetEnvIfNoCase Auth-User "(.*)" PHP_AUTH_USER=$1

</Directory>

<Directory "/usr/share/zabbix/include">
    Order deny,allow
    Deny from all
    <files *.php>
        Order deny,allow
        Deny from all
    </files>
</Directory>


<Directory "/usr/share/zabbix/include/classes">
    Order deny,allow
    Deny from all
    <files *.php>
        Order deny,allow
        Deny from all
    </files>
</Directory>

<VirtualHost 0.0.0.0:80>
       ServerName      zabbix.domain.tld
       DocumentRoot    /usr/share/zabbix
       RewriteEngine on
       RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
       RewriteRule .* - [F]
       RewriteRule ^/(.*|$)    https://%{HTTP_HOST}/$1 [L,R]
</VirtualHost>

<VirtualHost 0.0.0.0:443>
        ServerName      zabbix.domain.tld
        DocumentRoot    /usr/share/zabbix
        SSLEngine on
        RewriteEngine on
        RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
        RewriteRule .* - [F]
        PerlHeaderParserHandler My::Package
</VirtualHost>