Nagios1 est un logiciel de surveillance qui couvre un vaste éventail d’entités, des applications individuelles aux réseaux entiers. Nagios n’est pas un système de détection d’intrusion, en fait nagios est un système de surveillance des ressources, il surveille la disponibilité de certaines ressources et services sur un hôte ou un réseau. Il rend tout cela dans un format lisible par l’homme et peut être programmé pour prendre certaines actions lors de certains événements.

Installation

L’installation se fera à partir des sources. Je vais suivre les étapes du tutoriel de M. Jean Gautier.

sudo su -
apt update
apt install -y autoconf gcc libc6 make wget unzip apache2 apache2-utils php libgd-dev openssl
apt install -y libssl-dev snmp mailutils php-apcu libmcrypt-dev bc gawk dc build-essential libnet-snmp-perl gettext avahi-daemon

Une fois les outils de construction et les dépendances installés, je télécharge les fichiers source:

cd /usr/src
wget -O nagioscore.tar.gz https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.6.tar.gz
wget -O nagios-plugins.tar.gz https://nagios-plugins.org/download/nagios-plugins-2.4.3.tar.gz
wget --no-check-certificate -O vshell.tar.gz https://assets.nagios.com/downloads/exchange/nagiosvshell/vshell.tar.gz

Une fois cela fait, je vais décompresser les fichiers pour le déploiement.

ls
nagios-plugins.tar.gz  nagioscore.tar.gz  vshell.tar.gz
tar -zxf nagioscore.tar.gz
tar -zxf nagios-plugins.tar.gz
tar -zxf vshell.tar.gz

Puis on rentre dans chaque répertoire pour compiler et installer :

cd nagioscore-nagios-4.4.6/
./configure --with-httpd-conf=/etc/apache2/sites-enabled
make all

options-install

Avant d’installer le noyau, nous devrons faire d’autres commandes :

cd ../nagios-plugins-2.4.3/
./configure
make && make install
cd ../nagioscore-nagios-4.4.6/
make install-groups-users && usermod -a -G nagios www-data

Installation du noyau et de ses modules :

make install
make install-daemoninit
make install-commandmode
make install-config

Installation et configuration de l’interface Web :

make install-webconf
a2enmod rewrite && a2enmod cgi

Création du compte administrateur de nagios (nagiosadmin)

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Activation et démarrage des services :

systemctl enable --now nagios.service
systemctl enable --now apache2.service

Modification du fichier source /usr/src/vshell/install.php

nano /usr/src/vshell/install.php

install.php

Exécution du script d’installation :

/usr/src/vshell/install.php
systemctl restart apache2

Et le nettoyage après installation :

rm -rf vshell nagioscore-nagios-4.4.6 nagios-plugins-2.4.3

Configuration

Et nous voici : nagios-fp

Je vais vérifier si le plugin nagios local fonctionne avant d’en ajouter d’autres. Ce sera le menu hôte :

hosts

Les fichiers de configuration pour nagios se trouvent dans “/usr/local/nagios/etc/”:

ls -ahl /usr/local/nagios/etc/
total 84K
drwxrwxr-x 3 nagios nagios 4.0K Mar  1 08:47 .
drwxr-xr-x 8 root   root   4.0K Mar  1 08:44 ..
-rw-rw-r-- 1 nagios nagios  14K Mar  1 08:44 cgi.cfg
-rw-r--r-- 1 root   root     50 Mar  1 08:47 htpasswd.users
-rw-rw-r-- 1 nagios nagios  45K Mar  1 08:44 nagios.cfg
drwxrwxr-x 2 nagios nagios 4.0K Mar  1 09:06 objects
-rw-rw---- 1 nagios nagios 1.3K Mar  1 08:44 resource.cfg

Le sous-répertoire objects contient les modèles pour d’autres types de machines que nous pouvons ajouter ainsi que des configurations plus granulaires. J’ai déjà préparé un nouveau dossier pour conserver les fichiers de configuration des nouveaux hôtes que je vais ajouter “serveurs-linux”.

ls -hl /usr/local/nagios/etc/objects/
total 56K
-rw-rw-r-- 1 nagios nagios 6.6K Mar  1 08:44 commands.cfg
-rw-rw-r-- 1 nagios nagios 1.8K Mar  1 09:06 contacts.cfg
-rw-rw-r-- 1 nagios nagios 4.7K Mar  1 08:44 localhost.cfg
-rw-rw-r-- 1 nagios nagios 3.0K Mar  1 08:44 printer.cfg
drwxr-xr-x 2 root   root   4.0K Mar  1 09:19 serveurs-linux
-rw-rw-r-- 1 nagios nagios 3.5K Mar  1 08:44 switch.cfg
-rw-rw-r-- 1 nagios nagios  13K Mar  1 08:44 templates.cfg
-rw-rw-r-- 1 nagios nagios 3.5K Mar  1 08:44 timeperiods.cfg
-rw-rw-r-- 1 nagios nagios 4.0K Mar  1 08:44 windows.cfg

Nous devons également modifier le fichier nagios.cfg pour ajouter le nouveau dossier en tant que dossier de configuration qui sera inclus au démarrage.

nano /usr/local/nagios/etc/nagios.cfg

nagios-conf

Et j’ajouterai les fichiers suivants :

nano /usr/local/nagios/etc/objects/serveurs-linux/hosts.cfg
define host{
use linux-server
host_name nagios
alias Serveur Nagios
address 127.0.0.1
}

define host{
use linux-server
host_name ubuntu-web
alias srv-http
address 192.168.0.211
}

define host{
use linux-server
host_name ubuntu-samba
alias srv-samba
address 192.168.0.77
}

nano /usr/local/nagios/etc/objects/serveurs-linux/groups.cfg
define hostgroup {
hostgroup_name linux_servers
alias Serveurs Linux
members ubuntu-web,ubuntu-samba
}

;define hostgroup {
; hostgroup_name clients
; alias Machines clientes Linux
; members pc1,pc2
; }



nano /usr/local/nagios/etc/objects/serveurs-linux/services.cfg
define service{
use local-service
host_name ubuntu-web, ubuntu-samba
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

Et un redemarage du service:

service nagios restart

Donc, pour que cela fonctionne, nous devons en fait installer un plugin sur les machines ciblées qui communiquera avec le serveur nagios. Nous en avons déjà installé une partie sur le serveur nagios, maintenant je vais l’installer sur les machines que j’ai déclarées dans le fichier may hosts.cfg.

sudo apt install nagios-nrpe-server

Et éditez le /etc/nagios/nrpe.cfg

# l'adresse du serveur nagios
allowed_hosts=192.168.0.215,::1
# mes disques spécifiques
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_sda3]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda3
command[check_md127]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/md127
command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200

Et sur le serveur nous allons installer :

apt-get install nagios-nrpe-plugin

Je vais tester le plugin :

/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.77
NRPE v4.0.3
/usr/lib/nagios/plugins/check_nrpe -H 192.168.0.77 -c check_sda3
DISK OK - free space: /dev 1158 MB (100% inode=99%);| /dev=0MB;926;1042;0;1158

Pour intégrer le nouveau plugin, je vais modifier le fichier command.cfg et ajouter ce qui suit :

nano /usr/local/nagios/etc/objects/commands.cfg

##Commande check_nrpe
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Et aussi le fichier services.cfg dans le dossier serveur-linux :

### LINUX SERVICES DEFINITIONS ####
##Check PING
define service{
use local-service
host_name ubuntu-samba, ubuntu-web, localhost
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}

##Check NRPE sda1
define service{
use local-service
host_name localhost
service_description sda1
check_command check_nrpe!check_sda1
}

##Check NRPE sda3
define service{
use local-service
host_name ubuntu-samba,ubuntu-web,
service_description sda3
check_command check_nrpe!check_sda3
}

##Check NRPE md127
define service{
use local-service
host_name ,ubuntu-samba
service_description md127
check_command check_nrpe!check_md127
}


##Check NRPE users
define service{
use local-service
host_name ubuntu-samba,ubuntu-web,localhost
service_description Users
check_command check_nrpe!check_users
}

##Check NRPE load
define service{
use local-service
host_name ubuntu-samba,ubuntu-web,localhost
service_description Load
check_command check_nrpe!check_load
}

##Check NRPE total procs
define service{
use local-service
host_name localhost, ubuntu-samba, ubuntu-web
service_description Total Procs
check_command check_nrpe!check_total_procs
}

## Check NRPE zombie procs
define service{
use local-service
host_name localhost,ubuntu-samba,ubuntu-web
service_description Zombie Procs
check_command check_nrpe!check_zombie_procs
}

En suite un redemarage du service:

service nagios restart

Résultat

Nous avons une solution de surveillance fonctionnelle :

service-status Comme je le vois, je dois prendre soin de certains des avertissements.