Vous êtes sur la page 1sur 23

PPE – Berlin Hugo Nowacki Lycée Gaston Berger

Installation et configuration d’un


serveur de supervision Zabbix

1/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
Table des matières
1 Contexte et choix des technologies...................................................................................................3
1.1 Présentation de l’infrastructure existante...................................................................................3
1.2 Quels équipements allons nous superviser................................................................................3
1.3 Choix de la solution qui hébergera Zabbix................................................................................4
1.3.1 Système d’exploitation du serveur Zabbix.........................................................................4
1.3.2 Choix du serveur Web et de la base de données................................................................4
1.3.3 Choix de la version du serveur Zabbix..............................................................................4
2 Installation de Zabbix........................................................................................................................4
2.1 Installation du dépôt de Zabbix.................................................................................................4
2.2 Installation du serveur Zabbix, du serveur Web, de l’agent Zabbix et de la base de données...4
2.2.1 Configuration de sécurité de la base de données...............................................................4
2.3 Création de la base de données de Zabbix.................................................................................5
2.4 Configuration du mot de passe de la BDD pour Zabbix............................................................5
2.5 Configuration du PHP et du front-end Zabbix...........................................................................5
2.6 Démarrage du serveur Zabbix....................................................................................................5
3 Configuration de Zabbix....................................................................................................................7
3.1 Changer la langue de Zabbix.....................................................................................................7
3.2 Gestion des utilisateurs..............................................................................................................8
3.2.1 Groupe d’utilisateurs..........................................................................................................9
3.3 Gestion des notifications............................................................................................................9
3.3.1 Notification par mail..........................................................................................................9
4 Supervision des différents serveurs.................................................................................................10
4.1 Création de groupes d’hôtes....................................................................................................10
4.2 Supervision d’un serveur Web Apache Cent OS 8..................................................................10
4.2.1 Configuration sur la machine supervisée.........................................................................10
4.2.2 Configuration sur le serveur Zabbix................................................................................12
4.2.3 Module httpd mod_status.................................................................................................13
4.2.4 Monitoring des logs d’Apache.........................................................................................14
4.3 Supervision d’un serveur Web NGINX...................................................................................16
4.4 Supervision de Windows Server..............................................................................................17
4.4.1 Supervision du service Active Directory..........................................................................18
4.4.2 Supervision de fichiers logs Windows.............................................................................18
4.5 Monitoring pfSense..................................................................................................................19
4.5.1 Monitoring avancé de pfSense.........................................................................................20
4.6 Supervision d’équipements réseaux Cisco..............................................................................21
5 Tableaux de bords, cartes et écrans..................................................................................................22
5.1 Tableaux de bords....................................................................................................................22
5.2 Cartes.......................................................................................................................................23

2/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
1 Contexte et choix des technologies
1.1 Présentation de l’infrastructure existante

Figure 1: Shéma réseau de l'infrastructure

Comme nous pouvons le voir sur le schéma, notre infrastructure est décomposée en deux parties.
• Une partie purement réseau qui comporte deux routeurs et deux switch. Ces équipements
sont de marque Cisco.
• Une partie virtuelle hébergée sur un hyperviseur VmWare ESXi. Cette partie est découpée
en plusieurs VLAN à l’aide d’un pare-feu pfSense. Dans ces VLAN nous retrouvons
différents serveurs Linux et Windows.

1.2 Quels équipements allons nous superviser


Nous divisons les équipements que nous allons superviser en 4 parties :
• Les équipements réseaux. Ces derniers seront supervisés grâce au protocole SNMP version
3.
• Les serveurs Linux (CentOS 8 / RHEL8), que nous superviseront grâce à un Agent Zabbix.
• Les serveurs Windows (2016), que nous superviseront également grâce à un agent Zabbix.
• Le pare-feu pfSense que nous superviserons grâce à un agent Zabbix pour FreeBSD couplé à
une template spécialement conçue pour superviser pfSense.

3/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
1.3 Choix de la solution qui hébergera Zabbix
1.3.1 Système d’exploitation du serveur Zabbix
Notre serveur Zabbix fonctionnera sur Red Hat Entreprise Linux 8. En effet, notre parc, pour la
partie Linux, fonctionne exclusivement avec des machines Cent OS 8. Ce choix nous permettra
également de disposer d’une sécurité déjà renforcée à l’installation grâce à la présence de Se Linux
et de Firewalld.

1.3.2 Choix du serveur Web et de la base de données


Nous utiliserons un serveur web NGINX, ainsi qu’une base de données Maria DB. Nous préférons
utiliser un serveur Nginx, car notre équipe informatique est tout simplement plus à l’aise sur cette
solution. De même pour Maria DB.

1.3.3 Choix de la version du serveur Zabbix


Nous utiliserons un serveur Zabbix en version 5.0 LTS. En effet Zabbix garantit un support complet
pour Zabbix 5.0 jusqu’en juin 2023.

2 Installation de Zabbix
Pour installer ce serveur Zabbix, nous allons nous référer au guide du site officiel de Zabbix.

2.1 Installation du dépôt de Zabbix


# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-
1.el8.noarch.rpm
# dnf clean all

2.2 Installation du serveur Zabbix, du serveur Web, de l’agent


Zabbix et de la base de données
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-
agent nginx mariadb-server

2.2.1 Configuration de sécurité de la base de données


Nous devons d’abord démarrer le serveur Maria DB :
# systemctl start mariadb

4/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
Nous pouvons ensuite lancer l’installation sécurisée de Maria DB.
# mysql_secure_installation

Avec cette commande, nous pouvons définir un mot de passe pour l’utilisateur root de la BDD,
supprimer l’utilisateur anonyme, désactiver la connexion à distance à la base de données et
supprimer la base de donnée de test.

2.3 Création de la base de données de Zabbix


# mysql -uroot -p
passwordDeRoot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'votreMotDePasse';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

Attention, n’oubliez pas de changer le mot de passe !


# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p
zabbix

2.4 Configuration du mot de passe de la BDD pour Zabbix


vi etc/zabbix/zabbix_server.conf

Remplir la ligne DBPassword=password avec votre mot de passe

2.5 Configuration du PHP et du front-end Zabbix


Vi etc/nginx/conf.d/zabbix.conf
listen 80
server_name zabbix01.berlin.lan
vi etc/php-fpm.d/zabbix.conf
php_value[date.timezone] = Europe/Paris

Ici, on configure Nginx pour que ce dernier lui attribue le port 80 (vous pouvez l’attribuer au port
443 si vous avez déjà une configuration SSL prête). On attribue également le bon fuseau horaire à
PHP.
On ouvre également le port 80 :
# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload

2.6 Démarrage du serveur Zabbix


# systemctl restart zabbix-server zabbix-agent nginx php-fpm mariadb
# systemctl enable zabbix-server zabbix-agent nginx php-fpm mariadb

Nous pouvons ensuite nous connecter à notre serveur Zabbix à l’aide d’un navigateur web.

5/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

Figure 2: Ici nous pouvons vérifier que notre configuration est correct

Ici nous configurons le mot de passe de la BDD. Si jamais nous avions une base de données sur une
machine différente c’est également ici qu’on configurerait cette partie.

Nous pouvons ensuite nous connecter à notre serveur Zabbix, les identifiants par défaut sont :
Admin
zabbix

6/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

3 Configuration de Zabbix
3.1 Changer la langue de Zabbix
Pour changer la langue, rendez-vous dans la section « User Settings ».

7/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

3.2 Gestion des utilisateurs


Nous pouvons ajouter un utilisateur dans la section Administration.

Dans cette section, nous pouvons ajouter des médias. Ces derniers seront utilisés notamment pour
l’alerting. Ici, nous ajoutons un mail qui sera contacté en cas d’incident de sévérité Haut / Désastre.

Dans cette section nous pouvons définir des permissions pour l’utilisateur.

8/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
3.2.1 Groupe d’utilisateurs

Section Administration -> Groupe d'utilisateurs -> Créer un groupe

Nous pouvons également définir des droits d’accès pour les groupes. Ici nous interdisons les
utilisateurs du groupe à accéder à la section Network Devices et à tous les sous groupes qui la
composent.

3.3 Gestion des notifications


3.3.1 Notification par mail
Rendez-vous dans types de média et configurer le média E-mail (HTML) en indiquant un serveur
SMTP. Ici nous utiliserons le serveur SMTP office Gaston Berger.

9/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
On peut ensuite tester l’envoi.

4 Supervision des différents serveurs


Dans cette partie nous allons nous intéresser à la supervision de différents serveurs
(+pfSense), ainsi que des services qui leur sont associés.

4.1 Création de groupes d’hôtes


Nous pouvons créer des groupes pour mieux catégoriser nos hôtes.

4.2 Supervision d’un serveur Web Apache Cent OS 8


4.2.1 Configuration sur la machine supervisée
Tout d’abord, il faut installer le dépôt Zabbix.

10/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-
1.el8.noarch.rpm

Nous pouvons ensuite installer l’agent Zabbix.


# dnf install zabbix-agent2

Une fois l’agent installé, nous pouvons commencer à la configurer. Nous pouvons ouvrir son fichier
de configuration qui se situe ici : /etc/zabbix/zabbix_agent2.conf
Server=ipOuNomDeDomaineDeVotreServeurZabbix
ServerActive=ipOuNomDeDomaineDeVotreServeurZabbix
Hostname=nomDeVotreMachine

Nous allons ensuite configurer du chiffrement. Pour ça nous allons créer un fichier
zabbix_agendtd.psk. Vous pouvez le créer où est-ce que vous voulez, mais faites en sorte que ce
dernier soit accessible par l’utilisateur Zabbix. Attention à ne pas trop l’exposer non plus, en effet la
clé de chiffrement sera contenue en clair dans ce fichier.
Dans ce fichier vous renseignerez une clé de chiffrement généré à l’aide de la commande :
openssl rand -hex 32

Vous allez ensuite de nouveau éditer votre fichier de configuration zabbix_agent2.conf :


TLSConnect=psk
TLSAccept=psk
TLSPSKFile=cheminVersLeFichierDeVotreCleDeChiffrement
TLSPSKIdentity=identiteDeVotreMachine

L’agent Zabbix utilise le port 10 050 par défaut, nous l’ouvrons donc :
firewall-cmd --add-port=10050/tcp --permanent
firewall-cmd –reload

Si jamais vous rencontrez des difficultés avec SeLinux, il peut être nécessaire de re labéliser le
fichier contenant la clé de chiffrement.
chcon -t zabbix_agent_exec_t /etc/zabbix/zabbix_agentd.psk

Si même la re labélisation ne fonctionne pas, il va falloir créer un module SeLinux manuellement.


Pour cela créer un fichier zabbix1.te et remplissez-le comme ceci :
module zabbix1 1.0;
require {
type zabbix_agent_t;
type var_lib_t;
class sock_file write;
}
#============= zabbix_agent_t ==============
allow zabbix_agent_t var_lib_t:sock_file write;

Puis exécutez les commandes suivantes :

11/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
checkmodule -M -m -o zabbix1.mod zabbix1.te
semodule_package -o zabbix1.pp -m zabbix1.mod
semodule -i zabbix1.pp

4.2.2 Configuration sur le serveur Zabbix


Nous pouvons maintenant configurer notre hôte sur l’interface web de Zabbix. Pour cela rendez-
vous dans la partie Hôtes, puis créer un hôte.

Dans la partie hôte vous pouvez remplir différentes sections et informations de bases. Vous pouvez
également spécifier une adresse IP et/ou un nom de domaine et choisir lequel des deux sera utilisé.
Dans la section templates/modèles, vous pouvez spécifier à Zabbix quel type de machine/services il
devra superviser. Dans notre cas :

Enfin dans la partie chiffrement, nous renseignons la clé PSK que nous avons spécifié sur notre
machine, ainsi que l’identité que nous avons renseignée dans le fichier de configuration.

Si votre configuration a été faite correctement, au bout d’une à deux minutes votre hôte devrait
passer dans le vert :

12/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

4.2.3 Module httpd mod_status


Il est possible de pousser un peu plus loin le monitoring d’apache avec le module mod_status. Pour
vérifier que ce dernier est activé vérifiez dans le fichier /etc/httpd/conf.modules.d/00-
base.conf que la ligne LoadModule status_module modules/mod_status.so est
présente et n’est pas commentée.

Il suffit ensuite d’éditer le fichier /etc/httpd/conf/httpd.conf en rajoutant à la fin du


fichier les lignes :
ExtendedStatus On
<location /server-status>
SetHandler server-status
Require host nomDeDomaineDeVotreServeurZabbix
</location>

Après ça, nous pouvons redémarrer apache.


Sur notre interface web Zabbix, dans la section Item cette ligne devrait passer au vert :

Après quelques minutes, Zabbix peut récupérer un grand nombre d’informations supplémentaires
sur le service Apache !

13/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

Nous disposons même de quelques graphiques déjà pré-configurés !

4.2.4 Monitoring des logs d’Apache


Zabbix permet également de monitorer des fichiers logs. Pour ça, la première chose à faire va être
d’ouvrir le port 10 051 en TCP sur notre serveur Zabbix. En effet les envois de fichiers logs sont
envoyés par la machine directement, et il est donc nécessaire d’ouvrir un port sur notre serveur. A
noter que la technique que nous allons utiliser pour monitorer les fichiers logs d’apache fonctionne
pour n’importe quel autre fichier log.

Tout d’abord vérifiez bien que l’IP de votre serveur est bien définie dans la section ServerActive de
votre fichier de configuration Zabbix Agent.
Par défaut sous Cent OS 8, le dossier logs d’apache (/var/log/httpd) et son contenu appartiennent à
l’utilisateur root. L’agent Zabbix ne peut pas y accéder, car il ne fait pas partit du groupe root. Nous
allons donc modifier l’appartenance du dossier afin que ce dernier appartienne à l’utilisateur et au
groupe apache :
# chown -R apache:apache /var/log/httpd

Nous allons ensuite ajouter le groupe apache à l’utilisateur zabbix pour que ce dernier puisse
accéder aux fichiers :
# usermod -a -G apache zabbix

Nous pouvons ensuite redémarrer l’agent Zabbix.


Sur l’interface Web, nous allons créer une application LOG pour notre hôte.

14/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

Une fois cela fait, nous allons créer 2 items comme ceci :
Un premier pour le fichier error_log :

Et un deuxième pour le fichier access.log :

Une fois cela fait, nous allons lancer un test de connexion avec l’outil apache benchmark afin de
créer des nouvelles lignes dans le fichier access.log.

15/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
# ab -n 50 -c 10 http://192.168.3.130/

Si on se rend maintenant dans l’onglet dernières données de Zabbix, nous pouvons constater que
nos fichiers logs bien supervisés :

4.3 Supervision d’un serveur Web NGINX


Je ne re détaillerai pas les étapes d’installations, de configuration sur toutes les machines. Je pars du
principe que vous avez un serveur NGINX, un agent Zabbix fonctionnel ainsi que votre hôte
correctement configuré dans l’interface web Zabbix (template Nginx Zabbix Agent).
Dans un premier temps, nous devons vérifier que le module http_stub_status est installé avec la
commande :
nginx -V 2>&1 | grep -o with-http_stub_status_module

Nous allons ensuite éditer le fichier de configuration /etc/nginx/nginx.conf en ajoutant les lignes
suivantes dans la partie server {} :
location = /basic_status {
stub_status;
allow all;
deny all;
}

On peut ensuite redémarrer le service NGINX.

On récupère davantage de données !

16/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

On récupère également quelques graphiques

4.4 Supervision de Windows Server

Pour télécharger l’agent Zabbix 2, il peut être nécessaire de désactiver la protection internet
renforcée dans les paramètres du serveur local. La configuration est la même que celle sur les
agents Linux, sauf qu’ici elle se fait avec une interface graphique.

Petite astuce pour la clé de chiffrement, on peut utiliser un convertisseur Qwerty / Azerty pour la
coller avec VmWare Workstation.

17/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
On lance ensuite l’installation et on configure l’hôte sur notre interface Zabbix avec la template
« Windows Server By Zabbix Agent ». Au bout de quelques minutes :

4.4.1 Supervision du service Active Directory


Pour superviser le service Active Directory nous allons utiliser la template AD DS Health And
Performance. Pour l’importer, rendez-vous dans Configuration, modèles, importer. Nous importons
ici notre fichier.xml téléchargé. Nous pouvons ensuite ajouter le modèle à notre hôte Windows
Server. Au bout de quelques minutes, nous pouvons voir nos nouvelles données !

On dispose également de quelques graphiques déjà préconçus.

4.4.2 Supervision de fichiers logs Windows


Même procédure que sous Linux, on crée un item dans une application log. La clé :
eventlog[System,,,,,,skip]

18/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

4.5 Monitoring pfSense


Pour monitorer pfSense, nous allons devoir installer le paquetZabbix-agent5 dans le gestionnaire de
paquets. Une fois installé, nous pouvons configurer l’hôte sur l’interface web Zabbix avec le
modèle freeBSD. Il faut également ouvrir le port 10 050.

19/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

4.5.1 Monitoring avancé de pfSense


Actuellement, notre configuration ne supervise pas réellement pfSense, mais plutôt le FreeBSD qui
tourne derrière. Cependant, il existe un moyen de superviser réellement pfSense et qui nous
permettra de surveiller les fonctionnalités propres à pfSense (VPN, CARP, mise à jour dispos des
paquets…). Pour cela nous allons utiliser ce modèle, on peut l’importer dans Zabbix de la même
manière que le précédent. On peut l’ajouter à l’hôte, il faut cependant supprimer la template
FreeBSD avant.
Pour configurer cette template nous allons nous connecter en SSH à notre pfSense (pour l’activer il
faut se rendre dans l’onglet avancé).
mkdir /root/scripts

20/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
curl -o /root/scripts/pfsense_zbx.php
https://raw.githubusercontent.com/rbicelli/pfsense-zabbix-template/master/
pfsense_zbx.php

Ensuite, sur l’interface web nous pouvons aller dans la section Zabbix Agent dans l’onglet services.
On rajoute les options suivantes dans les options avancées :
AllowRoot=1
UserParameter=pfsense.states.max,grep "limit states" /tmp/rules.limits | cut -f4
-d ' '
UserParameter=pfsense.states.current,grep "current entries" /tmp/pfctl_si_out |
tr -s ' ' | cut -f4 -d ' '
UserParameter=pfsense.mbuf.current,netstat -m | grep "mbuf clusters" | cut -f1 -
d ' ' | cut -d '/' -f1
UserParameter=pfsense.mbuf.cache,netstat -m | grep "mbuf clusters" | cut -f1 -d
' ' | cut -d '/' -f2
UserParameter=pfsense.mbuf.max,netstat -m | grep "mbuf clusters" | cut -f1 -d '
' | cut -d '/' -f4
UserParameter=pfsense.discovery[*],/usr/local/bin/php
/root/scripts/pfsense_zbx.php discovery $1
UserParameter=pfsense.value[*],/usr/local/bin/php /root/scripts/pfsense_zbx.php
$1 $2 $3

Normalement, nous avons maintenant accès à des données supplémentaires !

4.6 Supervision d’équipements réseaux Cisco


Ici, nous allons configurer du SNMP version 3 avec du chiffrement SHA/AES. À noter que pour
Zabbix, les clés AES par défaut sont en 128 bits. Pour configurer SNMP, il suffit tout simplement de
créer un hôte, de supprimer l’interface Agent et d’en créer une nouvelle en SNMP. Cette dernière
sera configurée comme sur la capture d’écran ci-dessous et la modèle utilisé est CISCO SNMP.

21/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger
5 Tableaux de bords, cartes et écrans
Chaque élément de cette partie étant assez intuitif, je me contenterai ici juste de montrer quelques
résultats qu’il est possible d’obtenir.

5.1 Tableaux de bords

5.2 Cartes

22/23
PPE – Berlin Hugo Nowacki Lycée Gaston Berger

23/23

Vous aimerez peut-être aussi