Installation-Zabbix
Installation Zabbix 7.2 — Guide complet
Résumé
Installation de Zabbix Server 7.2 sur Ubuntu 24.04 avec base MariaDB distante (10.10.20.40), accès HTTPS via certificat FSEC-CA, et authentification LDAPS vers Active Directory (fsec.lan).
1. Prérequis
| Composant | Détail |
|---|---|
| VM | Ubuntu 24.04 LTS — 10.10.20.31 |
| Base de données | MariaDB distante — 10.10.20.40 |
| Domaine AD | fsec.lan (DC01 = 10.10.20.10) |
| PKI | FSEC-CA (AD CS sur DC01) |
| DNS | zabbix.fsec.lan → 10.10.20.31 |
2. Installation des paquets Zabbix
# Ajouter le dépôt Zabbix 7.2
wget https://repo.zabbix.com/zabbix/7.2/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.2+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.2+ubuntu24.04_all.deb
apt update
# Installer Zabbix Server, Frontend et Agent
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent2
3. Préparer la base MariaDB (sur 10.10.20.40)
-- Se connecter à MariaDB
mysql -u root -p
-- Créer la base et l'utilisateur
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'10.10.20.31' IDENTIFIED BY 'MotDePasseZabbix';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'10.10.20.31';
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
# Depuis la VM Zabbix : importer le schéma initial
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p -h 10.10.20.40 zabbix
4. Configurer Zabbix Server
nano /etc/zabbix/zabbix_server.conf
Lignes importantes à modifier :
DBHost=10.10.20.40
DBName=zabbix
DBUser=zabbix
DBPassword=MotDePasseZabbix
DBPort=3306
⚠️ Point important Zabbix 7.2 : dans le wizard web, il faut mettre le port
3306explicitement et ne pas cocher TLS pour la connexion MariaDB.
systemctl enable --now zabbix-server zabbix-agent2 apache2
5. Wizard web (première configuration)
Accéder à http://10.10.20.31/zabbix :
- Langue → French
- Vérification des prérequis → tout doit être ✔
- Base de données : Host
10.10.20.40, Port3306, DBzabbix, Userzabbix, TLS décoché - Server name →
FSEC-Zabbix - Timezone →
Europe/Paris - Login par défaut :
Admin/zabbix→ changer immédiatement le mot de passe
6. Certificat HTTPS (FSEC-CA)
Pourquoi ?
On veut que l’accès à Zabbix soit en HTTPS avec un certificat signé par notre autorité de certification interne (FSEC-CA sur DC01). C’est cohérent avec le reste du lab (pfSense est aussi en HTTPS sur port 8443).
Étape 6.1 — Générer la clé privée et la CSR sur Zabbix
# Créer le dossier pour les certificats
mkdir -p /etc/ssl/zabbix
# Générer la clé privée (2048 bits)
# C'est la clé secrète du serveur, elle ne doit JAMAIS quitter cette machine
openssl genrsa -out /etc/ssl/zabbix/zabbix.key 2048
C’est quoi une clé privée ?
C’est comme la clé de ta maison. Elle permet de déchiffrer ce qui a été chiffré avec la clé publique correspondante. Elle reste sur le serveur, on ne la transmet jamais.
# Créer le fichier d'extensions avec SAN (Subject Alternative Name)
nano /etc/ssl/zabbix/zabbix.ext
Contenu du fichier zabbix.ext :
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = zabbix.fsec.lan
IP.1 = 10.10.20.31
Pourquoi le SAN ?
Les navigateurs modernes (Chrome, Edge, Firefox) ne se contentent plus du CN (Common Name) dans le certificat. Ils exigent un champ SAN qui liste explicitement les noms DNS et IPs autorisés. Sans SAN → erreur
NET::ERR_CERT_COMMON_NAME_INVALID.
# Générer la CSR (Certificate Signing Request)
openssl req -new
-key /etc/ssl/zabbix/zabbix.key
-out /etc/ssl/zabbix/zabbix.csr
-subj "/CN=zabbix.fsec.lan/O=FSEC/C=FR"
-config /etc/ssl/zabbix/zabbix.ext
# Afficher la CSR pour la copier
cat /etc/ssl/zabbix/zabbix.csr
C’est quoi une CSR ?
C’est une demande de signature. Elle contient la clé publique + les informations d’identité (CN, Organisation, etc.). On l’envoie à l’autorité de certification (FSEC-CA) pour qu’elle la signe et génère le certificat final.
Étape 6.2 — Signer la CSR avec AD CS (sur DC01)
# Activer le support SAN dans AD CS (une seule fois)
certutil -setreg policyEditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
Restart-Service certsvc
# Créer le fichier CSR sur DC01
notepad C:Tempzabbix.csr
# → Coller le contenu copié depuis la VM Zabbix
# Signer avec FSEC-CA en incluant le SAN
certreq -submit -attrib "CertificateTemplate:WebServer`nsan:dns=zabbix.fsec.lan&ipaddress=10.10.20.31" C:Tempzabbix.csr C:Tempzabbix.crt
# → Sélectionner FSEC-CA si une fenêtre s'ouvre
# Afficher le certificat pour le copier
type C:Tempzabbix.crt
C’est quoi AD CS ?
Active Directory Certificate Services — c’est notre propre autorité de certification (CA) interne. Elle peut signer des certificats pour tous les serveurs du domaine. Les machines du domaine font confiance à FSEC-CA automatiquement (via GPO).
Étape 6.3 — Installer le certificat sur Zabbix
# Coller le contenu du certificat signé
nano /etc/ssl/zabbix/zabbix.crt
# → Coller depuis DC01
# Vérifier que les 3 fichiers sont présents
ls -la /etc/ssl/zabbix/
# zabbix.key (clé privée)
# zabbix.csr (demande de signature — plus nécessaire mais on la garde)
# zabbix.crt (certificat signé par FSEC-CA)
# zabbix.ext (fichier de config SAN)
Étape 6.4 — Configurer Apache pour HTTPS
# Activer les modules SSL et rewrite
a2enmod ssl rewrite
# Créer le VirtualHost HTTPS
nano /etc/apache2/sites-available/zabbix-ssl.conf
Contenu :
<VirtualHost *:443>
ServerName zabbix.fsec.lan
DocumentRoot /usr/share/zabbix/ui
SSLEngine on
SSLCertificateFile /etc/ssl/zabbix/zabbix.crt
SSLCertificateKeyFile /etc/ssl/zabbix/zabbix.key
Include /etc/apache2/conf-available/zabbix.conf
</VirtualHost>
<VirtualHost *:80>
ServerName zabbix.fsec.lan
Redirect permanent / https://zabbix.fsec.lan/
</VirtualHost>
⚠️ Piège Zabbix 7.2 : le DocumentRoot est
/usr/share/zabbix/ui(avec/ui), pas/usr/share/zabbix. Si tu te trompes → page blanche ou erreur 403.
# Activer le site SSL et désactiver le site par défaut
a2ensite zabbix-ssl.conf
a2dissite 000-default.conf
# Redémarrer Apache
systemctl restart apache2
Étape 6.5 — Créer l’enregistrement DNS
Sur DC01 en PowerShell :
Add-DnsServerResourceRecordA -Name "zabbix" -ZoneName "fsec.lan" -IPv4Address "10.10.20.31"
# Vérifier
Resolve-DnsName zabbix.fsec.lan
Résultat attendu
https://zabbix.fsec.lan → page de login Zabbix avec cadenas vert (si la FSEC-CA est dans le magasin de confiance du navigateur).
7. Authentification LDAPS vers AD
Pourquoi LDAPS et pas LDAP ?
Windows Server 2025 refuse les connexions LDAP simples (port 389) — il exige soit LDAPS (port 636) soit du LDAP avec signing. C’est une sécurité renforcée par défaut dans WS2025. On a eu exactement le même problème avec GLPI (CP1).
Étape 7.1 — Créer le compte de service dans AD
# Sur DC01
New-ADUser -Name "svc-zabbix" `
-SamAccountName "svc-zabbix" `
-UserPrincipalName "svc-zabbix@fsec.lan" `
-Path "OU=_Services,OU=_UTILISATEURS,DC=fsec,DC=lan" `
-AccountPassword (ConvertTo-SecureString "MotDePasse!" -AsPlainText -Force) `
-PasswordNeverExpires $true `
-Enabled $true
Étape 7.2 — Configurer TLS sur Zabbix
# Tester la connexion LDAPS depuis Zabbix
ldapsearch -x -H ldaps://10.10.20.10:636
-D "CN=svc-zabbix,OU=_Services,OU=_UTILISATEURS,DC=fsec,DC=lan"
-w "MotDePasse!"
-b "DC=fsec,DC=lan" "(sAMAccountName=svc-zabbix)"
Si erreur Can't contact LDAP server :
# Désactiver la vérification du certificat TLS
echo "TLS_REQCERT never" >> /etc/ldap/ldap.conf
Pourquoi TLS_REQCERT never ?
Le client LDAP (Zabbix) vérifie normalement le certificat du serveur AD. Comme notre certificat FSEC-CA n’est pas dans le magasin de confiance du système Linux, il refuse la connexion.
TLS_REQCERT neverdésactive cette vérification. En production, on importerait plutôt le certificat CA.
Pour que Zabbix web (Apache/PHP) prenne aussi en compte ce paramètre :
echo "LDAPTLS_REQCERT=never" >> /etc/apache2/envvars
systemctl restart apache2
Étape 7.3 — Configurer LDAP dans l’interface Zabbix
Utilisateurs → Authentification → LDAP → Ajouter
| Paramètre | Valeur |
|---|---|
| Nom | FSEC-AD |
| Hôte | ldaps://10.10.20.10 |
| Port | 636 |
| Base DN | DC=fsec,DC=lan |
| Search attribute | sAMAccountName |
| Bind DN | CN=svc-zabbix,OU=_Services,OU=_UTILISATEURS,DC=fsec,DC=lan |
| Bind password | mot de passe du compte |
Tester avec un compte AD (pas Admin qui est un compte local Zabbix).
8. Résumé du flux des certificats
┌─────────────────────┐
│ VM Zabbix │
│ 1. Génère clé privée│ ← reste sur le serveur
│ 2. Génère CSR │ ← contient clé publique + infos identité
│ 3. Envoie CSR ──────┼──────┐
│ │ │
│ 5. Reçoit le .crt │ ▼
│ (certificat signé)│ ┌──────────────┐
│ 6. Configure Apache │ │ DC01 (FSEC-CA)│
│ avec .crt + .key │ │ 4. Signe la CSR│
└─────────────────────┘ │ → génère .crt│
└──────────────────┘
En résumé :
- clé privée (.key) = secret du serveur, ne sort jamais
- CSR (.csr) = demande de signature envoyée à la CA
- certificat (.crt) = identité du serveur validée par la CA
- SAN = liste des noms/IPs autorisés dans le certificat (obligatoire pour les navigateurs modernes)
- FSEC-CA = notre autorité de certification qui signe tout dans le domaine
Erreurs rencontrées et solutions
| Erreur | Cause | Solution |
|---|---|---|
| Page blanche HTTPS | DocumentRoot incorrect (/usr/share/zabbix au lieu de /usr/share/zabbix/ui) |
Corriger dans le VirtualHost Apache |
NET::ERR_CERT_COMMON_NAME_INVALID |
Pas de SAN dans le certificat | Regénérer la CSR avec un fichier .ext contenant les SAN |
sed appliqué plusieurs fois |
Le chemin /usr/share/zabbix a été remplacé en /usr/share/zabbix/ui/ui/ui |
Restaurer depuis le backup, appliquer sed une seule fois |
LDAP Strong authentication required |
WS2025 refuse LDAP simple (port 389) | Utiliser LDAPS (port 636) |
LDAPS Can't contact LDAP server |
Certificat CA non reconnu par Linux | TLS_REQCERT never dans /etc/ldap/ldap.conf |
| Zabbix web LDAP échoue | Apache/PHP ne lit pas /etc/ldap/ldap.conf |
Ajouter LDAPTLS_REQCERT=never dans /etc/apache2/envvars |