Compléments HowToNRPE

Détails sur :
- Désactiver SSL/TLS
- Ajouter des certificats côté serveur
- Les anciens serveurs
This commit is contained in:
Ludovic Poujol 2024-02-22 11:16:19 +01:00
parent 23ab09ebfb
commit 199a231ee6
Signed by: lpoujol
SSH key fingerprint: SHA256:YZbQWfjHONnvIGkFZMs0xRKtqzqGqwtZU+kCOKhZXPA

View file

@ -68,12 +68,26 @@ command[check_mysql]=/usr/lib/nagios/plugins/check_mysql -H localhost -f ~nagios
> *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
~~~
/usr/lib/nagios/plugins/check_nrpe -H 192.0.2.42 -c check_load
# 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;
~~~
@ -109,3 +123,58 @@ 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](https://gitea.evolix.org/evolix/nagios-nrpe-jessie-gbp/commit/b988357a7f58c2f28055f75bd3eec129ee1957bc)) - Cette version patchée est disponible sur notre dépôt [pub.evolix.org](/HowtoDebian/SourcesList)
### 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