Monitorer les windows eventlog dans Zabbix

Dans le précédent article, nous avons vu comment monitorer des services.

Nous allons maintenant aborder un autre point essentiel pour les systèmes windows, le monitoring des journaux d’évènement.

Je vais ici utiliser des réglages de base,ensuite ce sera à vous d’adapter selon vos besoins.

Nous allons donc ici monitorer le log Application.

Comme pour les services, vous pouvez créer un nouvel item directement sur l’hôte(ce que je vais faire ici),ou si vous prévoyez un déploiement plus large, via un template.

Donc créons un nouvel item sur notre hôte windows et remplissons comme suit

les champs précédés de * sont obligatoires

Name: Le nom que vous voulez donner à l’élément,Utilisez quelque chose de parlant.(dans mon cas windows application log)

Type: Permets de sélectionner le type de monitoring, actif ou passif avec l’agent zabbix.Dans le cas des windows event log,le monitoring doit être actif.(Votre agent sur le serveur doit être correctement configuré pour permettre l’utilisation du mode actif)

Key: remplir la valeur suivante eventlog[Application,,,,,,skip]

Application peut être remplacé par le nom des autres journaux windows. 

Ci-dessous,une explication plus détaillée de la syntaxe ,les différents éléments avec lesquels vous pouvez filtrer(j’ai mis les principaux en rouge selon moi.Le premier champ vous permets d’utiliser une regular expression.A savoir que le skip en fin d’expression(pour <mode>) permets d’ignorer l’historique et donc lorsque vous créer un nouvel élément éviter d’importer tous les anciens évènements.

eventlog[name,<regexp>,<severity>,<source>,<eventid>,<maxlines>,<mode>]

Type of information: Choisissez Log.

Update interval: Ici j’ai mis une minute (1m) vous pouvez mettre la valeur que vous désirez.Cela détermine l’intervalle de temps entre deux checks du service.

custom intervals: Je n’aborde pas le point ici, mais cela permet de définir des plages de checks plus flexibles.Par exemple certaines heures/jours seulement etc..

History storage period: Vous pouvez choisir de garder une période définie d’historique, ou de désactiver tout simplement

New application ou application: Remplissez le champ avec le nom de l’application dans lequel vous voulez inclure l’item, ou sélectionnez dans la liste en dessous.Ceci n’est pas obligatoire.Dans mon cas j’ai créé une application windows event log.

Vous pouvez ensuite sauvegarder l’item et assurez-vous que enabled soit coché pour que l’élément soit actif.

Attention,si vous utilisez un proxy zabbix,n’oubliez pas de redémarrer le service zabbix-proxy pour le forcer à récupérer les nouveaux réglages.

Si tout a correctement fonctionné, vous devriez-voir les premiers retours de valeurs sur le nouveau service dans les latest-data du host.

Libre à vous maintenant d’établir les triggers vous pour l’alerting. Attention que les journaux windows peuvent être gourmands en espace de stockage et en nombre de valeurs par secondes à traiter par l’agent.

Monitorer des services windows en startup Manuel dans zabbix

Zabbix est une plateforme de monitoring disponible gratuitement et assez bien fichue.

Evidemment,si vous lisez ces lignes, c’est que vous le savez probablement déjà 😀

Ceci est mon premier article consacré à Zabbix,je continuerai probablement à enrichir ceux-ci ultérieurement.

Donc par défaut ,si vous assignez le template adéquat, tous les services windows en mode de démarrage automatique(ou delayed) seront automatiquement découverts via le discovery inclus dans le template de base.Mais Si vous devez monitorer des services en démarrage manuel, et bien de base, ce n’est pas prévu! (c’est quelque part logique).

Je vais vous décrire ici comment créer un “item” service en mode de démarrage manuel sur un host et y associer un trigger pour l’alerte.Maintenant si avez plusieurs services d’une application sur un même serveur, rien ne vous empêche de créer un template pour mettre les items et les triggers dedans.

Définition d’un nouvel item

1.rendez vous donc dans la partie configuration et sélectionner le host ou se situe le service à monitorer.Il faut bien entendu au préalable que vous ayez noté quelque part le nom du service à monitorer. Et donc sur ce host, créez un nouvel item.

Remplissez les champs comme suit

Les champs précédés d’une * sont obligatoires(cfr capture d’écran)

Name: Le nom de votre service,ou celui par lequel vous voulez qu’il soit affiché dans la liste des items.

Type: Permets de sélectionner le type de monitoring, actif ou passif.Par défaut tout est en passif dans zabbix.

Key: remplir la valeur suivante service.info[nomdevotreservice,state]

La valeur nomdevotreservice devant ici être remplacée par la valeur du service name dans windows.

Type of information: La valeur de l’état du service est retournée en tant qu’entier non signé, donc sélectionnez Numeric(unsigned)

Update interval: Ici j’ai mis une minute (1m) vous pouvez mettre la valeur que vous désirez.Cela détermine l’intervalle de temps entre deux checks du service.

custom intervals: Je n’aborde pas le point ici, mais cela permet de définir des plages de checks plus flexibles.Par exemple certaines heures/jours seulement etc..

History storage period: Vous pouvez choisir de garder une période définie d’historique, ou de désactiver tout simplement

Trend storage period: Même chose que l’history, mais concerne les graphiques de tendance.

Show Value: Sélectionner windows service state

New application ou application: Remplissez le champ avec le nom de l’application dans lequel vous voulez inclure l’item, ou sélectionnez dans la liste en dessous.Ceci n’est pas obligatoire.

Vous pouvez ensuite sauvegarder l’item et assurez-vous que enabled soit coché pour que l’élément soit actif.

Attention,si vous utilisez un proxy zabbix,n’oubliez pas de redémarrer le service zabbix-proxy pour le forcer à récupérer les nouveaux réglages.

Si tout a correctement fonctionné, vous devriez-voir les premiers retours de valeurs sur le nouveau service dans les latest-data du host.

Si vous avez d’autres services sur le même host, il vous suffit de revenir sur l’item que vous venez de créer et de cliquer sur clone.Vous aurez ainsi un nouvel item avec la majorité des champs pré-remplis.Il ne vous restera plus alors qu’à adapter les champs nécessaires.

Définition d’un trigger pour créer une alerte lorsque le service n’est pas démarré.

Vous devriez normalement être toujours au niveau de votre host.Cliquez sur Triggers

Cliquez sur Create trigger en haut à droite.

Maintenant,nous pouvons remplir les informations nécessaires.

Les champs précédés d’une * sont obligatoires(cfr capture d’écran)

Name:indiquez ici le nom de votre trigger,de sorte à ce que ce soit parlant pour des références ultérieures.

Severity: Définissez ici le niveau de sévérité de votre déclencheur.

Expression:Ici nous définissons le critère de déclenchement du trigger.Voici la formule

{Host:service.info[nomdevotreservice,state].min(#3)}<>0

Vous devrez ici remplacer,si ce n’est pas déjà fait Host par le nom du host hébergeant le trigger,nomdevotreservice par le nom du service windows monitoré.Le 0 lui doit rester.

Je vous ai mis le 0 en évidence car c’est cette valeur qui est évaluée sur base du tableau ci-dessous:

Tableau des valeurs retournées par l’agent

Donc dans notre cas, nous le trigger sera déclenché si le test du service retourne une valeur différente de 0.

OK event generation:Détermine le type d’expression qui fera retourner le trigger à l’état OK.Dans notre cas, nous gardons l’expression définie.Ce qui veut dire que si le service renvoie l’état 0, l’ok Event sera généré.Les autres choix sont soit aucun OK event, ou une expression différente de l’expression du déclencheur.

Problem event generation mode:Laissez sur Single.Si vous choisissez Multiple,un trigger sera généré à chaque test tant que pas de OK event.

OK event closes:Laissez sur All problems.

Allow Manual close: Cochez si vous souhaitez pouvoir fermer une alerte dans la console manuellement.

URL: Si vous remplissez ce champ,l’url que vous y mettrez sera visible à plusieurs endroit dans l’interface web

Description: Le champ parle de lui-même.Il sert à documenter votre trigger,fournir des informations sur la résolution etc…

Une fois toutes les infos remplies,cliquez sur Add et votre trigger sera créé.

Comme pour les items, vous pouvez cloner les triggers.

Monter la version Php de 7.2 à 7.4 sous ubuntu(réalisé sur 18.04 LTS)

Php 7.2 N’étant plus officiellement supporté à partir de fin Novembre 2020.Je me suis (enfin) décidé à passer vers Php 7.4.

Vous trouverez donc ci-dessous tout ce que j’ai réalisé pour parvenir à upgrader PHP.

1.Première étape,la plus importante en cas de souci,prendre un backup ou un snapshot de votre machine de telle sorte que vous puissiez revenir en arrière facilement en cas de problème.

2.Lister les modules php installés et sauvegardez la liste quelque part.Cela vous permettra de trouver plus facilement d’éventuels modules manquants après l’upgrade.

Pour lister les modules installés,utilisez la commande php -m

Vous aurez une sortie qui ressemble à ceci:

3.Ajouter les repository nécessaires

Pour ce faire,tapez les commandes suivantes:

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

Maintenant nous sommes prêts pour commencer l’installation.

4.Installer PHP7.4 et ses extensions

Pour installer,tapez la commande suivante

sudo apt install php7.4

Pour installer une extension,c’est simple,la syntaxe est la suivante,remplacer -extension_name par l’extension voulue.

sudo apt install php7.4-extension_name

Il est recommandé d’installer les modules de base,vous pouvez le faire en utilisant la commande suivante

sudo apt install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache php7.4-soap php7.4-zip php7.4-intl -y

Une fois l’installation terminée,on peut facilement valider que 7.4 est bien installé en utilisant la commande php -v

Résultat de la commande php -v

5.Activer PHP7.4 dans apache

Maintenant nous devons dire à apache d’utiliser notre nouvelle version de php.Pour ça,il faut réaliser les opération suivantes

Premièrement nous devons désactiver le module apache utilisé.(dans mon cas 7.2,a changer si vous utilisiez une autre version)

sudo a2dismod php7.2

Maintenant activons le nouveau module apache

sudo a2enmod php7.4

Il ne reste plus maintenant qu’à redémarrer apache(httpd)

sudo systemctl restart apache2

That’s it!

Si maintenant vous souhaitez supprimer l’ancienne version de php,il vous faut utiliser

apt purge php7.2 php7.2-common

VMware guest tools refusant de s’installer Windows server 2016/10

J’ai récemment été confronté à un problème assez ennuyeux.

Suite à une migration chez notre fournisseur cloud au boulot, les VMware guest tools avaient tout bonnement disparu d’une machine.Sans ces intégrations avec le guest OS, c’est tout une partie de l’API cloud de notre fournisseur qui est inutilisable.Impossible donc de rester en l’état.

Le support du fournisseur ne trouvant pas rapidement la solution, j’ai commencé à me pencher sur le cas, et vais donc vous expliquer l’erreur reçue au setup des VG tools et comment je l’ai solutionné.

Tout d’abord, le message d’erreur:

Le fameux message d’erreur…

Le message étant assez explicite, j’ai donc fait appel à mon ami Google pour voir ce qu’il en pensait.

Je suis tombé sur un site intéressant traitant du problème

Je vous conseille d’ailleurs d’aller jeter un oeil la bas en premier lieu.(en anglais)

Si toutes les solutions proposées la bas ne fonctionnent pas, alors vous êtes peut-être dans le même cas que moi.

Le cache de l’installer est peut-être corrompue .

Il suffit alors simplement de vider tout le contenu dans C:\Program Files\Common Files\VMware

Une fois le contenu vidé, le setup arrive a tout installer sans broncher!

Attention ici c’est le chemin pour le setup x64 ,si vous utilisez le setup 32bits,il faudra peut-être adapter celui.

Si vous ne savez plus ou trouver les VMtools,allez voir ici ,c’est le repository officiel de VMware.

Sécuriser un site sur Apache/Ubuntu et obtenir un score de A+ chez Qualys SSL

Tout ceci a été testé sur Ubuntu LTS 1804 et Apache2

1. Obtenir un certificat

A l’heure actuelle il est relativement simple,et surtout gratuitement possible d’obtenir un certificat émis par une autorité de certification reconnue.Tout cela est possible grâce à let’s encrypt

La première étape est donc d’obtenir un certificat pour couvrir votre sous-domaine ou un wildcard pour couvrir l’ensemble du domaine.

Vous trouverez ici toutes les étapes pour déployer le certificat sur votre serveur Apache.Vous verrez c’est relativement simple.

Je vous conseille d’activer la redirection http/https lors du setup.

2. Désactivation des protocoles obsolètes

A l’heure actuelle, par défaut ,Apache autorise encore l’utilisation de tout les protocoles sauf les SSL.Nous allons donc désactiver TLS 1.0 et 1.1 qui ne sont plus surs.

Le répertoire d’apache sous ubuntu se trouve dans /etc/apache2/

Nous allons donc chercher la directive SSLProtocol dans les fichiers de configuration en tapant grep -ri SSLProtocol /etc/

Ci-dessous le retour obtenu chez moi.La dernière ligne peut être ignorée car c’est un fichier .save donc un backup.

/etc/letsencrypt/options-ssl-apache.conf:SSLProtocol             -all +TLSv1.2

/etc/apache2/mods-available/ssl.conf: SSLProtocol -all +TLSv1.2

/etc/apache2/mods-enabled/ssl.conf.save: SSLProtocol all -SSLv3

Bon ci-dessus les paramètres sont déjà corrects.

Vous devez donc éditer les deux fichiers de configuration(ssl.conf et options-ssl-apache.conf) et Pour la ligne SSLProtocol mettre -all +TLSv1.2

SSLProtocol -all +TLSv1.2

Celà fera en sorte de n’utiliser que la dernière version de TLS actuellement.

Si vous souhaitez n’utiliser que des suites de chiffrement fortes, alors vous pouvez aussi mettre les paramètres suivants pour SSLCipherSUite

Le paramètre SSLHonorCipherOrder on oblige le client a utiliser les suites dans l’ordre que nous avons défini sur le serveur.

SSLCipherSUite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256

SSLHonorCipherOrder     on

Une fois les motifs faites,redémarrez apache en utilisant:

sudo systemctl restart apache2

3. Directives HSTS et CAA record (DNS Certification Authority Authorization )

La directive HSTS permets de forcer via votre serveur une connexion sécurisée sur votre site web.

Je vous invite à lire cet article qui explique bien et de manière simple ce que c’est.

Premièrement, assurez-vous que les headers soient actifs sur votre serveur apache.

Pour activer les headers:

sudo a2enmod headers
systemctl restart apache2

Pour activer la directive:

modifier le fichier /etc/apache2/sites-enabled/000-default-le-ssl.conf

ajouter ceci dans le fichier de configuration:

#HSTS directive

Header always set Strict-Transport-Security “max-age=31536000;includeSubDomains;preload”

Redémarrer Apache pour que le changement soit pris en compte.

CAA record:

Définition:DNS Certification Authority Authorization (CAA) est une spécification basée sur le DNS permettant au titulaire d’un nom de domaine de lister les autorités de certification (CA) qui sont autorisées à délivrer des certificats pour ce domaine.

Vous devez donc pour pouvoir créer ce record avoir accès aux records DNS du domaine que vous possédez.

Dans notre cas, l’autorité de certification est let’s encrypt.

Pour un sous domaine nommé “test” par exemple, celà donnera ceci:

test 1800 IN CAA 0 issue "letsencrypt.org"

Pour un certificat wildcard couvrant l’ensemble du domaine exemple.com :

exemple.com 1800 IN CAA 0 issuewild "letsencrypt.org"

Si vous souhaitez être notifié des violations de la police, vous pouvez créer le record ci-dessous qui doit contenir l’adresse mail sur laquelle vous souhaitez être notifié de la violation.

exemple.com CAA 0 iodef "adresse@exemple.com"

Voilà,avec ceci, vous devriez obtenir un grade A+ sur les tests qualys SSL,et une bonne implémentation de TLS sur votre serveur.

Pour sécuriser d’avantage votre serveur web, il existe d’autres headers et directives côté serveur.J’aborderai probablement celles-ci dans un autre article.