Table des matières

Introduction

Check_MK est une extension du système de surveillance de Nagios qui permet de créer une configuration basée sur les règles à l'aide d'une interface en Python, ce qui permet de surveiller et facilite d'avantage la gestion de la plateforme.

Il est livré avec un ensemble de contrôles système, une interface utilisateur basée sur “mod_python”, “JavaScript” et un module qui permet un accès rapide au noyau Nagios.

En plus de Nagios, il ajoute des fonctionnalités supplémentaires.

La plateforme est compatible avec les OS : Redhat / Debian / Solaris / Microsoft …

Check_MK Editions

Functionality Raw Edition Enterprise Edition Managed Services Edition
Comprehensive IT monitoring leveraging more than 1500
Hardware / software inventory
Event console – analysis of SysLog, SNMP traps and log files
BI — Business Intelligence
Simple, graphical visualization of time-series metrics data
Interactive views, improved graphics, own graphs, calculations
Creation of PDF-reports
Management of extension packages (MKPs) via the graphical UI
Graphical configuration of the monitoring agents — individually by target device
Execution of automated actions that can be configured graphically
Regularly recurring maintenance downtimes
Optional user interface in German
SLA Reporting

Pré requis

System :

Repository

Network / Firewall

Architecture de la plateforme

L'architecture suivante décrit la mise en place d'un serveur centrale Check_MK ainsi que la mise en place de deux serveurs satellite.

Le serveurs satellite supervise le SI.

Installation de la plateforme Check_MK

Installation des repository EPEL et activation du repository PowerTools

[root@srv ~]# yum install epel-release
[root@srv ~]# yum config-manager --set-enabled PowerTools
[root@srv ~]# yum update

L'installation de la plateforme passe par un simple yum :

[root@srv ~]# yum localinstall https://checkmk.com/support/1.6.0p10/check-mk-raw-1.6.0p10-el8-38.x86_64.rpm
[root@srv ~]# systemctl start omd
[root@srv ~]# systemctl status omd
[root@srv ~]# systemctl enable omd

Nous allons créer une instance Check_MK qui aura pour nom : production

[root@srv ~]# omd create production
Adding /opt/omd/sites/production/tmp to /etc/fstab.
Creating temporary filesystem /omd/sites/production/tmp...OK
Restarting Apache...OK
 
Created new site production with version 1.6.0p10.cre.
 
  The site can be started with omd start production.
  The default web UI is available at http://check-mk.oowy.lan/production/
 
  The admin user for the web applications is cmkadmin with password: vvTB4VNR
  (It can be changed with 'htpasswd -m ~/etc/htpasswd cmkadmin' as site user.
)
  Please do a su - production for administration of this site.

A cette étape, il ne nous reste plus qu'a démarrer notre instance.

[root@srv ~]# omd start production
OK
Starting mkeventd...OK
Starting rrdcached...OK
Starting npcd...OK
Starting nagios...2020-01-27 00:03:23 [6] updating log file index
2020-01-27 00:03:23 [6] updating log file index
OK
Starting apache...OK
Initializing Crontab...O

L'installation est terminée

Rendez-vous à l'url indiquée lors de la création de l'instance production : http://check-mk.oowy.lan/production/

Note:

Dans notre exemple, lors de la création de l'instance, l'installeur créer le user “cmkadmin” et génére un mot de passe par défaut, ici le mot de passe sera : vvTB4VNR

Connecter vous avec les identifiants fournis lors de la création de l'instance.

Une fois connecté sur l'interface de Check_MK, la première action à réaliser et la déclaration du serveur.

Cela va nous permettre de superviser celui-ci et de récupérer tous les métrics par défaut fourni par la plateforme. (cf. Installation Check_MK_Agent )

Configuration de base de la plateforme

Installation Check_MK_Agent

Check_mk fournissant le package pour CentOS et dérivé (Voir l'interface WATO).

Le package xinetd doit être présent sur le système, si ce n'est pas le cas :

[ root@srv ]# yum install xinetd 

Récupérer la dernier version de l'agent directement sur l'interface Web de Check_MK (WATO).

Allez dans la section : WATO - CONFIGURATION > Monitoring Agents.

Récupérer celle correspondant à notre gestionnaire de package.

(Actuellement la version supporté : 1.6.0p10-1)

[ root@srv ]# yum localinstall /var/tmp/check-mk-agent-1.6.0p10-1.noarch.rpm 

Configuration de xinetd

[ root@srv ]# vi /etc/xinetd.d/check_mk 

Déclarer l'adresse IP du serveur Check_mk

#only_from = 127.0.0.1
only_from = <IP_SERVEUR_CHECK_MK> 

Procéder à la relance du daemon xinetd

[ root@srv ]# systemctl restart xinetd

Administration de la plateforme Check_MK

Qu'est-ce que WATO ?

WATO est le nouvel outil d'administration graphique de Check_MK. C'est une interface utilisateur basée sur le Web pour la gestion des hôtes et des services à surveiller avec Check_MK.

L'idée de base de WATO est la suivante: lorsqu'il s'agit de surveillance, une ou plusieurs personnes sont généralement responsables de la configuration et de la maintenance du serveur de surveillance. Ils passent beaucoup de temps avec le système et ses composants internes et n'ont généralement aucune difficulté à éditer des fichiers de configuration basés sur du texte - ou même les préfèrent via une interface graphique.

Cependant, les “utilisateurs” de la surveillance n'ont besoin que de surveiller leurs systèmes mais n'ont pas le temps d'apprendre à écrire des fichiers de configuration valides. Ce n'est pas non plus leur travail. Ainsi, chaque fois qu'ils ont besoin d'une modification de la surveillance - par exemple si un nouveau serveur a été configuré, une configuration de switch a changé ou une instance de base de données a été supprimée - ils demandent à l'équipe de surveillance d'adapter leur configuration en conséquence.

Ces changements constituent une part substantielle de la charge de travail quotidienne de l'équipe de surveillance. WATO vous permet de resoudre ces tâches quotidiennes quotidienne rapidement via une interface graphique. L'équipe de surveillance peut consacrer son temps à son travail actuel : réglage du système, implémentation de nouveaux contrôles, configuration des règles générales, etc.

Enfin, WATO prend en compte le fait que les différents besoins des administrateurs de surveillance et des utilisateurs doivent être reflétés dans l'interface graphique.

Ajout d'un host Linux

Check_mk fournissant le package pour Redhat et dérivé (Voir l'interface WATO).

Le package xinetd doit être présent sur le système, si ce n'est pas le cas :

[ root@srv ]# yum install xinetd

Récupérer le package depuis l'interface WATO.

[ root@srv ]# yum localinstall /var/tmp/check-mk-agent-1.4.0p13-1.noarch.rpm

Configuration de xinetd

[ root@srv ]# vi /etc/xinetd.d/check_mk

Déclarer l'adresse IP du serveur Check_mk

#only_from      = 127.0.0.1 10.0.20.1 10.0.20.2
only_from       = 172.31.4.178

Procéder à la relance du daemon xinetd

[ root@srv ]# service xinetd restart

Ajout d'un host Windows

netsh advfirewall firewall add rule name=“Check_MK Port 6556” dir=in action=allow protocol=TCP localport=6556

Ajout d'un host Solaris

Pré requis : Faire une demande à l'équipe sécurité pour ajouter le serveur dans le groupe proxy : GRP-SRV-CMK-PROXY-SOLARIS

Check_MK ne fournissant pas de package Solaris(pkg), créer manuellement l'arborescence :

[ root@srv ]# mkdir /etc/check_mk
[ root@srv ]# mkdir -p /usr/lib/check_mk_agent/plugins
[ root@srv ]# mkdir /usr/lib/check_mk_agent/local
[ root@srv ]# mkdir -p /var/lib/check_mk_agent/job
[ root@srv ]# mkdir /var/lib/check_mk_agent/cache

Récupérer l'agent sur l'interface d'administration de Check_MK(Link) et déposer celui-ci dans : /usr/bin/

[ root@srv ]# ls -al /usr/bin/check_mk_agent
[ root@srv ]# chmod 775 /usr/bin/check_mk_agent
[ root@srv ]# chown root:TeamSystemUnix /usr/bin/check_mk_agent

Ajouter le port utilisé par l’agent Check_MK dans /etc/services:

[ root@srv ]# vi /etc/services
check_mk        6556/tcp                        # CheckMk

Ajouter la ligne suivante à la fin du fichier /etc/inet/inetd.conf :

Pour Solaris 11 :

[ root@srv ]# vi /etc/inet/inetd.conf
check_mk stream tcp nowait root /usr/sbin/tcpd /usr/bin/check_mk_agent

Pour Solaris 10 :

[ root@srv ]# vi /etc/inet/inetd.conf
check_mk stream tcp nowait root /usr/sfw/sbin/tcpd /usr/bin/check_mk_agent

Convertir le script Check_MK dans SMF (en tant que service).

[ root@srv ]# inetconv

Activer le service

[ root@srv ]# inetconv -e

Vérifier la présence du service

[ root@srv ]# svcs svc:/network/check_mk/tcp:default
STATE          STIME    FMRI
online         12:42:24 svc:/network/check_mk/tcp:default

Vérifier le contenu des fichiers /etc/hosts.allow et /etc/hosts.deny s'ils existent afin d'autoriser le serveur à communiquer avec le client:

[ root@srv ]# echo 'check_mk_agent: IP_SRV_CHECK-MK' >> /etc/hosts.allow

Ajout des packages nécessaires pour installer statgrab (outils supplémentaires pour le monitoring) :

[ root@srv ]# pkgadd -d http://get.opencsw.org/now -x 57.200.111.195:8080
[ root@srv ]# /opt/csw/bin/pkgutil -U
[ root@srv ]# /opt/csw/bin/pkgutil -y -i libstatgrab6
[ root@srv ]# /opt/csw/bin/pkgutil -y -i pm_unix_statgrab
[ root@srv ]# /opt/csw/bin/pkgutil -y -i libstatgrab_utils
[ root@srv ]# ln -s /opt/csw/bin/statgrab /usr/bin/statgrab
[ root@srv ]# svcadm restart svc:/network/check_mk/tcp

La version de check_mk pour Solaris n'intègre pas les états des I/O disques.

Dans ce cas, nous créerons un script qui injectera les données récoltées directement dans check_mk qui les exploitera pour réaliser les graphes nécessaires:

[ root@srv ]# echo '#! /usr/local/bin/bash
[ root@srv ]# > varInterval=5
[ root@srv ]# > varOutput=$(iostat -xn $varInterval 2 | egrep c[0-99]);
[ root@srv ]# > tokens=( $varOutput )
[ root@srv ]# > tokenCount=$(echo ${tokens[*]} | wc -w )
[ root@srv ]# > tokenStart=$(((tokenCount/2)-1))
[ root@srv ]# > tokenInterval=11
[ root@srv ]# > tokenEnd=$((tokenCount))
[ root@srv ]# > for i in $(eval echo {$tokenStart..$tokenEnd..$tokenInterval});
[ root@srv ]# >  do echo 0 disk_busy_${tokens[$i]} percent=${tokens[$i-1]} ${tokens[$i-1]} % average disk utilization last $varInterval seconds;
[ root@srv ]# >     echo 0 disk_latency_${tokens[$i]} ms=${tokens[$i-3]} ${tokens[$i-3]} ms response time average last $varInterval seconds;
[ root@srv ]# > done' > /usr/lib/check_mk_agent/local/disk_iostat.sh

Rafraichir la configuration pour prise en compte de ce nouveau script en commitant le nouveau changement.

Mise à jour de la plateforme Check_MK

La mise à jour de la plateforme se fait facilement et rapidement. Celle-ci se découpe en 2 étapes :

  1. Installation du package RPM
  2. Update de la plateforme

Donc, la mise à jour du RPM ne signifie pas que la mise à jour sera appliquée sur la plateforme.

Installation de la nouvelle version

[root@srv ~]# yum localinstall https://mathias-kettner.de/support/1.4.0p13/check-mk-raw-1.4.0p13-el7-60.x86_64.rpm
Loaded plugins: product-id, rhnplugin, search-disabled-repos, subscription-manager
This system is receiving updates from RHN Classic or Red Hat Satellite.
check-mk-raw-1.4.0p13-el7-60.x86_64.rpm
Examining /var/tmp/yum-root-n_v9jO/check-mk-raw-1.4.0p13-el7-60.x86_64.rpm: check-mk-raw-1.4.0p13-el7-60.x86_64
Marking /var/tmp/yum-root-n_v9jO/check-mk-raw-1.4.0p13-el7-60.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package check-mk-raw-1.4.0p13.x86_64 0:el7-60 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=================================================================================================================================================
 Package Arch Version
=================================================================================================================================================
Installing:
 check-mk-raw-1.4.0p13 x86_64 el7-60
Transaction Summary
=================================================================================================================================================
Install 1 Package
Total size: 424 M
Installed size: 424 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 Installing : check-mk-raw-1.4.0p13-el7-60.x86_64
New default version is 1.4.0p13.cre.
Installing systemd service: omd.init
 Verifying : check-mk-raw-1.4.0p13-el7-60.x86_64
Installed:
 check-mk-raw-1.4.0p13.x86_64 0:el7-60
Complete!

Mise à jour de la plateforme

Sur le serveur Check_MK, vérifier l'état de la plateforme.

[root@srv ~]# omd status
Doing 'status' on site production:
mkeventd: running
rrdcached: running
npcd: running
nagios: running
apache: running
crontab: running
-----------------------
Overall state: running

Avant l'application du patch, il nous faudra arrêter la plateforme.

[root@srv ~]# omd stop production
Removing Crontab...OK
Stopping dedicated Apache for site production....OK
Stopping nagios.....OK
Stopping npcd...OK
Stopping rrdcached...waiting for termination...OK
Stopping mkeventd...killing 61453....OK

Application de la mise à jour.

[root@srv ~]# omd update production
Unmounting temporary filesystem...OK

Valider : <Update!>

┌──────────────────────────────────────────────────┐
│ You are going to update the site production from │
│ version 1.4.0p10.cre to version 1.4.0p13.cre.    │
│ This will include updating all of you            │
│ configuration files and merging changes in the   │
│ default files with changes made by you. In case  │
│ of conflicts your help will be needed.           │
├──────────────────────────────────────────────────┤
│               <Update!> < Abort >                │
└──────────────────────────────────────────────────┘

La mise à jour est terminée.

2017-09-29 14:35:07 - Updating site 'production' from version 1.4.0p10.cre to 1.4.0p13.cre...
Finished update.

On peut redémarrer la plateforme.

[root@srv ~]# omd start production
Creating temporary filesystem /omd/sites/production/tmp...OK
Starting mkeventd...OK
Starting rrdcached...OK
Starting npcd...OK
Starting nagios...2017-09-29 14:35:12 [6] updating log file index
2017-09-29 14:35:12 [6] updating log file index
OK
Starting dedicated Apache for site production...OK
Initializing Crontab...OK

Pour info :

Déployer la nouvelle version de l'agent sur : ( /var/www/html/pub/Accor-Packages/check_mk/ )

Mise à jour des agents

ANNEXE

https://blog.checkmk.com/linux-server-monitoring-five-checkmk-plugins

Chiffrement client / server

Etant donné que la plateforme se trouve dans l'environnement PCI DSS, nous allons mettre en place le chiffrement entre les clients et la plateforme centrale.

Le premier fichier : encryption.cfg

[root@srv ~]# nano /etc/check_mk/encryption.cfg ENCRYPTED=yes PASSPHRASE=xxxXXXXXXXXXXXXXXxxxxxxxxxx Limiter les droit sur le fichier

[root@srv ~]# chmod 400 /etc/check_mk/encryption.cfg

Le second fichier : real_time_checks.cfg

[root@srv ~]# nano /etc/check_mk/real_time_checks.cfg PASSPHRASE=xxxXXXXXXXXXXXXXXxxxxxxxxxx Limiter les droit sur le fichier

[root@srv ~]# chmod 400 /etc/check_mk/real_time_checks.cfg

Redémarrer le service xinetd pour la prise en charge de la nouvelle configuration.

[root@srv ~]# service xinetd restart

Mise en place du Hardening et du HTTPS

Désactivation de virtualhost par default : welcome.conf en diésant toutes les entrées.

[root@srv ~]# nano /etc/httpd/conf.d/welcome.conf #<LocationMatch “^/+$”> # Options -Indexes # ErrorDocument 403 /.noindex.html #</LocationMatch>

#<Directory /usr/share/httpd/noindex> # AllowOverride None # Require all granted #</Directory>

#Alias /.noindex.html /usr/share/httpd/noindex/index.html

Activation de la sécurité de base

[root@srv ~]# nano /etc/httpd/conf.d/security.conf # The ServerTokens directive controls the server response header field which$ ServerTokens Prod

# Configures the footer on server-generated documents ServerSignature Off

# To prevent allows remote attackers to obtain sensitive information like in$ # multipart MIME boundary and child process through Etag header. # This is required to fix for PCI compliance Header unset ETag FileETag None

# Set cookie with HttpOnly and Secure flag # Ensure mod_headers.so is enabled Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure

# Restrict Browser Frame Options # Ensure mod_headers.so is enabled Header always append X-Frame-Options SAMEORIGIN

# X-XSS Protection # Cross Site Scripting (XSS) protection can be bypassed in many browsers. # You can force apply this protection for web application if it was disabled$ # Ensure mod_headers.so is enabled Header set X-XSS-Protection “1; mode=block”

# Disable Trace HTTP Request TraceEnable off

# HostnameLookups off # HostnameLookups add overhead to each request by requesting DNS lookup on t$ # to find the name from the IP address, and then a forward look up to ensure$ # In most cases, you can simply disable this. HostnameLookups off

Changement des droits sur le fichier

[root@srv ~]# chmod 644 /etc/httpd/conf.d/check_mk.conf

Désactivation des modules suivants :

[root@srv ~]# nano /etc/httpd/conf.modules.d/00-dav.conf [root@srv ~]# nano /etc/httpd/conf.modules.d/00-lua.conf [root@srv ~]# nano /etc/httpd/conf.modules.d/01-cgi.conf

Création des certificats

[root@srv ~]# cd /etc/ssl/certs [root@srv ~]# [root@srv ~]# openssl req -new -newkey rsa:2048 -nodes -subj “/CN=check_mk.vauban.priv/O=ACCORHOTELS/C=FR/ST=FRANCE/L=EVRY/OU=DGSIT” -keyout check_mk.vauban.priv.key -out check_mk.vauban.priv.csr Generating a 2048 bit RSA private key …………………………………………………….+++ …………………………………………………………………+++ writing new private key to 'check_mk.vauban.priv.key'


Installation du package mod_ssl

Pour pouvoir faire du https avec apache, nous allons avoir besoin du mod_sll

[root@srv ~]# yum install mod_ssl

Création d'un virtualhost check_mk.conf

[root@srv ~]# nano /etc/httpd/conf.d/check_mk.conf <VirtualHost *:80>

      ServerName check_mk.vauban.priv
      RewriteEngine On
      RewriteCond %{SERVER_PORT}   !^443$
      RewriteRule  ^(.*)  https://%{HTTP_HOST}/$1   [L]

</VirtualHost>

<VirtualHost *:443>

      ServerName check_mk.vauban.priv
      # Enable/Disable SSL for this virtual host.
      SSLEngine on
      # SSL Cipher Suite:
      SSLCipherSuite HIGH:MEDIUM:!ADH:!MD5:!aNULL:!EXPORT40:!EXPORT56
      #SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
      SSLProtocol All -SSLv2 -SSLv3 -TLSv1 TLSv1.1 TLSv1.2
      SSLHonorCipherOrder On
      SSLCompression off
      # Server Certificate:
      SSLCertificateFile    /etc/ssl/certs/check_mk.vauban.priv.crt
      # Server Private Key:
      SSLCertificateKeyFile /etc/ssl/certs/check_mk.vauban.priv.key

</VirtualHost>

Changement des droits sur le fichier.

[root@srv ~]# chmod 644 /etc/httpd/conf.d/check_mk.conf

Création d'un fichier .htaccess (à adapter selon l'environnement)

[root@srv ~]# nano /var/www/html/.htaccess RewriteEngine On RewriteCond %{HTTP_HOST} ^192\.168\.120\.150$ RewriteRule ^(.*)$ https://check_mk.vauban.priv/production/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^(check_mk\.)?vauban\.priv$ [NC] RewriteRule !^production/ /production%{REQUEST_URI} [L,NC]

Modification des droits.

[root@srv ~]# chmod 644 /var/www/html/.htaccess

Redémarrage de la plateforme.

[root@srv ~] # omd su production Last login: Thu Jan 4 22:32:46 CET 2018 on pts/0 OMD[production]:~$ omd restart