Agent OsQuery

Fonction

Interroger les hôtes à l'aide d'osquery. Ce plugin nécessite que l'exécutable osqueryi soit installé sur l'hôte surveillé. osqueryi est exécuté via le SKOOR Agent, qui doit également être installé et en cours d'exécution sur la machine interrogée. Le démon osqueryd n'a pas besoin d'être en cours d'exécution pour que ces requêtes fonctionnent.

Alarmes

Dépend des valeurs de retour configurées dans les paramètres de la tâche.

osquery est un outil open source créé par Facebook pour interroger diverses informations sur l'état des machines. Cela inclut des informations telles que :

  • Les processus en cours d'exécution

  • Modules du noyau chargés

  • Comptes utilisateurs actifs

  • Connexions réseau actives

et bien d’autres encore. osquery transforme un système d’exploitation en base de données relationnelle hautement performante et permet de l’interroger à l’aide d’instructions SQL.

osquery est actuellement disponible pour les systèmes d'exploitation suivants :

  • Linux

  • Windows

  • OS X

  • FreeBSD

Il peut être installé en suivant les instructions fournies sur la page de téléchargement d'osquery : https://osquery.io/downloads/. Il est également possible de copier simplement le binaire osqueryi dans le répertoire /usr/bin.

Il est facile d'exécuter des requêtes manuellement sur l'hôte où osqueryi est installé. Il suffit d'exécuter la commande osqueryi pour accéder à l'outil de requête interactif, puis de saisir la requête suivie d'un point-virgule :

$ osqueryi
Using a virtual database. Need help, type '.help'
osquery> select value as string_value1 from cpuid where feature="product_name";
+------------------------------------------+
| string_value1                            |
+------------------------------------------+
| Dual-Core AMD Opteron(tm) Processor 1218 |
+------------------------------------------+
osquery> .quit

Pour plus d'informations sur osquery, rendez-vous ici : https://osquery.readthedocs.io/en/stable/.

Détails de l’agent OsQuery

Paramètres de l’agent OsQuery

Paramètre

Description

Requête

Requête à exécuter sur la base de données osquery de l'hôte local (SKOOR Collector) ou distant.

La liste déroulante « Balises » permet d’insérer des variables prédéfinies dans les champs ci-dessus, par exemple $NAME$ pour le nom de la tâche.

La section « Exemples » ci-dessous répertorie certaines des requêtes pouvant être utilisées. Les résultats renvoyés par la requête doivent être mappés aux « Valeurs de retour » et aux « Valeurs de chaîne » dans l'ordre correct.

Il est également possible de modifier l’ordre des valeurs et des chaînes renvoyées en adaptant la requête afin qu’elle fournisse les noms de valeurs et de chaînes attendus. Par exemple, la requête suivante associera la valeur « memory_free » à la première « Valeur de retour » et « memory_total » à la deuxième « Valeur de retour » :

select memory_total as return_value2, memory_free as return_value1 from memory_info

La requête suivante renvoie deux valeurs de chaîne dans un ordre spécifique :

select feature as string_value1, value as string_value2 from cpuid limit 1

Toutefois, les valeurs de retour et les valeurs de chaîne doivent tout de même être configurées dans la section « Paramètres de la tâche » pour apparaître dans la section « Valeurs » de la tâche.

Valeurs OsQuery de l’agent et limites d’alarme

Valeur / Limite d’alarme

Description

<Générique>

Dépend des valeurs de retour configurées dans les paramètres de la tâche.

Code d'erreur

Code d'erreur générique de la tâche (voir la section « Codes d'erreur des tâches »)

Exemples d'OsQuery pour les agents

Exemple 1 - Interroger le modèle de processeur

Requête

select value as string_value1 from cpuid where feature="product_name"

Cela nécessite la configuration de la valeur de chaîne suivante :

Résultat 1

Exemple 2 - Interroger la mémoire totale et la mémoire libre

Requête

select memory_total, memory_free from memory_info

Cela nécessite de configurer les 2 valeurs de retour suivantes :

L'unité contient le nom de la valeur de retour, une unité et un diviseur, car osquery renvoie les valeurs en octets :

Sortie 2

Exemples de requêtes supplémentaires

Requête

Description

Exemple de résultat

select username, description, directory from users where username like '%eranger'

Lire les informations sur l'utilisateur

select jour de la semaine, jour, mois, année, unix_time from time

Lire l'heure système

SELECT COUNT(pid) AS total, name FROM processes GROUP BY name ORDER BY total DESC LIMIT 10

Afficher le nombre et le nom des 10 processus les plus actifs

SELECT * FROM uptime

Afficher la durée de fonctionnement du système