Prendre rendez-vous
  1. Accueil
  2. /
  3. Blog
  4. /
  5. osquery + Fleet : interroger son parc Linux comme une base SQL

Sécurité
Administration
Linux

osquery + Fleet : interroger son parc Linux comme une base SQL

2 juin 2026

8 min de lecture

Sommaire
Plan de l'article
Le concept : OS as relational database
Tables osquery courantes
Architecture client-serveur avec Fleet
Déploiement osquery sur le parc
Requêtes utiles pour la sécurité
Packs de queries et planification
Intégration SIEM et observabilité
Limites et signaux à surveiller
Sources

Combien de serveurs ont OpenSSL en version vulnérable ? Quels sont les utilisateurs avec UID 0 sur la flotte ? Quelles machines ont un binaire SUID modifié dans les 7 derniers jours ? Ces questions sont triviales à formuler, complexes à répondre sans outillage. Sur 200 hosts hétérogènes, les boucles ssh + grep ne tiennent pas.

osquery, créé par Facebook en 2014 et donné à la Linux Foundation en 2019, expose le système d'exploitation comme une base SQL relationnelle. Disponible sur Linux, macOS, Windows. Fleet (par Fleet Device Management) ajoute le serveur de management qui transforme osquery d'outil local en plateforme parc.

Pour les équipes sécurité, conformité et inventaire, la bascule est nette. Au lieu d'écrire des scripts, on écrit du SQL.

Plan de l'article

  • Le concept : OS as relational database
  • Tables osquery courantes
  • Architecture client-serveur avec Fleet
  • Déploiement osquery sur le parc
  • Requêtes utiles pour la sécurité
  • Packs de queries et planification
  • Intégration SIEM et observabilité
  • Limites et signaux à surveiller

Le concept : OS as relational database

L'idée centrale d'osquery : pourquoi ne pas exposer le système (processus, sockets, users, services, fichiers, registre, packages, etc.) comme des tables SQL ?

Fini les scripts shell qui parsent /etc/passwd à coups de awk, les boucles find / -perm -4000 qui explosent, les scrapers ps aux fragiles. Une seule API, un seul langage de requête.

-- Tous les processus écoutant sur un port public
SELECT p.name, p.cmdline, l.address, l.port
FROM listening_ports l
JOIN processes p ON p.pid = l.pid
WHERE l.address = '0.0.0.0';

-- Utilisateurs avec UID 0 autres que root
SELECT username, uid, directory, shell
FROM users
WHERE uid = 0 AND username != 'root';

-- Packages installés avec une version vulnérable
SELECT name, version
FROM deb_packages
WHERE name = 'openssl' AND version LIKE '1.1%';

Ces requêtes tournent localement sur l'hôte. Le binaire osqueryi les exécute en interactif, ou osqueryd les schedule en daemon.

Tables osquery courantes

Plusieurs centaines de tables exposées par défaut. Catégories principales :

CatégorieExemples de tables
Processusprocesses, process_open_files, process_open_sockets
Utilisateursusers, groups, logged_in_users
Réseauinterface_addresses, arp_cache, routes, listening_ports
Fichiersfile, hash, mounts, block_devices
Packagesdeb_packages, rpm_packages, homebrew_packages, chocolatey_packages
Servicessystemd_units, services, launchd
Sécuritésuid_bin, kernel_modules, selinux_settings, apparmor_profiles
Logssyslog_events (Linux), windows_events (Windows)
Hardwarehardware_events, cpu_info, memory_info
Containersdocker_containers, docker_images, docker_networks
Cloudaws_metadata, azure_metadata

Les tables sont multiplateformes quand c'est possible. La table users existe sur Linux, macOS, Windows avec des colonnes communes. Quelques tables sont OS-specific (apparmor_profiles sur Linux, firewall sur macOS, windows_security_products sur Windows).

Documentation complète sur le site officiel, parcourue avec .tables dans osqueryi.

Architecture client-serveur avec Fleet

osquery seul est un outil local. Pour piloter un parc, il faut un serveur de management. Plusieurs implémentations :

  • Fleet (Fleet Device Management) : produit moderne, open source, qui tient la montée en charge, avec API et UI. L'option à retenir en 2026.
  • Kolide K2 : alternative commerciale avec UX poussée pour l'entreprise.
  • doorman : projet historique CNCF, moins maintenu.
  • TLS server custom : on peut écrire son propre serveur TLS qui implémente le protocole osquery.

Architecture Fleet :

  • Fleet server (Go) avec MySQL/MariaDB et Redis.
  • Endpoints osquery configurés en mode "remote" qui pollent Fleet pour des configs et postent leurs résultats.
  • UI web pour gérer les hosts, les queries, les packs, les politiques.
  • API GraphQL et REST pour intégration.

Chaque host enregistre son osquery agent dans Fleet via un secret partagé ou un token MDM. Fleet orchestre les requêtes et collecte les résultats en quasi-temps réel.

Déploiement osquery sur le parc

Sur Linux, paquets disponibles pour Debian/Ubuntu, RHEL/CentOS/Rocky/AlmaLinux, Arch :

# Debian / Ubuntu
curl -L https://pkg.osquery.io/deb/pubkey.gpg | sudo apt-key add -
echo "deb [arch=amd64] https://pkg.osquery.io/deb deb main" | sudo tee /etc/apt/sources.list.d/osquery.list
sudo apt update && sudo apt install osquery

Configuration /etc/osquery/osquery.flags pour pointer vers Fleet :

--enroll_secret_path=/etc/osquery/enroll_secret
--tls_hostname=fleet.exemple.fr:8080
--tls_server_certs=/etc/osquery/fleet.pem
--enroll_tls_endpoint=/api/v1/osquery/enroll
--config_plugin=tls
--config_tls_endpoint=/api/v1/osquery/config
--logger_plugin=tls
--logger_tls_endpoint=/api/v1/osquery/log
--disable_distributed=false
--distributed_plugin=tls
--distributed_interval=10
--distributed_tls_max_attempts=3
--distributed_tls_read_endpoint=/api/v1/osquery/distributed/read
--distributed_tls_write_endpoint=/api/v1/osquery/distributed/write

Démarrage :

sudo systemctl enable --now osqueryd

Pour un déploiement parc, intégrer dans le pipeline Packer + Ansible golden images ou via config management.

Sur macOS et Windows, packages MSI / PKG officiels. Configuration équivalente.

Requêtes utiles pour la sécurité

Quelques exemples typiques en prod.

Détection de comptes UID 0 non-root :

SELECT username, uid, directory, shell
FROM users
WHERE uid = 0 AND username != 'root';

Binaires SUID modifiés récemment :

SELECT path, mode, atime, mtime, ctime, hash.sha256
FROM suid_bin
JOIN hash ON suid_bin.path = hash.path
WHERE mtime > (strftime('%s', 'now') - 604800);

Packages avec CVE connue (à compléter avec une liste de versions ciblées) :

SELECT hostname, name, version
FROM deb_packages, system_info
WHERE name IN ('openssl', 'glibc', 'sudo')
  AND version < '<version_patchee>';

Connexions sortantes vers IP non whitelistées :

SELECT pid, name, fd, remote_address, remote_port
FROM process_open_sockets
WHERE remote_address NOT LIKE '10.%' AND remote_address NOT LIKE '192.168.%'
  AND state = 'ESTABLISHED';

Modules kernel non signés :

SELECT name, status, used_by
FROM kernel_modules
WHERE name NOT IN (SELECT name FROM expected_modules);

Pour le hardening général qui s'aligne sur ces requêtes, voir audit-securite-linux et cis-benchmark-audit.

Packs de queries et planification

Plutôt que d'exécuter des requêtes ad hoc, on définit des "packs" : ensembles de queries scheduled.

Exemple incident_response.conf :

{
	"queries": {
		"logged_in_users": {
			"query": "SELECT * FROM logged_in_users;",
			"interval": 300
		},
		"suid_bin": {
			"query": "SELECT * FROM suid_bin;",
			"interval": 3600
		},
		"kernel_modules": {
			"query": "SELECT * FROM kernel_modules;",
			"interval": 1800
		}
	}
}

Chaque query schedule génère un événement quand le résultat change (pas à chaque exécution). Idéal pour détecter "un nouveau binaire SUID est apparu", "un kernel module non vu auparavant est chargé".

osquery fournit des packs prédéfinis : incident-response, it-compliance, vuln-management, osquery-monitoring. À enrichir avec des packs métier.

Intégration SIEM et observabilité

Les résultats osquery sont du JSON structuré. Patterns d'ingestion :

  • Wazuh ingère osquery via plugin natif. Voir wazuh-siem.
  • Loki push HTTP depuis Fleet. Indexation par hostname et pack.
  • Elastic SIEM via Filebeat osquery module.
  • Splunk via Splunk add-on for osquery.

Pour les alertes temps réel, coupler osquery avec Falco runtime security. osquery donne la photo périodique, Falco détecte les événements en streaming.

Limites et signaux à surveiller

Charge système. osqueryd consomme CPU pour les queries lourdes (par exemple SELECT * FROM file WHERE path LIKE '/%'). Limiter les queries qui scannent le filesystem entier. Utiliser --watchdog_level=0 ou monitoring strict du process pour éviter les abus.

Tables platform-specific. Une query qui marche sur Linux peut casser sur Windows ou macOS. Tester les packs sur les trois OS du parc, ou conditionner par JOIN os_version.

Latence de propagation Fleet. Une query distribuée envoyée à 1000 hosts ne revient pas en 1 seconde. Compter 30s à 2 min pour la majorité des hosts, plus longtemps pour les laggards.

Sécurité du serveur Fleet. Le serveur Fleet voit tout sur tous les hosts. Compromission = visibilité totale du parc. Hardening strict, isolation réseau, MFA, audit logs.

Privacy. osquery peut révéler beaucoup sur les utilisateurs (historique navigateur, fichiers ouverts, processus). Sur des postes utilisateurs, documenter ce qui est collecté et pourquoi, conformité RGPD / accord utilisateur.

Maintenance MIBs / tables. Les tables osquery évoluent. Une query qui marche en v5.10 peut nécessiter ajustement en v5.13. Suivre les release notes.

Pas un endpoint protection. osquery observe et reporte. Il ne bloque rien. Pour le blocage runtime, Falco / Tracee / EDR commercial.

Une fois en place, osquery + Fleet devient la référence pour les questions "qui a quoi sur le parc". Des audits qui prenaient des jours passent à des minutes. Le travail réel n'est pas le déploiement (mécanique), c'est la curation des packs et l'intégration au workflow d'investigation. Curer ces requêtes et ces packs dans la durée occupe réellement quelqu'un ; à défaut, déléguer cette tenue garde l'inventaire fiable.

Sources

  • osquery documentation officielle : référence des tables, configuration, scheduler.
  • Fleet documentation officielle : install, ops, API.
  • GitHub osquery/osquery : code source, releases.
  • GitHub fleetdm/fleet : code source Fleet, releases, packs communautaires.
  • SQL syntax SQLite (utilisé par osquery) : référence du dialect SQL supporté.
  • CIS Benchmarks : référence pour les contrôles que les packs osquery automatisent.
Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires

YubiKey et FIDO2 : authentification SSH par clé matérielle
Sécurité
Administration
Linux

YubiKey et FIDO2 : authentification SSH par clé matérielle

Configurer SSH avec YubiKey FIDO2/U2F. Clés résidentes, présence physique, intégration bastion, déploiement parc, retour ops sur l'authentification matérielle.

30 mai 2026

Lire plus

Auditer la sécurité d'un serveur Linux en 2026 : outils et méthodologie
Sécurité
Linux
Administration

Auditer la sécurité d'un serveur Linux en 2026 : outils et méthodologie

Méthodologie complète pour auditer la sécurité de vos serveurs Linux. Lynis, OpenSCAP, CIS Benchmarks, auditd et AIDE pour une infrastructure durcie.

3 mars 2026

Lire plus

SELinux 2026 : sécurité obligatoire, policies et hardening Linux
Linux
Sécurité
Administration

SELinux 2026 : sécurité obligatoire, policies et hardening Linux

Guide complet SELinux 2026 : modes enforcing/permissive, contexts, policies, troubleshooting, audit2allow, hardening serveurs et applications.

1 févr. 2026

Lire plus


SHPV, votre partenaire de confiance en infrastructure et infogérance informatique en France.

SHPV
Prendre rendez-vousNous contacter
Expertise
InfrastructureDatacenterInfogéranceCloudHébergementTransit IP
Légales
Conditions Générales de VenteCPS - Contrat de ServicesCPS - Hébergement CloudCPS - Microsoft 365Accord sous-traitance RGPDTarifs interventions

SHPV © 2026 - Tous droits réservés

Mentions légalesPolitiques de confidentialité
SHPV FRANCE - SAS au capital de 16 000 € - 52 Rue Romain Rolland, 71230 Saint-Vallier - SIRET n°80886287400035 - R.C.S. Chalon-sur-Saône. Par téléphone 09 72 310 818 - Email: support@shpv.fr