### Installation de Nagios et des sondes ### # Prérequis : Mettre à jour les liens vers les sites de téléchargement dans le fichier sources.list sudo nano /etc/apt/sources.list #modifier les liens de téléchargement qui ont changés : deb http://deb.debian.org/debian bullseye main contrib non-free deb-src http://deb.debian.org/debian bullseye main contrib non-free deb http://security.debian.org/debian-security/ bullseye-security main contrib no.org/debian-security/ bullseye/updates main contrib non-free deb http://deb.debian.org/debian bullseye-updates main contrib non-free deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free deb https://dl.winehq.org/wine-builds/debian/ bullseye main # Enregistrer et mettre à jour la liste sudo apt-get update # Pour Ubuntu: deb http://archive.ubuntu.com/ubuntu/ jammy main restricted deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted deb http://archive.ubuntu.com/ubuntu/ jammy universe deb http://archive.ubuntu.com/ubuntu/ jammy-updates universe deb http://archive.ubuntu.com/ubuntu/ jammy multiverse deb http://archive.ubuntu.com/ubuntu/ jammy-updates multiverse deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted deb http://archive.ubuntu.com/ubuntu/ jammy-security universe deb http://archive.ubuntu.com/ubuntu/ jammy-security multiverse #Mettre à jour la liste sudo apt-get update I - Les Remote hosts (les machines à surveiller - Linux) ## Installer les prérequis suivants : # Installez les librairies Perl sudo apt install libssl-dev # Installez les librairies graphiques sudo apt-get install libpng-dev libjpeg-dev libgd-dev -y # Installez les outils de compilation standards sudo apt-get install gcc make autoconf libc6 unzip -y 1) Installer les plugins Nagios sur les machines à surveiller mkdir ~/downloads cd ~/downloads wget http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz tar xzf nagios-plugins-2.2.1.tar.gz cd nagios-plugins-2.2.1 ./configure make make install useradd nagios groupadd nagios usermod -a -G nagios nagios chown nagios:nagios /usr/local/nagios chown -R nagios:nagios /usr/local/nagios/libexec 2) Installer le demon NRPE sur les machines à surveiller cd ~/downloads wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe- 3.2.1/nrpe-3.2.1.tar.gz tar xzf nrpe-3.2.1.tar.gz cd nrpe-nrpe-3.2.1 ./configure make all make install make install-config make install-init sudo systemctl enable nrpe && sudo systemctl start nrpe netstat -at | egrep "nrpe|5666" #Test /usr/local/nagios/libexec/check_nrpe -H localhost 3) Exécuter manuellement les commandes sur les machines à surveiller /usr/local/nagios/libexec/check_nrpe -H localhost -c check_mem /usr/local/nagios/libexec/check_nrpe -H localhost -c check_load /usr/local/nagios/libexec/check_nrpe -H localhost -c check_hda1 /usr/local/nagios/libexec/check_nrpe -H localhost -c check_http /usr/local/nagios/libexec/check_mem -w 20 -c 10 /usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c.30,.25,.20 /usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/ /usr/local/nagios/libexec/check_http -H localhost /usr/local/nagios/libexec/check_mem -w 50 -c 45 /usr/local/nagios/libexec/custom_check_mem -w 20 -c 10 /usr/local/nagios/libexec/check_http -H localhost -w 0,1 -c 0,2 -u var/www/html/index.php II - le Monitoring Host (le Serveur de Supervision Nagios) Trois choses à faire : - Installer le plugin check_nrpe - Créer une commande Nagios pour utiliser le plugin check_nrpe - Créer les définitions des hosts et des services pour le monitoring 1) Installer le pluging check_nrpe cd ~/downloads wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe- 3.2.1/nrpe-3.2.1.tar.gz tar xzf nrpe-3.2.1.tar.gz cd nrpe-nrpe-3.2.1 ./configure make check_nrpe make install-plugin # Test vers les remote host /usr/local/nagios/libexec/check_nrpe -H 192.168.0.12 /usr/local/nagios/libexec/check_nrpe -H 192.168.0.16 /usr/local/nagios/libexec/check_nrpe -H 192.168.0.20 2) Créer une définition de commande pour la machine à surveiller Serveur Web: sudo nano /usr/local/nagios/etc/commands.cfg define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } # On va ajouter des services qui doivent être surveillés sur la machine distante à la configuration Nagios… 3) Créer des définitions d'hôte et de service #Il faut créer des définitions d'objets afin de surveiller la machine Linux/Unix distante. #Ces définitions peuvent être placées dans leur propre fichier ou ajoutées à un fichier de configuration d'objets déjà existant. #Il est préférable de créer un nouveau modèle pour chaque type d'hôte que vous allez surveiller. #Créer un nouveau modèle pour les boîtes linux: define host{ name linux-box ; Nom de ce modèle use generic-host ; Hériter des valeurs par défaut check_period 24x7 check_interval 2 retry_interval 2 max_check_attempts 2 check_command check-host-alive notification_period 24x7 notification_interval 2 notification_options d,r contact_groups admins register 0 ; NE PAS ENREGISTRER CECI - C'EST UN MODELE } #Définir un nouvel hôte pour la boîte Linux/Unix distante qui référence le modèle d'hôte linux-box nouvellement créé: define host{ use linux-box ; Hériter des valeurs par défaut d'un modèle host_name Serveur Web ; Le nom que nous donnons à ce serveur alias Linux Ubuntu ; Un nom plus long pour le serveur address 192.168.0.12 ; Adresse IP du serveur contact_groups admins notifications_enabled 1 } #Définir ensuite quelques services pour surveiller la boîte Linux/Unix distante. #Ces exemples de définitions de services utiliseront les commandes exemple qui ont été définies dans le fichier nrpe.cfg sur l'hôte #distant: define service{ use generic-service host_name Serveur Web service_description Charge CPU check_command check_nrpe!check_load contact_groups admins notifications_enabled 1 } define service{ use generic-service host_name Serveur Web service_description Espace libre check_command check_nrpe!check_disk contact_groups admins notifications_enabled 1 } define service{ use generic-service host_name Serveur Web service_description Charge Web check_command check_nrpe!check_http contact_groups admins notifications_enabled 1 } define service{ use generic-service host_name Serveur Web service_description Charge Mémoire check_command check_nrpe!check_mem contact_groups admins notifications_enabled 1 } 4) #Vérifiez vos fichiers de configuration Nagios: /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 5)Redémarrer Nagios systemctl restart nagios PS : Pour surveiller un nouveau service sur un hôte distant en utilisant l'addon NRPE on doit faire deux choses : 1. Ajouter une nouvelle définition de commande au fichier "nrpe.cfg" sur l'hôte distant 2. Ajouter une nouvelle définition de service à votre configuration Nagios sur l'hôte de surveillance (serveur Nagios) a) #Exécutez manuellement chaque plugin sur la machine à surveiller (compte nagios): ex: su - nagios /usr/local/nagios/libexec/check_mem -w 20% -c 10% b) nano /usr/local/nagios/etc/nrpe.cfg command[check_mem]=/usr/local/nagios/libexec/check_mem -w 20% -c 10% c) systemctl restart nrpe d) #Configuration de l'hôte de surveillance (serveur Nagios): define service{ use generic-service host_name Serveur Web service_description Utilisation de la mémoire check_command check_nrpe!check_mem } e) #Vérifier et redémarrer nagios /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg systemctl restart nagios #### Informations complémentaires #### sudo apt update sudo apt install libssl-dev ./configure --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu allowed_hosts=127.0.0.1,192.168.0.12 sudo ufw allow 5666/tcp sudo ufw reload sudo iptables -F sudo iptables -A INPUT -p tcp --dport 5666 -j ACCEPT sudo iptables-save # Désactiver IPtables sudo iptables -F sudo iptables -t nat -F sudo iptables -t mangle -F #Définir les politiques par défaut sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT #Désactiver netfilter-persistent sudo systemctl disable netfilter-persistent #### Pour Windows #### # Installation de NSClient++ sur la machine Windows : https://github.com/mickem/nscp/releases/tag/0.9.4 Installation : Exécutez le programme d'installation téléchargé. Suivez les instructions de l'assistant d'installation. Assurez-vous de sélectionner les modules nécessaires pour la surveillance (par exemple, CheckSystem, CheckDisk, CheckEventLog, etc.). Configuration : Après l'installation, le fichier de configuration nsclient.ini se trouve généralement dans le répertoire d'installation de NSClient++ (par exemple, C:\Program Files\NSClient++). Modifiez le fichier "nsclient.ini" pour configurer les modules et les paramètres de surveillance. Par exemple, vous pouvez configurer les vérifications de l'utilisation du CPU, de la mémoire, des disques, etc. Exemple de configuration de base : [/settings/default] allowed hosts = 127.0.0.1, 192.168.0.19 [/modules] CheckSystem = enabled CheckDisk = enabled CheckEventLog = enabled Démarrage du service : ! Pour créer les autres modules voir plus bas ! Assurez-vous que le service NSClient++ est démarré. Vous pouvez le faire via les services Windows ou en utilisant la commande suivante dans l'invite de commandes (exécutée en tant qu'administrateur) : net start nsclientpp 2. Configuration de Nagios sur le serveur de surveillance Installation du plugin check_nt : Sur le serveur Nagios, assurez-vous que le plugin check_nt est installé. Ce plugin est généralement inclus avec les plugins Nagios standard. Définition des commandes : # Ajoutez une définition de commande dans le fichier de configuration des commandes Nagios (commands.cfg) pour utiliser le plugin check_nt. Exemple de définition de commande : define command { command_name check_nt command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$ } # Définition des services : Ajoutez des définitions de service dans le fichier de configuration des services Nagios pour surveiller les ressources de la machine Windows. Exemple de définition de service pour surveiller l'utilisation du CPU : define service { use generic-service host_name Serveur ADDC service_description CPU Load check_command check_nt!CPULOAD!-l 5,80,90 } Exemple de définition de service pour surveiller l'utilisation du disque : define service { use generic-service host_name Serveur ADDC service_description Disk Usage check_command check_nt!USEDDISKSPACE!-l C -w 80 -c 90 } # Redémarrage de Nagios : Après avoir ajouté les définitions de commande et de service, redémarrez Nagios pour appliquer les changements. sudo systemctl restart nagios 3. Vérification et dépannage Vérification des connexions : Assurez-vous que le serveur Nagios peut communiquer avec la machine Windows sur le port configuré (par défaut, 12489 pour NSClient++). Tests manuels : Vous pouvez effectuer des tests manuels en utilisant le plugin check_nt depuis la ligne de commande sur le serveur Nagios pour vérifier que les vérifications fonctionnent correctement. /usr/local/nagios/libexec/check_nt -H 192.168.0.20 -p 12489 -v CPULOAD -l 5,80,90 # Consultation des logs : Consultez les logs de NSClient++ sur la machine Windows et les logs de Nagios sur le serveur de surveillance pour dépanner les éventuels problèmes. ### Créer les modules supplémentaires et modifier le fichier "nsclient.ini" après : 1. Surveillance de la Mémoire Activer le module CheckSystem : Assurez-vous que le module CheckSystem est activé dans le fichier de configuration nsclient.ini. [/modules] CheckSystem = enabled Configurer la vérification de la mémoire : Ajoutez une section pour configurer les vérifications de la mémoire. [/settings/system/windows] check memory = warn=80% crit=90% 2. Surveillance HTTP Activer le module CheckExternalScripts : Le module CheckExternalScripts permet d'exécuter des scripts externes pour des vérifications personnalisées, y compris HTTP. [/modules] CheckExternalScripts = enabled Configurer la vérification HTTP : Vous pouvez utiliser un script PowerShell ou un plugin personnalisé pour vérifier HTTP. Par exemple, vous pouvez utiliser check_http de Nagios, mais vous devrez l'adapter pour Windows. Exemple de script PowerShell pour vérifier HTTP : $url = "http://example.com" $request = try { Invoke-WebRequest -Uri $url -Method Head $true } catch { $false } if ($request) { Write-Host "HTTP OK: $url is accessible" exit 0 } else { Write-Host "HTTP CRITICAL: $url is not accessible" exit 2 } Sauvegardez ce script dans un fichier, par exemple check_http.ps1, et configurez NSClient++ pour l'exécuter. Copier [/settings/external scripts/scripts] check_http = cmd /c echo scripts\check_http.ps1; exit $lastexitcode | powershell.exe -command - 3. Surveillance PING Activer le module CheckSystem : Le module CheckSystem peut également être utilisé pour des vérifications PING. [/modules] CheckSystem = enabled Configurer la vérification PING : Ajoutez une section pour configurer les vérifications PING. [/settings/system/windows] check ping = warn=100,5% crit=200,10% 4. Surveillance LDAP Activer le module CheckExternalScripts : Utilisez le module CheckExternalScripts pour exécuter des scripts personnalisés pour LDAP. [/modules] CheckExternalScripts = enabled Configurer la vérification LDAP : Vous pouvez utiliser un script PowerShell pour vérifier LDAP. Voici un exemple de script pour vérifier la connectivité LDAP : Copier $ldapServer = "ldap://zimbra.univ-poitiers.fr" $ldapConnection = try { New-Object DirectoryServices.DirectoryEntry($ldapServer) $true } catch { $false } if ($ldapConnection) { Write-Host "LDAP OK: Connection to $ldapServer successful" exit 0 } else { Write-Host "LDAP CRITICAL: Connection to $ldapServer failed" exit 2 } Sauvegardez ce script dans un fichier, par exemple check_ldap.ps1, et configurez NSClient++ pour l'exécuter. Copier [/settings/external scripts/scripts] check_ldap = cmd /c echo scripts\check_ldap.ps1; exit $lastexitcode | powershell.exe -command - 5. Redémarrer NSClient++ Après avoir configuré les modules et les vérifications, redémarrez le service NSClient++ pour appliquer les changements. net stop nsclientpp net start nsclientpp 6. Configuration de Nagios Enfin, configurez Nagios pour utiliser ces vérifications en ajoutant les définitions de service appropriées dans votre configuration Nagios, comme décrit précédemment. ### Erreur pour relancer la programmation Schedule #Error: Could not open command file '/usr/local/nagios/var/rw/nagios.cmd' for update! usermod -a -G nagios nagcmd chmod 666 /usr/local/nagios/var/rw/nagios.cmd chown nagios:nagcmd /usr/local/nagios/var/rw chmod u+rwx /usr/local/nagios/var/rw chmod g+rwx /usr/local/nagios/var/rw chmod g+s /usr/local/nagios/var/rw