Projet 07 : Superviser une infrastructure réseau sécurisée
1. Introduction et objectifs
Dans ce TP, vous allez :
- Mettre en place et configurer un pare-feu (PF) possédant trois interfaces réseau (WAN, LAN, DMZ).
- Déployer un serveur Debian hébergeant WordPress (SRV-WEB) en DMZ.
- Mettre en place un serveur de logs rsyslog (RSYSLOG) sur le LAN.
- Installer et configurer un poste client Windows (PC-CLIENT) sur le LAN.
- Installer un serveur de supervision Nagios XI 2024 (NAGIOS) ou Centreon sur le LAN.
Vous devrez :
- Installer et configurer :
- Un site WordPress (SRV-WEB).
- Un serveur de supervision Nagios XI (NAGIOS) ou Centreon
- Un serveur de logs (RSYSLOG).
- Paramétrer les règles du pare-feu pour autoriser uniquement le trafic nécessaire (HTTP/HTTPS vers SRV-WEB, SSH si besoin, trafic de supervision Nagios...).
- Mettre en place des sondes de supervision pour chaque équipement (CPU, disque, RAM, sessions root, services, etc.).
- Documenter chaque sonde de manière détaillée : nommage, objectif, seuils, action en cas d'alerte, etc.
- Produire trois livrables majeurs :
- Une capture d'écran de l'affichage des services (sondes) dans Nagios XI.
- Un tableau de configuration des sondes (hostname, nom de la sonde, commande de check).
- Une documentation technique (par serveur/poste) récapitulant le nom, l'objectif, le paramétrage et l'action en cas d'anomalie pour chaque sonde.
Le choix du serveur de supervision est vôtre pour le rapport, néanmoins, il est préférable, une fois le projet réalisé sur le premier choix, de le réaliser également sur le second superviseur.
Votre flexibilité quant à la solution retenue est importante. Vous devez être en mesure de configurer n'importe quelle solution de supervision dans un délai raisonnable. Il est donc préférable de vous entraîner a minima sur Nagios XI 2024, Centreon et Zabbix si vous avez un peu de temps.
Concernant le noyau sous-jacent au Pare-feu retenu, j'insiste tout particulièrement sur FreeBSD.
Retenez donc OPNsense ou DynFi.
2. Topologie réseau et configuration IP
La topologie se décompose ainsi :
- Pare-feu (PF) :
- Interface WAN : récupération d'une IP par DHCP pour accès Internet.
- Interface LAN : 10.10.10.1/24.
- Interface DMZ : 10.10.20.1/30.
- RSYSLOG (LAN) :
- Adresse IP : 10.10.10.2/24 (exemple).
- Passerelle : 10.10.10.1.
- DNS : identiques à votre configuration ou ceux du FAI.
- SRV-WEB (DMZ) :
- Adresse IP : 10.10.20.2/30.
- Passerelle : 10.10.20.1.
- DNS : identiques à votre configuration ou ceux du FAI.
- PC-CLIENT (LAN) :
- Adresse IP : 10.10.10.3/24 (exemple).
- Passerelle : 10.10.10.1.
- DNS : identiques à votre configuration ou ceux du FAI.
- NAGIOS (LAN) :
- Adresse IP : 10.10.10.4/24 (exemple).
- Passerelle : 10.10.10.1.
- DNS : identiques à votre configuration ou ceux du FAI.
2.1 Règles du pare-feu
- Autoriser l'accès HTTP/HTTPS depuis le LAN vers le SRV-WEB (DMZ).
- Autoriser le trafic nécessaire pour SSH, supervision Nagios, etc.
- Bloquer tout trafic non indispensable.
3. Installation et configuration des services
3.1 WordPress sur SRV-WEB
- Voir les ressources disponibles en appui du projet pour l'installation et la configuration de Wordpress et de ses dépendances.
3.2 Nagios XI 2024 sur NAGIOS
- Voir les ressources disponibles en appui du projet pour l'installation de Nagios XI 2024
- Une fois installé, l'interface web est accessible via : http://10.10.10.4/nagiosxi.
- Créer/valider le compte administrateur dans l'interface web.
3.3 rsyslog sur RSYSLOG
- Sur Debian, rsyslog doit être dument configuré (voir les ressources disponibles en appui du projet
- Configurer la réception de logs distants en provenance des autres serveurs, de manière ORGANISEE !
4. Supervision Nagios : Principes généraux
Vous devez superviser :
- PF, RSYSLOG, SRV-WEB, NAGIOS (tous sous Linux ou OS équivalent) :
- Utiliser des checks via NRPE, SSH ou SNMP (choix selon vos préférences).
- Exemple de commande SNMP :
check_snmp_load.pl -H -C 'SeCuReMeDiA' -v2c -w 70 -c 90 -f
- PC-CLIENT (Windows) :
- Utiliser NSClient++, NCPA, snmp, ou un autre agent compatible (pour CPU, disque, mémoire).
4.1 Nommage des sondes
Pour une meilleure lisibilité, utilisez un schéma de nommage indiquant les seuils et la ressource. Exemple :
- CPU_w70_c90_1min : check CPU, warning à 70 %, critical à 90 %, intervalle 1 min.
- DISK_C:\_w70_c80 : check disque C:, warning à 70 %, critical à 80 %.
- RAM_w70_c85_1min : check RAM, warning à 70 %, critical à 85 %, intervalle 1 min.
(Vous pouvez adapter le nommage selon votre logique, mais il doit rester lisible pour n'importe quel Administrateur/Technicien !)
5. Sondes recommandées (exemples)
Vous trouverez ci-dessous une liste de sondes classiques. Adaptez si nécessaire, notamment si votre pare-feu est un OS spécialisé (pfSense, ipfire, etc.).
5.1 PC-CLIENT (Windows)
- N°1 - CPU_w70_c90_1min
- Objectif : Vérifier la charge CPU moyenne sur 1 min
- Seuils W/C : W=70% ; C=90%
- Action en cas d'anomalie : Vérifier les processus gourmands. Fermer l'appli incriminée si besoin.
- N°2 - DISK_C:\_w70_c80
- Objectif : Vérifier l'espace dispo sur C:\
- Seuils W/C : W=70% ; C=80%
- Action en cas d'anomalie : Libérer de l'espace, archiver/supprimer des fichiers inutiles.
- N°3 - RAM_w70_c85_1min
- Objectif : Vérifier l'utilisation de la RAM (sur 1 min)
- Seuils W/C : W=70% ; C=85%
- Action en cas d'anomalie : Vérifier les processus ; augmenter la RAM si nécessaire.
5.2 RSYSLOG (Debian)
- N°1 - CPU_w50_c70_15min
- Objectif : Charge CPU moyenne sur 15 min
- Seuils W/C : W=50% ; C=70%
- Action en cas d'anomalie : Analyser la charge sur la durée.
- N°2 - CPU_w60_c80_5min
- Objectif : Charge CPU moyenne sur 5 min
- Seuils W/C : W=60% ; C=80%
- Action en cas d'anomalie : Examiner les processus plus récents, montée en charge plus courte.
- N°3 - CPU_w70_c90_1min
- Objectif : Charge CPU moyenne sur 1 min
- Seuils W/C : W=70% ; C=90%
- Action en cas d'anomalie : Intervention rapide si dépassement critique.
- N°4 - DISK_/_w70_c85
- Objectif : Espace disque sur /
- Seuils W/C : W=70% ; C=85%
- Action en cas d'anomalie : Nettoyer logs, archiver, augmenter partition si besoin.
- N°5 - USERS_root>1
- Objectif : Vérifier nb de sessions root simultanées
- Seuils W/C : >1 connexion root = alerte
- Action en cas d'anomalie : Vérifier s'il y a une autre session root ou problème de sécurité.
5.3 SRV-WEB (Debian + WordPress)
- N°1 - CPU_w50_c70_15min
- Objectif : Charge CPU sur 15 min
- Seuils W/C : W=50% ; C=70%
- Action en cas d'anomalie : Vérifier gros trafic web soutenu ou process lourds.
- N°2 - CPU_w60_c80_5min
- Objectif : Charge CPU sur 5 min
- Seuils W/C : W=60% ; C=80%
- Action en cas d'anomalie : Idem, plus court terme.
- N°3 - CPU_w70_c90_1min
- Objectif : Charge CPU sur 1 min
- Seuils W/C : W=70% ; C=90%
- Action en cas d'anomalie : Réagir vite si dépassement (stopper process anormal).
- N°4 - DISK_/_w70_c90
- Objectif : Espace disque sur /
- Seuils W/C : W=70% ; C=90%
- Action en cas d'anomalie : Vérifier logs Apache, base de données, etc.
- N°5 - HTTPD_1min
- Objectif : Vérifier si Apache (service httpd/apache2) est up
- Seuils W/C : service up/down
- Action en cas d'anomalie : Redémarrer le service, vérifier les logs d'erreur.
- N°6 - INDEX_wordpress_1min
- Objectif : Vérifier l'accessibilité de /wordpress/index.php
- Seuils W/C : code HTTP 200 attendu
- Action en cas d'anomalie : Vérifier la config Apache ou WordPress.
- N°7 - MARIADB_1min
- Objectif : Vérifier si MariaDB est up
- Seuils W/C : service up/down
- Action en cas d'anomalie : Redémarrer, contrôler les logs MySQL/MariaDB.
- N°8 - RAM_w70_c85_1min
- Objectif : Vérifier utilisation RAM
- Seuils W/C : W=70% ; C=85%
- Action en cas d'anomalie : Ajuster la config MySQL/Apache, augmenter la RAM si besoin.
- N°9 - USERS_root>1
- Objectif : Vérifier nb de sessions root simultanées
- Seuils W/C : >1 connexion root
- Action en cas d'anomalie : Vérifier accès non autorisé.
5.4 NAGIOS (Debian + Nagios XI 2024)
Nagios se supervise lui-même :
- N°1 - CPU_w50_c70_15min
- Objectif : Charge CPU moyenne 15 min
- Seuils W/C : W=50% ; C=70%
- Action en cas d'anomalie : Trop de checks simultanés ? Ajuster la planification.
- N°2 - CPU_w60_c80_5min
- Objectif : Charge CPU moyenne 5 min
- Seuils W/C : W=60% ; C=80%
- Action en cas d'anomalie : Réduire la fréquence ou le nombre de checks si nécessaire.
- N°3 - CPU_w70_c90_1min
- Objectif : Charge CPU moyenne 1 min
- Seuils W/C : W=70% ; C=90%
- Action en cas d'anomalie : Stopper checks non critiques si pic de charge important.
5.5 PF (Pare-feu)
- N°1 - CPU_w50_c70_15min
- Objectif : Charge CPU sur 15 min
- Seuils W/C : W=50% ; C=70%
- Action en cas d'anomalie : Vérifier règles iptables, logs, sur une durée longue.
- N°2 - CPU_w60_c80_5min
- Objectif : Charge CPU sur 5 min
- Seuils W/C : W=60% ; C=80%
- Action en cas d'anomalie : Vérifier services, éventuelles tentatives d'intrusion.
- N°3 - CPU_w70_c90_1min
- Objectif : Charge CPU sur 1 min
- Seuils W/C : W=70% ; C=90%
- Action en cas d'anomalie : Bloquer IP malveillantes, limiter le flux si besoin.
- N°4 - DISK_/_w70_c85
- Objectif : Espace disque sur /
- Seuils W/C : W=70% ; C=85%
- Action en cas d'anomalie : Archiver logs, supprimer fichiers temporaires.
- N°5 - USERS_root>1
- Objectif : Sessions root simultanées
- Seuils W/C : >1 = alerte
- Action en cas d'anomalie : Possible intrusion, couper la session suspecte.
6. Livrables attendus
6.1 Capture d'écran des services supervisés
Fournissez une capture d'écran claire de l'interface Nagios XI montrant :
- Les hôtes (PF, RSYSLOG, SRV-WEB, PC-CLIENT, NAGIOS).
- Les services/sondes associés.
- L'état (OK/WARNING/CRITICAL).
(Veillez à avoir configuré et activé chaque sonde au préalable. Tout doit être au vert !)
6.2 Tableau de configuration des sondes
Présentez un tableau en trois colonnes :
- Hostname du serveur / poste
- Nom de la sonde (ex. CPU_w70_c90_1min)
- Commande ou paramètre utilisé dans Nagios (ex. check_snmp_load.pl -H 10.10.10.10 -C 'SeCuReMeDiA' -v2c -w 70 -c 90 -f ou check_nrpe!check_disk_c!70!80)
Exemple :
- Hostname: PC-CLIENT | Nom de la sonde: CPU_w70_c90_1min | Paramètre de configuration: check_nrpe!check_cpu --warning 70 --critical 90 --time=1min
- Hostname: SRV-WEB | Nom de la sonde: DISK_root_w70_c90 | Paramètre de configuration: check_snmp_storage -H 10.10.20.2 -C 'SeCuReMeDiA' -w 70 -c 90
- Hostname: RSYSLOG | Nom de la sonde: USERS_root>1 | Paramètre de configuration: check_users -w 1 -c 1
(Le contenu exact dépendra de votre configuration : NRPE, SNMP, SSH, etc.)
6.3 Documentation technique par serveur
Pour chaque serveur/poste, rédigez un document listant chaque sonde :
- Nom / Numéro : (ex. Sonde n°1, CPU_w70_c90_1min)
- Objectif : (ex. Vérifier la charge CPU sur 1 minute)
- Paramétrage : (ex. seuil warning = 70 %, seuil critical = 90 %)
- Action : (ex. En cas d'alerte critique, identifier le process consommateur et le stopper si nécessaire)
- Capture d'écran de la configuration (si possible)
ou au moins un extrait de la commande Nagios / de l'interface NSClient++.
(Reportez-vous à l'exemple fourni dans la consigne pour la forme.)
7. Conseils et validation
1. Ordre conseillé
- Configurer le pare-feu et la connectivité WAN/LAN/DMZ.
- Mettre en place RSYSLOG, SRV-WEB (WordPress), puis NAGIOS.
- Vérifier la navigation depuis le PC-CLIENT (HTTP vers SRV-WEB).
- Installer et configurer les agents de supervision (NRPE, NSClient++, SNMP...).
- Ajouter les hôtes/services dans Nagios XI.
2. Tests et validations
- Vérifier la remontée d'alarmes CPU (simuler une charge élevée).
- Vérifier l'alerte disque (remplir un disque de manière temporaire).
- Vérifier la remontée d'alerte si Apache ou MariaDB est stoppé.
- Tester la détection de sessions root multiples.
3. Améliorations possibles
- Mettre en place un chiffrement des flux (SNMPv3, NRPE avec SSL).
- Configurer la remontée des journaux sur RSYSLOG.
- Créer des Host Groups et Service Groups dans Nagios pour une présentation plus claire.
- Personnaliser les notifications (templates d'e-mails, escalades, etc.).
Bon courage !