%

Nagios : Monitorer OpenBSD avec httpd + slowcgi

Article publié, le et modifié le
6 minutes de lecture

Cet article contient 1097 mots.
Source brute de l'article :
Commit version : 5b7612d

Description

Nagios est un moniteur d’hôtes et de services conçu pour vous informer sur vos machines clientes, utilisateurs finaux ou gestionnaires.

Le démon de surveillance exécute des contrôles intermittents sur les hôtes et les services que vous spécifiez à l’aide de “plugins” externes qui retournent les informations d’état à Nagios. En cas de problèmes, le démon peut envoyer à des contacts administratifs dans une variété de pays différents par différents biais (courriel, messagerie instantanée, SMS, etc.) des informations sur l’état actuel ; les rapports peuvent tous être consultés par l’intermédiaire d’un navigateur Web.

Documentation

Il est toujours utile de lire les documentations pkg-readmes fournies ; celles disponibles sont dans /usr/local/share/doc/pkg-readmes/, à-propos de :

  • femail-chroot
  • nagios
  • php-7.3

Installation du serveur Nagios

Afin de fonctionner avec le serveur web natif à OpenBSD, dixit httpd(8) , installez les paquets nagios-*-chroot spécifiques pour l’usage avec ce serveur web natif :

Code : sh

# pkg_add nagios-4.3.1p1-chroot nagios-web-4.3.1p2-chroot
quirks-3.182 signed on 2019-11-15T10:35:39Z
nagios-4.3.1p1-chroot:libltdl-2.4.2p1: ok
nagios-4.3.1p1-chroot:monitoring-plugins-2.2p8: ok
useradd: Warning: home directory `/var/www/nagios' doesn't exist, and -m was not specified
nagios-4.3.1p1-chroot: ok
nagios-web-4.3.1p2-chroot:femail-1.0p1: ok
nagios-web-4.3.1p2-chroot:femail-chroot-1.0p3: ok
nagios-web-4.3.1p2-chroot:argon2-20171227: ok
nagios-web-4.3.1p2-chroot:php-7.3.11: ok
nagios-web-4.3.1p2-chroot:php-gd-7.3.11: ok
nagios-web-4.3.1p2-chroot: ok
The following new rcscripts were installed: /etc/rc.d/nagios /etc/rc.d/php73_fpm
See rcctl(8) for details.
New and changed readme(s):
    /usr/local/share/doc/pkg-readmes/femail-chroot
    /usr/local/share/doc/pkg-readmes/nagios
    /usr/local/share/doc/pkg-readmes/php-7.3

Le répertoire web par défaut est /var/www/nagios ; des scripts CGI sont installés dans /var/www/cgi-gin/nagios/.

Femail-chroot

Code : sh

# cd /var/www/
# mkdir -p etc/ssl
# cp /etc/{resolv.conf,hosts,localtime} etc/
# install -m 444 -o root -g bin /etc/ssl/cert.pem /etc/ssl/openssl.cnf /var/www/etc/ssl
# chmod -R 444 etc/*
# chmod -R a+X etc/
# cp /bin/sh /var/www/bin/

Test config nagios

La commande de test de la configuration de nagios est :

Code : sh

$ su -m _nagios -c "/usr/local/sbin/nagios -v /etc/nagios/nagios.cfg"

Exemple :

Code : sh

$ su -m _nagios -c "/usr/local/sbin/nagios -v /etc/nagios/nagios.cfg"

Nagios Core 4.3.1
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 02-23-2017
License: GPL

Website: https://www.nagios.org
Reading configuration data...
   Read main config file okay...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
    Checked 8 services.
    Checked 1 hosts.
    Checked 1 host groups.
    Checked 0 service groups.
    Checked 1 contacts.
    Checked 1 contact groups.
    Checked 24 commands.
    Checked 5 time periods.
    Checked 0 host escalations.
    Checked 0 service escalations.
Checking for circular paths...
    Checked 1 hosts
    Checked 0 service dependencies
    Checked 0 host dependencies
    Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

Ensuite, penser à activer et démarrer le service nagios avec le contrôleur rcctl(8) .

PHP-FPM

  • Le service se nomme : php73_fpm
  • L’outil pour tester la configuration est : php-fpm-73 avec l’option -t, par exemple.

httpd configuration

Le fragment de configuration pour httpd nécessaire est expliqué dans mon article présentant httpd.

Activer les modules

Les commandes suivantes sont à exécuter à chaque installation d’un module PHP, pecl, et opcache :

Code : sh

# cd /etc/php-7.3.sample
# for i in *; do ln -sf ../php-7.3.sample/$i ../php-7.3/; done

OpenSSL Functions

Du fait de la prison /var/www :

Code : sh

# mkdir -p /var/www/etc/ssl
# install -m 444 -o root -g bin /etc/ssl/cert.pem /etc/ssl/openssl.cnf /var/www/etc/ssl/

slowcgi

  • Le service se nomme tout simplement : slowcgi.
  • Les scripts cgi fournis dans /var/www/cgi-bin/ sont accessibles grâce à slowcgi(8) . Ceux de nagios sont fournis dans le répertoire enfant nagios/.

httpd

Ici, je vous renvoie à mon article de découverte du serveur httpd, et tout particulièrement aux informations d’utilisations .

Modification du fichier de configuration /etc/httpd.conf pour y ajouter :

Code : 

include "/etc/httpd.d/nagios.conf"

Création du fichier de config du serveur pour nagios /etc/httpd.d/nagios.conf :

Code : 

server "192.168.1.3" {

    listen on * port 80
    root "/"

    location "/cgi-bin/nagios/*.cgi" {
        authenticate "! Nagios Restricted !" with "/nagios.ht"
        fastcgi socket "/run/slowcgi.sock"
        root "/"
    }

    location "/" {
        authenticate "! Nagios Restricted !" with "/nagios.ht"
        directory index index.php
        root "/nagios"
    }

    location "*.php" {
        fastcgi socket "/run/php-fpm.sock"
        root "/nagios"
    }

}

Il est hautement recommandé de créer une authentification web avec accès restreint !

Création de l’authentification web

Sachant que le compte admin par défaut est nagiosadmin, utilisons l’outil htpasswd :

Code : sh

# htpasswd nagios.ht nagiosadmin

Réfléchissez bien avant de vouloir changer de nom d’administrateur, car il faudra le modifier au moins dans le fichier objects/contacts.cfg

Ensuite, il faut lui donner des droits d’exécution 0400, et utilisateur web www, autrement l’authentification ne se fera pas.

Il est ensuite possible de configurer d’autres utlisateurs, de la même manière auquels un rôle sera attribué, tel que celui d’operator.

Configuration

Tous les fichiers de configuration se trouvent dans /etc/nagios - qui se trouve être un alias de /var/www/etc/nagios :

cgi.cfg

  • Option use_authentication : Seulement le temps de tester que tout fonctionne, il est possible de mettre la valeur à O pour désactiver l’authentification - ATTENTION, c'est une très mauvaise idée de fonctionner sans authentification !
  • Les options authorized_for_* : si vous avez paramétré un rôle particulier, ou tout autre nom d’utilisateur, vous pouvez l’ajouter selon ce qui est désirable d’être utilisé par ce rôle, ou cet utilisateur.
  • Option show_context_help : utile pour avoir une aide contextuelle
  • Il peut être intéressant de configurer les options *_sound qui émettront un son caractéristique lié à l’erreur remontée.
  • Laissez l’option lock_author_names sur la valeur 1 permet d’empêcher le changement de nom d’utilisateur.

nagios.cfg

  • Option admin_email : remplacer la valeur par défaut, par votre courriel.
  • Option date_format : choisir la valeur euro
  • Option use_timezone : paramètrer Europe/Paris

Les fichiers de configuration se trouvent dans le répertoire enfant objects :

contacts.cfg

  • Définition alias : remplacer par un alias d’administration personnalisé, si besoin.
  • Définition contact_name : remplacer par votre identifiant
  • Définition email : remplacer par votre courriel administrateur

Dépannage

Erreur : not have permission to view

Citation :

It appears as though you do not have permission to view information for any of the hosts you requested…

If you believe this is an error, check the HTTP server authentication requirements for accessing this CGI and check the authorization options in your CGI configuration file.
  • Êtes-vous sûr d’avoir créé un utilisateur qui a/aura les droits de regarder la vue en question ?
  • Si oui, êtes-vous sûr d’avoir autorisé l’utilisateur dans les fichiers de configuration, tel celui de cgi.cfg, cf les options authorized_* ?
  • Si oui, êtes-vous sûr d’avoir relancé les différents services, tel httpd ou nagios ?

Cherchez votre oubli !


Autres moniteurs réseaux :