9. Utilisation des données d’audit dans les plugins pour la conformité des paquets WAPT et pour les services externes
¶
9.1. Afficher les données d’audit de la machine dans la Console WAPT
¶
Vous pouvez gérer la sortie d’audit et afficher le résultat de l’audit si vous activez l’option dans l’onglet Afficherl’onglet des données d’audit de la machine pour voir l’onglet Données d’audit sur chaque client.
. Cochez l’option
Fenêtre affichant les préférences avancées¶
Pour utiliser les audits dans les paquets WAPT, visitez cette page pour gérer les données d’audit.
9.1.1. Afficher les données chiffrées avec un certificat dans l’onglet des données d’audit¶
Avec la fonction d’audit, il est possible de chiffrer les données sensibles provenant de machines distantes ; il sera possible de lire les données sensibles chiffrées avec un certificat installé sur la machine de l’administrateur WAPT. De cette façon, le Serveur WAPT peut déposer des données sensibles d’inventaire sans que le serveur devienne un bien sensible.
Cette méthode est particulièrement utile par exemple pour gérer en toute sécurité les mots de passe aléatoires LAPS dans WAPT.
Dans setup.py
, vous pouvez utiliser une fonction pour chiffrer des données avec un certificat. Si vous disposez de la clé privée correspondant au certificat utilisé pour chiffrer les données, celles-ci seront déchiffrées et apparaîtront sous une forme lisible.
Voici un exemple de code :
# -*- coding: utf-8 -*-
from setuphelpers import *
from waptcrypto import print_encrypted_data
def audit():
randompassword = '1234'
print_encrypted_data(randompassword, glob.glob('*.crt'))
Ce code va chiffrer le mot de passe 1234 avec tous les certificats présents sur la machine qui est utilisée pour gérer WAPT. Depuis la Console WAPT, vous verrez dans l’onglet Données d’audit la version chiffrée et vous pourrez déchiffrer les données avec la clé privée associée au certificat public qui a été utilisé pour chiffrer les données.

9.2. Synchroniser les inventaires de WAPT vers GLPI
¶
9.2.1. Principe de fonctionnement¶
WAPT Enterprise propose une synchronisation entre les inventaires de vos postes et le logiciel GLPI , un ITSM.
Cette méthode synchronise automatiquement les changements sur votre parc informatique avec le serveur GLPI.
WAPT peut se synchroniser avec GLPI 10 en utilisant l’API JSON native. WAPT peut se synchroniser avec GLPI version 9.x en utilisant le plugin FusionInventory au format XML.
Attention
GLPI par WAPT ne fonctionne pas avec l’authentification Kerberos pour GLPI.
Si vous utilisez Kerberos pour GLPI, excluez glpi/plugins/fusioninventory/
de l’authentification Nginx.
Avertissement
Si vous rencontrez des problèmes avec le serveur GLPI qui ne reçoit pas certaines parties des inventaires, vous pouvez installer le paquet tis-audit-glpi-inventory sur les clients. De cette façon, vous obtiendrez l’inventaire officiel de GLPI.
9.2.2. Installer les dépendances requises pour GLPI 9.x¶
Afin de recevoir des inventaires sur le serveur GLPI, le plugin FusionInventory devra être installé sur le serveur GLPI. Ceci n’est pas nécessaire pour GLPI 10 qui a sa propre API JSON native.
Note
Vous pouvez suivre ce guide pour installer FusionInventory.
Après avoir installé FusionInventory sur votre serveur GLPI, vous aurez un point d’accès sur votre Serveur WAPT pour envoyer les inventaires vers :
http:/glpi.mydomain.lan/glpi/plugins/fusioninventory/
9.2.3. Configuration de l’Agent WAPT et du paquet de synchronisation¶
Installez et configurez l’Agent WAPT sur l’ordinateur qui exécutera la synchronisation. L’Agent WAPT est installé par défaut sur le Serveur WAPT, il suffit de le configurer.
Pour configurer l’Agent WAPT, veuillez vous référer à la documentation correspondante.
Ensuite, vous devez installer le paquet de synchronisation de GLPI :
pour GLPI 9.x, vous devez installer le paquet tis-glpi-plugin-export-to-glpi9
pour GLPI 10.x, vous devez installer le paquet tis-glpi-plugin-export-to-glpi10
Vous devez configurer une planification d’audit sur l’agent
[global]
...
waptaudit_task_period=120m
...
Avec le paquet choisi, il créera deux fichiers ini dans votre $WAPT_INSTALL_DIR/private (linux : /opt/wapt/private
, windows : C:Program Files (x86)waptprivate`
). Connectez-vous à l’hôte et modifiez les fichiers glpi.ini
et wapt_api.ini
.
Pour GLPI9 :
[glpi] username = glpi password = xxxxxxx url = https://glpi.xx.xxxxx.xx/plugins/fusioninventory/
Pour GLPI10 :
[glpi] username = glpi password = xxxxxxx url = https://glpi.xx.xxxxx.xx/front/inventory.php
Pour GLPI10, veuillez également vous assurer que l’inventaire est activé.
Pour GLPI9 et GLPI10 :
[wapt]
username = waptregister
password = waptregister2023!
url = https://srvwapt.ad.tranquil.it
Pour tester la configuration actuelle, vous pouvez déclencher un audit
wapt-get audit tis-glpi-plugin-export-to-glpi9
# or
wapt-get audit tis-glpi-plugin-export-to-glpi10
9.2.4. Éléments actuels envoyés par WAPT au serveur GLPI¶
Valeur |
Envoyé |
Non Envoyé |
---|---|---|
Nom de l’ordinateur |
||
Nom d’utilisateur |
||
Description |
||
Nom de l’OS |
||
Version de l’OS |
||
Langue |
||
CPU |
||
Mémoire |
||
Batterie |
||
Type de châssis |
||
Physique ou virtuel |
||
Configuration de la carte réseau |
||
Liste d’imprimante et les propriétés |
||
Logiciel installé [1] |
||
Lecteur réseau |
||
Variables d’environnement [2] |
||
Modèles des écrans |
||
Modèle de la souris et du clavier |
||
Modèles des cartes contrôleurs (excepté la carte graphique) |
||
Version de l’antivirus |
||
État du pare-feu |
||
Liste groupe local |
||
Liste et état de la banque de mémoire |
||
Liste des ports USB et des périphériques connectés |
||
Statut de l’imprimante |
||
Lecteurs de carte |
||
Liste d’Appx à l’échelle du système |
Notes de bas de page
9.2.5. Erreurs possibles dans l’inventaire rapporté sur le serveur GLPI¶
Les inventaires téléchargés par le Serveur WAPT vers le serveur GLPI peuvent être incomplets ou comporter des erreurs par rapport aux inventaires téléchargés directement par l’agent FusionInventory déployé sur les hôtes. L’une des raisons est que WAPT vise à ne rapporter que les valeurs les plus importantes.
Si vous pensez que des éléments importants manquent ou sont signalés de manière erronée, veuillez signaler le problème à l’équipe de développement de Tranquil IT.
Pour le rapport, l’équipe de développement a besoin de 2 fichiers .xml
.
Tout d’abord, installez l’agent FusionInventory sur l’ordinateur sur lequel vous observez un élément d’inventaire manquant ou déclaré à tort.
Exécutez l’agent FusionInventory et extrayez le rapport dans un fichier
.xml
.
"C:\Program Files\FusionInventory-Agent\fusioninventory-inventory" > %TEMP%\inventory.xml
fusioninventory-inventory > /tmp/inventory.xml
fusioninventory-inventory > /tmp/inventory.xml
Définissez le répertoire de débogage dans le fichier waptserver.ini.
glpi_inventory_debug_directory = /tmp/glpi
Redémarrez le Serveur WAPT
Récupérer le fichier
/tmp/glpi/UUID.xml
du Serveur WAPT, l’UUID étant l’identifiant de l’hôte.Envoyez les 2 fichiers à l’équipe de développement.
9.3. Synchronisation des inventaires WAPT avec Cyberwatch pour les failles de sécurité
¶
9.3.1. Principe de fonctionnement¶
WAPT Enterprise offre une synchronisation entre les inventaires de vos hôtes et le logiciel Cyberwatch <https://cyberwatch.fr/>, un ISVM.
La méthode synchronise automatiquement les informations sur les mises à jour ou les logiciels installés avec l’outil Cyberwatch afin d’analyser les vulnérabilités détectées et de vous en avertir.
9.3.2. Configuration de Cyberwatch côté serveur¶
Connectez-vous à votre serveur Cyberwatch et accédez à votre profil.
Dans la section API, cliquez sur Voir mes clés API.
Cliquez sur Add et nommez votre clé d’accès à l’API pour WAPT.
Définissez le niveau d’accès sur Full et indiquez une date d’expiration. Si vous n’en donnez pas, la clé n’expirera jamais.
Cette clé avec son ID de clé d’accès à l’API vous permettra d’utiliser l’API Cyberwatch pour notre paquet WAPT.
9.3.3. Configuration de l’Agent WAPT et du paquet de synchronisation¶
Installez et configurez l’Agent WAPT sur l’ordinateur qui exécutera la synchronisation. L’Agent WAPT est installé par défaut sur le Serveur WAPT, il suffit de le configurer.
Pour configurer l’Agent WAPT, veuillez vous référer à la documentation correspondante.
Vous pouvez avoir deux paquets :
si vous avez l’agent Cyberwatch, vous pouvez importer de Cyberwatch en installant le paquet tis-cyberwatch-plugin-import-from-cyberwatch, cela vous donnera des informations directement sur votre Console WAPT.
pour les appareils sans agent, vous pouvez toujours exporter vers votre serveur Cyberwatch les informations de vos hôtes WAPT en installant le paquet tis-cyberwatch-plugin-export-to-cyberwatch-airgap, il vous donnera des informations sur votre console Cyberwatch sans que l’agent Cyberwatch ne soit installé.
Vous devez configurer une planification d’audit sur l’agent
[global]
...
waptaudit_task_period=120m
...
Avec le paquet, quel que soit votre choix (vous pouvez évidemment choisir les deux), il créera deux fichiers ini dans votre $WAPT_INSTALL_DIR/private (linux : /opt/wapt/private
, windows : C:Program Files (x86)waptprivate`
). Connectez-vous à l’hôte et modifiez les fichiers cyberwatch_api.ini
et wapt_api.ini
.
[cyberwatch]
api_key =
secret_key =
url = https://cyberwatch.mydomain.lan
[wapt]
username = waptregister
password = waptregister2023!
url = https://srvwapt.ad.tranquil.it
Pour tester la configuration actuelle, vous pouvez déclencher un audit
wapt-get audit tis-cyberwatch-plugin-import-from-cyberwatch
# and/or
wapt-get audit tis-cyberwatch-plugin-export-to-cyberwatch-airgap
9.4. Personnalisation des rapports d’audit avec les modèles Mustache¶
9.4.1. Introduction et explication¶
WAPT peut collecter des données d’audit matérielles et logicielles détaillées à partir des machines clientes en utilisant le plugin audit_data.
Les données collectées comprennent des informations sur le système, telles que
Les données collectées comprennent des informations sur le système, telles que les logiciels installés, les services en cours d’exécution, l’utilisation du disque, les comptes d’utilisateurs, la configuration du réseau, etc.
Ces données sont stockées dans un format JSON structuré et affichées dans la console WAPT à l’aide de modèles HTML.
Par défaut, WAPT fournit des modèles génériques pour visualiser ces données. Cependant, ces modèles peuvent être entièrement personnalisés pour répondre à vos besoins.
9.4.1.1. Pourquoi personnaliser les rapports d’audit ?¶
La personnalisation des rapports d’audit vous permet de vous concentrer sur les données spécifiques à votre organisation. Créez des tableaux de bord ou des tableaux adaptés aux politiques internes, améliorez la lisibilité et la facilité d’utilisation pour les équipes de support technique, générez une meilleure documentation pour les audits ou la conformité.
WAPT utilise des modèles Mustache pour rendre les données JSON dans un contenu HTML structuré à l’intérieur de la console.
9.4.1.2. Qu’es ce que Mustache?¶
Mustache est logic-less template language**( un langage de template **sans logique). Il permet d’injecter des données dynamiques dans des mises en page HTML statiques, sans script complexe.
Un modèle de Mustache est un fichier texte contenant :
de l’HTML statique
Les balises dynamiques comme
{{key}}
,{{#section}} ... {{/section}}
, {{{^section}} … {{/section}}`
Il est léger, facile à apprendre et idéal pour personnaliser les rapports visuels sans écrire de code.
9.4.2. Nommage et emplacement des modèles¶
Tous les modèles Mustache utilisés pour rendre les données d’audit dans WAPT sont stockés dans le dossier suivant :
C:\Program Files (x86)\wapt\templates
Si vous utilisez WAPT dans un environnement portable ou de développement, il sera :
<wapt_folder>\templates
Chaque fichier de modèle est un fichier .html écrit au format Mustache.
9.4.2.1. Nommage d’un modèle¶
Pour remplacer ou définir un nouveau modèle d’audit, le fichier doit suivre un modèle de dénomination strict :
host_audit_<section>_<key>.html
où on a :
section correspond au nom de la section d’audit (par exemple audit-network-profile)
key correspond à la clé de données à rendre (par exemple auto-remediate-card)
Exemple :
host_audit_audit-network-profile_auto-remediate-card.html
Ce modèle sera utilisé pour générer le modele via la clé auto‑remediate‑card et la section audit‑network‑profile.
9.4.2.2. Modifier ou créer un modèle¶
Il existe deux façons de personnaliser le rendu des audits :
Si le modèle existe déjà : ouvrez et éditez le fichier .html correspondant dans le dossier templates.
Si le modèle n’existe pas : créez un nouveau fichier avec le nom correct et écrivez la structure au format Mustache.
Assurez-vous que le code HTML est valide et qu’il utilise la syntaxe Mustache appropriée, comme indiqué dans les exemples ci-dessous.
Ce mécanisme vous permet de personnaliser entièrement la manière dont les données d’audit apparaissent dans la console WAPT, par clé et par section.
9.4.3. Comment rédiger des modèles¶
9.4.3.1. Exemple de base - rendu des données d’audit avec des espaces réservés¶
Commençons par un exemple simple qui montre comment les données d’un audit peuvent être insérées dans un modèle Mustache.
Étant donné le modèle HTML suivant :
<div class="system-info">
Hostname: {{hostname}}<br>
Operating System: {{os_name}} {{os_version}}
</div>
Les valeurs des espaces réservés sont fournies dans un objet JSON (cet objet est appelé contexte de rendu - il contient les données transmises au modèle) :
{
"hostname": "PC123",
"os_name": "Windows",
"os_version": "10"
}
Le résultat obtenu sera alors le suivant :
<div class="system-info">
Hostname: PC123<br>
Operating System: Windows 10
</div>
Cet exemple basique montre comment Mustache remplace chaque {{placeholder }}
par la valeur correspondante du contexte JSON. Il n’y a pas de logique, seulement une substitution.
9.4.3.2. Aperçu de la syntaxe de Mustache¶
Mustache est simple et déclaratif. Vous trouverez ci-dessous les balises les plus courantes, accompagnées d’exemples pratiques.
9.4.3.2.1. Afficher une seule valeur - {{key}}
¶
Utilisez {{key}} pour insérer une seule valeur du contexte de rendu dans le modèle.
La valeur de la clé hostname sera recherchée dans le contexte actuel (et si elle n’est pas trouvée, dans n’importe quel contexte parent). Lorsqu’une valeur est trouvée, la balise entière est remplacée par la valeur, avec un code HTML pour éviter les injections.
Le contexte JSON :
{
"hostname": "PC123"
}
Modèle :
<p>Hostname: {{hostname}}</p>
Résultat
<p>Hostname: PC123</p>
9.4.3.2.2. Bloc conditionnel - {{#section}} ... {{/section}}
¶
Cette syntaxe vous permet d’afficher un bloc de contenu uniquement si la valeur de la clé existe et est considérée comme « vraie » (ni nulle, ni fausse, ni vide). Elle est couramment utilisée pour effectuer un rendu conditionnel d’une section ou pour itérer sur une liste.
Exemple avec un objet
Le contexte JSON :
{
"user": {
"name": "Alice"
}
}
Modèle :
{{#user}}
<p>User: {{name}}</p>
{{/user}}
Résultat
<p>User: Alice</p>
Si la clé user est manquante ou null, rien ne sera rendu.
Exemple avec une liste
Si la valeur de la section est une liste (tableau), le bloc est rendu une fois pour chaque élément, avec le contexte fixé à l’élément courant.
Le contexte JSON :
{
"services": [
{"name": "WAPT"},
{"name": "Antivirus"}
]
}
Modèle :
<ul>
{{#services}}
<li>{{name}}</li>
{{/services}}
</ul>
Résultat
<ul>
<li>WAPT</li>
<li>Antivirus</li>
</ul>
9.4.3.2.3. Bloc inversé - {{^section}}} ... {{/section}}
¶
La section inverse {{^section}} est utilisée pour afficher un bloc uniquement si la valeur est fausse - ce qui signifie qu’elle n’existe pas, qu’elle est false, null, ou une liste vide. Ceci est utile pour afficher des messages de repli ou des indicateurs « pas de données ».
Le contexte JSON :
{
"has_battery": false
}
Modèle :
{{^has_battery}}
<p>This device has no battery.</p>
{{/has_battery}}
Résultat
<p>This device has no battery.</p>
Si « has_battery » : true, le bloc ne sera pas rendu du tout.
9.4.3.2.5. Valeur actuelle - {{.}}
¶
La balise {{.}} est utilisée pour itérer sur une liste de valeurs simples (chaînes de caractères, nombres, booléens). Elle fait référence à la valeur courante dans le contexte.
Si vous itérez sur un tableau comme [« important », « urgent »], chaque {{.}} correspond à la chaîne courante dans la boucle.
Le contexte JSON :
{
"tags": ["important", "urgent", "todo"]
}
Modèle :
<ul>
{{#tags}}
<li>{{.}}</li>
{{/tags}}
</ul>
Résultat
<ul>
<li>important</li>
<li>urgent</li>
<li>todo</li>
</ul>
9.4.4. Helpers de Musctahe disponibles¶
WAPT fournit de nombreuses helpers (aides) personnalisées qui peuvent être utilisées dans les modèles Mustache pour transformer, formater ou extraire des données.
Ces helpers (aides) étendent la syntaxe de base de Mustache et sont particulièrement utiles lorsque l’on travaille avec des données d’audit.
Les helpers disponibles sont énumérées ci-dessous :
Comparaison et logique
IIf - Rendu conditionnel en ligne (if cond then val1 else val2)
If_ - Expression conditionnelle complète (avancée)
Equals_ - Compare les valeurs
Match - Correspond à une expression rationnelle (sensible à la casse)
MatchI - Correspond à une expression rationnelle (insensible à la casse)
Opérations de liste et d’objet
Items - Convertit un dictionnaire en une liste itérable
Get - Récupère une clé à partir d’un objet avec une solution de repli par défaut
Count - Compte les éléments d’une liste ou les clés d’un dict
Values - Extrait les valeurs d’un dict
Keys - Extrait les clés d’un dict
First - Obtient les n premiers éléments d’une liste
Last - Obtient les n derniers éléments
Slice - Extrait une tranche [start:end] d’une liste
Formatage des données
HumanBytes - Convertit la taille des octets en KB, MB, GB
CSV - Joint des listes d’objets au format CSV
Manipulation de chaînes de caractères et de textes
Lower - Convertit en minuscules
Upper - Convertit en majuscules
Pad - Pads une chaîne de caractères vers la droite
PadLeft - Pads une chaîne de caractères vers la gauche
Sub - Extrait une sous-chaîne
CamelCase - Convertit une chaîne en camelCase
SnakeCase - Convertit une chaîne en snake_case
EnumTrim - Nettoie les valeurs énumérées (par exemple, trim [0])
EnumTrimRight - Comme EnumTrim mais avec des coupes uniquement sur la droite
Formatage de la date et de l’heure
LocalDateTime - Convertit UTC en date locale
LocalDate - Date locale à partir de l’entrée UTC
DateFmt - Formatage personnalisé de la date avec un format de type strftime
DateTimeToText - Convertit la date en texte lisible
DateToText - Formate la valeur de la date (variante héritée)
TimeLogToText - Analyse la durée à partir des logs (par exemple, « 00:04:32 »).
HTML et rendu
ToJson2 - Convertit une valeur en JSON formaté
ToJson - Conversion JSON de base
JsonQuote – Recupère le contenu JSON à l’intérieur d’une chaîne
JsonQuoteUri - Recupère le JSON pour une utilisation sûre dans les URLs
SimpleToHtml - Rend le formatage basique des lignes et du texte
MarkdownToHtml - Analyse Markdown en HTML
WikiToHtml - Analyse les balises de style wiki en HTML
Autres services
JoinValues - Joint les valeurs d’une liste ou d’un dict avec un séparateur
Join - Joint des éléments (clés ou valeurs) dans une chaîne de caractères
NewGuid - Génère un nouvel UUID
ExtractFileName - Extrait le nom de fichier d’un chemin complet
Encodage et hachage
b64encode - Encode en base64 une chaîne de caractères
sha256 - Hachage SHA-256 d’une chaîne de caractères
sha1 - Hachage SHA-1 d’une chaîne de caractères
md5 - Hachage MD5 d’une chaîne de caractères
BlobToBase64 - Encode un blob binaire en base64
b64decode - Décode une chaîne encodée en base64
_chr - Convertit les codes ASCII en caractères
Réseau et HTTP
HttpGet - Effectue une requête HTTP GET
HttpGetSafe - Comme HttpGet mais plus sûr pour les templates
DoHttpGet - GET de bas niveau avec vérification optionnelle du certificat
HttpPost - Envoie une requête HTTP POST
HttpPostSafe - Variante POST avec contrôles de sécurité
DoHttpPost - POST de bas niveau avec vérification optionnelle des certitudes
Chaque helper accepte une valeur ou une liste de valeurs en entrée et renvoie un résultat formaté utilisable dans n’importe quelle balise Mustache.
La documentation relative à chaque helpers est fournie dans la section suivante.
Voir la documentation sur les helpers de Mustache Helpers de Musctahe disponibles.
9.4.3.2.4. Commentaire -
{{ ! commentaire }}
¶Mustache permet les commentaires en ligne en utilisant {{ ! … }}. Ces commentaires sont complètement ignorés lors du rendu et n’apparaissent pas dans le code HTML de sortie.
Ceci est utile pour laisser des notes aux auteurs de modèles sans affecter la sortie.
Modèle :
Résultat