Agent OsQuery

Fonction

Interroger les hôtes en utilisant osquery. Ce plugin nécessite l'installation de l'exécutable osqueryi sur l'hôte surveillé. osqueryi est exécuté via l'Agent SKOOR qui doit également être installé et fonctionner sur la machine interrogée. Le démon osqueryd n'est pas nécessaire pour que ces requêtes fonctionnent.

Alarme

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. Il s'agit notamment d'informations telles que

  • les processus en cours d'exécution

  • Modules du noyau chargés

  • les comptes d'utilisateurs actifs

  • les connexions réseau actives

et bien plus encore. osquery expose un système d'exploitation en tant que base de données relationnelle haute performance et permet de l'interroger à l'aide d'instructions SQL.

osquery est actuellement disponible pour les systèmes d'opérateurs suivants :

  • Linux

  • Windows

  • OS X

  • FreeBSD

Il peut être installé en suivant les instructions de la page de téléchargement d'osquery : https://osquery.io/downloads/. Il est également possible de copier 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 qui permet d'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, voir : https://osquery.readthedocs.io/en/stable/.

Détails de l'agent OsQuery

Paramètres de l'agent OsQuery

Paramètre

Description

Requête

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

La liste déroulante Tags permet de saisir des variables prédéfinies dans les champs ci-dessus, par exemple $NAME$ pour le nom du travail.

La section des exemples ci-dessous énumère quelques-unes des requêtes qui peuvent être utilisées. Les résultats renvoyés par la requête doivent être mis en correspondance avec les valeurs Return et les valeurs String dans l'ordre correct.

Il est également possible d'influencer l'ordre des valeurs et des chaînes renvoyées en adaptant la requête afin de fournir 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 type "String" dans un ordre spécifique :

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

Cependant, les valeurs de retour et les valeurs de chaîne doivent encore être configurées dans la section Paramètres du travail pour apparaître dans la section Valeurs du travail.

Valeurs et limites d'alarme de l'agent OsQuery

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 de la tâche).

Exemples d'agents OsQuery

Exemple 1 - Interroger le modèle de l'unité centrale

Requête

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

Cette requête nécessite la configuration de la valeur de chaîne suivante :

Sortie 1

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

Requête

select memory_total, memory_free from memory_info

Il faut configurer les deux valeurs de retour suivantes :

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

Sortie 2

Autres exemples de requêtes

Requête

Description de la requête

Exemple de sortie

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

Lecture des informations relatives à l'utilisateur

select weekday, day, month, year, unix_time from time

Lecture de l'heure du système

select count(pid) as total, name from processes group by name order by total desc limit 10

Renvoie le nombre de processus et le nom des 10 processus les plus actifs.

select * from uptime

Retourne le temps de fonctionnement du système