wiki/HowtoNRPE.md
Ludovic Poujol 199a231ee6
Compléments HowToNRPE
Détails sur :
- Désactiver SSL/TLS
- Ajouter des certificats côté serveur
- Les anciens serveurs
2024-02-22 11:16:30 +01:00

7.8 KiB

categories title
monitoring Howto NRPE

NRPE (Nagios Remote PluginExecutor) permet d'exécuter de façon légère des commandes prédéfinies sur un serveur distant. Historiquement il est utilisé par NAGIOS pour des « checks » sur un serveur distant. Il peut également être utilisé par Icinga. Il supporte SSL/TLS ce qui permet d'avoir un minimum de sécurité.

Installation

# apt install nagios-nrpe-server monitoring-plugins monitoring-plugins-basic monitoring-plugins-common monitoring-plugins-standard nagios-plugins-contrib

$ /usr/sbin/nrpe --version
NRPE - Nagios Remote Plugin Executor
Version: 4.1.0

# systemctl status nagios-nrpe-server
● nagios-nrpe-server.service - Nagios Remote Plugin Executor
     Loaded: loaded (/lib/systemd/system/nagios-nrpe-server.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-07-28 15:55:54 CEST; 3 days ago
       Docs: http://www.nagios.org/documentation
   Main PID: 549 (nrpe)
      Tasks: 1 (limit: 2356)
     Memory: 1.7M
        CPU: 15ms
     CGroup: /system.slice/nagios-nrpe-server.service
             └─549 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -f

Configuration

Nous utilisons le fichier /etc/nagios/nrpe.d/evolix.cfg pour surcharger la configuration par défaut.

/etc/nagios/nrpe.d/evolix.cfg :

# Allowed IPs
allowed_hosts=192.0.2.42,192.0.2.43

# System checks
command[check_load]=/usr/lib/nagios/plugins/check_load --percpu --warning=0.7,0.6,0.5 --critical=0.9,0.8,0.7
command[check_swap]=/usr/lib/nagios/plugins/check_swap -a -w 30% -c 20%
command[check_disk1]=/usr/lib/nagios/plugins/check_disk -e -w 10% -c 3% -W 10% -K 3% -C -w 5% -c 2% -W 5% -K 2% -p /home -x /lib/init/rw -x /dev -x /dev/shm -x /run -I '^/run/' -I '^/sys/'
command[check_zombie_procs]=sudo /usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=sudo /usr/lib/nagios/plugins/check_procs -w 400 -c 600
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10

# Generic services checks
command[check_smtp]=/usr/lib/nagios/plugins/check_smtp -H localhost
command[check_dns]=/usr/lib/nagios/plugins/check_dns -H evolix.net
command[check_ntp]=/usr/lib/nagios/plugins/check_ntp -H ntp.evolix.net
command[check_ssh]=/usr/lib/nagios/plugins/check_ssh localhost
command[check_mailq]=/usr/lib/nagios/plugins/check_mailq -M postfix -w 10 -c 20

# Specific services checks
command[check_pgsql]=/usr/lib/nagios/plugins/check_pgsql -H localhost -l nrpe -p 'PASSWORD'
command[check_mysql]=/usr/lib/nagios/plugins/check_mysql -H localhost -f ~nagios/.my.cnf
...

Note

: dans des versions précédentes de Debian, il n'était pas vraiment possible de surcharger la configuration : des options en double provoquait une activation aléatoire d'une option ou d'une autre !

Les directives importantes & utiles sont :

  • allowed_hosts : Permet d'énumérer les adresses IP qui sont autorisées à parler avec le daemon NRPE
  • command[CHECK_NAME]=/usr/lib/nagios/plugins/check_XXX : Définis une commande NRPE CHECK_NAME

Principe

Le principe est qu'un démon écoute sur le port TCP/5666 et qu'on peut ainsi exécuter une commande distante définie dans la configuration.

On utilise la commande check_nrpe, celle-ci est distribuée dans le paquet nagios-nrpe-plugin dans Debian

# apt install nagios-nrpe-plugin
$ /usr/lib/nagios/plugins/check_nrpe -V
NRPE Plugin for Nagios
Version: 4.1.0

## Exemple: /usr/lib/nagios/plugins/check_nrpe -H HOTE_NRPE -c CHECK_NAME
$ /usr/lib/nagios/plugins/check_nrpe -H 192.0.2.42 -c check_load
OK - load average: 0.01, 0.01, 0.01|load1=0.012;0.700;0.900;0; load5=0.010;0.600;0.800;0; load15=0.010;0.500;0.700;0; 

Note

: il faut savoir que le check_load lance simplement la commande définie dans la configuration. Cela peut-être un check, mais aussi n'importe quelle commande ou script de son choix !

checks

Même si ce n'est pas directement lié à NRPE, listons quelques checks intéressants.

check_load

Vu l'utilisation massive de plusieurs CPUs, il est très intéressant d'utiliser l'option --percpu qui permet au check de s'adapter tout seul au nombre de CPUs :

$ /usr/lib/nagios/plugins/check_load --percpu --warning=0.7,0.6,0.5 --critical=0.9,0.8,0.7

check_disk

Plusieurs options sont intéressantes :

  • -e : check toutes les partitions mais en cas d'erreur, n'affiche que les partitions qui sont en erreur (WARN, CRIT ou UNKN)
  • -x /run : ignore une partition
  • `-I '^/run/' : ignore les partitions selon un pattern
  • -C -w 5% -c 2% -W 5% -K 2% -p /home : donne des seuils d'alertes différents pour une partition

check_http

Plusieurs options sont intéressantes :

  • -S -H example.com -C 15,5 : vérifie que la validité d'un certificat SSL/TLS est inférieure à 15 jours (WARN) ou 5 jours (CRIT)

Plomberie

Erreur SSL avec le service NRPE sur une ancienne Debian depuis un client NRPE récent (Debian 10+)

Les versions récentes (Debian 10 et suivantes) ont une version plus récente d'OpenSSL, la bibliothèque qui gère le chiffrement TLS de la connexion NRPE. Celle-ci refusera d'établir la connexion chiffrée avec une ancienne version de NRPE, notamment celle présente dans Debian 8 (et plus ancien).

Pour le détail technique, c'est OpenSSL côté client qui refuse de faire un échange Diffie Hellman de 512 bits. Sauf que cette taille de clé est malheureusement codée en dur dans NRPE.

Plusieurs alternatives sont possibles pour continuer de surveiller une ancienne machine :

  • A/ (Déconseillée) Désactiver SSL/TLS pour la communication entre le client et le serveur NRPE
  • B/ Encapsuler l'utilisation de NRPE dans SSH. Le service de monitoring fait une connexion SSH vers l'hôte surveillé pour utiliser la commande check_nrpe localement
  • C/ Patcher le serveur NRPE pour qu'il utilise à place une clé de 2048bits (patch) - Cette version patchée est disponible sur notre dépôt pub.evolix.org

Désactiver SSL/TLS

Nous déconseillons cette configuration, mais c'est possible de désactiver le chiffrement.

Dans le fichier de configuration /etc/default/nagios-nrpe-server, il y a la variable NRPE_OPTS. Il faut la décommenter et rajouter -n pour désactiver SSL et redémarrer le servce.

Attention : ça implique que tous les clients devront désactiver SSL pour communiquer avec le service NRPE.

Côté client, on ajoutera aussi l'option -n pour désactiver l'utilisation de SSL/TLS lors de la connexion :

Exemple : /usr/lib/nagios/plugins/check_nrpe -n -H 192.0.2.42 -c check_load

Configurer un certificat SSL/TLS serveur

Dans la configuration de NRPE, il est possible de configurer un certificat serveur. Ça permet notamment au client de valider l'identité du serveur.

Côté serveur, ça se configure avec les directives suivantes pour donner les fichiers du certificat et la clé privée :

ssl_cert_file=/etc/nagios/cert.pem
ssl_privatekey_file=/etc/nagios/privkey.key

Attention à ce que l'utilisateur nagios ait bien le droit de lecture sur ces fichiers.

Remarque importante : Il semble que check_nrpe ne valide pas la correspondance du CN (CommonName) du certificat avec l'adresse de destination utilisée en argument (le -H) mais seulement la validité du certificat face à la CA utilisée avec l'argument.

Exemple :

## Si la CA de notre PKI est dans /etc/ssl/ca-pki.pem
$ /usr/lib/nagios/plugins/check_nrpe -H 192.0.2.10 -A /etc/ssl/ca-pki.pem -c check_load

Note

: On peut utiliser /etc/ssl/certs/ca-certificates.crt si le certificat est issu d'une autorité de certification classique

FAQ