GNU/Linux >> Tutoriels Linux >  >> Linux

Comment surveiller votre serveur Linux à l'aide d'osquery

Osquery est un logiciel open source de surveillance, de requête et d'analyse du système d'exploitation. Créé par Facebook, il expose un système d'exploitation sous la forme d'une base de données relationnelle hautes performances qui peut être interrogée à l'aide de requêtes basées sur SQL.

Osquery est un logiciel multiplateforme pouvant être installé sur Linux, Windows, MacOS et FreeBSD. Osquery nous permet d'explorer le profil du système d'exploitation, les performances, la sécurité et bien d'autres métriques à l'aide de requêtes basées sur SQL.

Dans ce didacticiel, je vais vous montrer comment installer osquery sur les distributions Linux Ubuntu 18.04 LTS et CentOS 7. Nous allons installer osquery, apprendre à utiliser le mode interactif 'osqueryi' et comment surveiller un système en direct à l'aide d'osquery.

Prérequis

  • Système d'exploitation Linux (Ubuntu 18.04 ou CentOS 7)
  • Privilèges root

Ce que nous allons faire

  • Installer osquery sur le système d'exploitation Linux
  • Utilisation de base du mode interactif osqueryi
  • Système de surveillance utilisant osquery

Étape 1 - Installer osquery sur le système d'exploitation Linux

osquery fournit son propre référentiel pour chaque plate-forme. Dans cette étape, nous allons installer le package osquery à partir du référentiel officiel osquery.

Sur Ubuntu

Ajoutez la clé de l'osquerie.

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY

Installez le paquet osquery sur Ubuntu.

sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y

Sur CentOS

Ajoutez la clé de l'osquerie.

curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery

Installez le package osquery sur CentOS 7.

sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo
sudo yum-config-manager --enable osquery-s3-rpm
sudo yum install osquery

Attendez que tous les packages soient installés.

Étape 2 - Utilisation de base du mode interactif osqueryi

osquery fournit deux interfaces principales aux utilisateurs, osqueryi et osqueryd.

osqueryi est la console de requête interactive d'osquery. C'est comme le shell de commande 'mysql' sur MySQL et le shell 'psql' sur la base de données PostgreSQL.

Dans cette étape, nous apprendrons l'utilisation de base du mode interactif 'osqueryi'.

Tapez la commande 'osqueryi' sur le terminal serveur et vous obtiendrez le mode console interactive osquery.

osqueryi

Ensuite, nous découvrirons la commande de base du mode console osqueryi.

Afficher toutes les commandes de base disponibles sur le mode interactif osqueryi.

.help

Afficher les configurations et les paramètres actuels de l'osquery.

.show

Osquery fournit plusieurs modes d'affichage pour afficher les résultats de la requête. Le mode par défaut est le mode 'joli'.

Nous allons maintenant changer le mode d'affichage des résultats de la requête, pour ce guide, nous utiliserons le mode "ligne".

.mode csv
.mode list
.mode column
.mode line
.mode pretty

Osquery expose le système d'exploitation comme un système de base de données relationnelle. Toutes les informations sur le système sont stockées dans les tables osquery et nous pouvons explorer l'ensemble des informations système en interrogeant toutes les tables disponibles.

Pour obtenir une liste de toutes les tables disponibles dans l'osquery, exécutez la commande ci-dessous.

.tables

Une fois que nous connaîtrons toutes les tables disponibles dans le système osquery, nous examinerons les colonnes.

Utilisez la commande suivante pour obtenir le schéma (colonnes, types) des tables.

.schema users
.schema processes

Et vous obtiendrez toutes les colonnes de schéma de la table.

Étape 3 - Surveillance Linux de base à l'aide d'une requête

Dans cette étape, nous surveillerons un système Linux en direct à l'aide de l'osquery. Nous surveillerons les informations de profil du système, les utilisateurs, les interfaces réseau, etc. via le mode interactif osqueryi.

Obtenir les informations système

Afficher des détails sur le matériel du système.

SELECT * FROM system_info;
SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;

Obtenir la version du système d'exploitation

Afficher les informations actuelles du système d'exploitation, y compris la version du système d'exploitation, la plate-forme, le correctif du système d'exploitation et le nom de code.

SELECT * FROM os_version;

Afficher la version du noyau et les modules

Pour vérifier les informations du noyau du système, osquery fournit les tables 'kernel_info' et 'kernel_modules'.

Afficher le noyau utilisé par le système.

SELECT * FROM kernel_info;

Afficher tous les modules de noyau chargés sur le système.

SELECT * FROM kernel_modules LIMIT 5;

Vérification du référentiel et des packages

osquery fournit des tables pour vérifier les référentiels et les packages installés sur Linux Ubuntu et CentOS.

- Sur Ubuntu

Sur Ubuntu, nous pouvons vérifier les référentiels disponibles via 'apt_sources' et vérifier les packages installés via 'deb_packages'.

Vérifiez tous les référentiels Ubuntu disponibles.

SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;

Vérifiez tous les packages installés à l'aide de la table deb_packages.

SELECT * FROM deb_packages;

Afficher uniquement le nom du package et la version.

SELECT name, version FROM deb_packages ORDER BY name;

Pour un package spécifique, ajoutez le filtre de nom.

SELECT name, version FROM deb_packages WHERE name="nginx";

- Sur CentOS

Sur CentOS, nous pouvons vérifier le référentiel disponible via 'yum_sources' et vérifier les packages installés via 'rpm_packages'.

Vérifiez tous les référentiels CentOS disponibles.

SELECT * FROM yum_sources;
SELECT name, baseurl, enabled FROM yum_sources;

Vérifiez le référentiel activé en ajoutant le filtre "activé".

SELECT name, baseurl, enabled FROM yum_sources WHERE enabled=1;

Vérifiez tous les packages installés à l'aide de la table rpm_packages.

SELECT * FROM rpm_packages;
SELECT name, version FROM rpm_packages ORDER BY name;

Pour un nom de package spécifique, ajoutez le filtre de nom.

SELECT name, version FROM rpm_packages WHERE name="firewalld";

Informations sur le disque de montage

Nous pouvons utiliser le tableau des montages pour vérifier tous les détails sur le lecteur système, y compris les inodes libres, les drapeaux, le type, etc.

Vérifiez tous les disques montés par le système.

SELECT * FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts;

Pour le type d'appareil spécifique.

SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="ext4";
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="tmpfs";

Informations sur la mémoire

Vérification de la mémoire système en octets.

SELECT * FROM memory_info;

Informations sur l'interface réseau

Vérification de l'adresse réseau à l'aide de 'interface_addresses'.

SELECT * FROM interface_addresses;

Vérification des détails de l'interface réseau à l'aide de 'interface_details'.

SELECT * FROM interface_details;
SELECT interface, mac, ipackets, opackets, ibytes, obytes FROM interface_details;

Temps de disponibilité du serveur

Vérification de la disponibilité du serveur.

SELECT * FROM uptime;

Utilisateur de vérification

osqery fournit des tables détaillées pour vérifier les utilisateurs du système. Nous pouvons utiliser la table 'users' pour vérifier tous les utilisateurs du système, utiliser la table 'last' pour vérifier la dernière connexion des utilisateurs et utiliser 'logged_in_users' pour obtenir l'utilisateur connecté avec le shell actif.

Pour vérifier tous les utilisateurs disponibles sur le serveur, utilisez la table 'users'.

SELECT * FROM users;

Pour les utilisateurs normaux, nous pouvons spécifier l'uid à '>=1000'.

SELECT * FROM users WHERE uid>=1000;

Pour vérifier les derniers utilisateurs connectés, utilisez le tableau 'dernier'.

SELECT * FROM last;

Pour les utilisateurs normaux, remplissez 'type' à '7'.

SELECT username, time, host FROM last WHERE type=7;

Vérification de l'utilisateur connecté avec le shell actif, utilisez les tables 'logged_in_users'.

SELECT * FROM logged_in_users;

Informations sur le pare-feu des tables IP

Avec la table 'tables', nous pouvons vérifier toutes les règles disponibles du pare-feu, y compris la chaîne, la politique, l'adresse IP et le port src/dst, etc.

Afficher toutes les règles iptables.

SELECT * FROM iptables;

Spécifiez la règle à l'aide de la requête personnalisée ci-dessous.

SELECT chain, policy, src_ip, dst_ip FROM iptables WHERE chain="POSTROUTING" order by src_ip;

Informations sur le processus

Nous pouvons vérifier tous les processus de candidature en utilisant le tableau 'processus'. Il fournit des informations détaillées sur le processus, y compris le pid, le nom, le chemin, la commande, etc.

Requête de processus de base pour vérifier toutes les applications en cours d'exécution.

SELECT * FROM processes;

Spécifiez des colonnes pour le pid, etc., le chemin et la commande.

SELECT pid, name, path, cmdline FROM processes;

Vérification de la tâche Cron

Vérifiez la tâche cron disponible et l'heure d'exécution du script à l'aide de la table 'crontab'.

SELECT * FROM crontab;

Fichier binaire SUID

SUID (Set owner User ID up on execution) est un type spécial d'autorisations de fichiers accordées à un fichier et principalement à des fichiers exécutables binaires.

Vérifiez tous les fichiers binaires disponibles.

SELECT * FROM suid_bin;

Spécifiez le nom d'utilisateur et le nom du groupe.

SELECT * FROM suid_bin WHERE username="root" AND groupname="nobody" order by path;

Et tout ce qui précède est la surveillance de base du système Linux à l'aide d'osquery.


Linux
  1. Surveillez votre serveur Linux avec Checkmk

  2. Comment surveiller votre serveur Linux ?

  3. Comment mesurer les performances de votre serveur VPS Linux

  4. Comment utiliser OpenSSH pour se connecter à votre serveur Linux

  5. Comment surveiller la sécurité du serveur Linux avec Osquery

Comment surveiller vos serveurs Linux avec Checkmk

Comment vérifier la charge de votre serveur dans le système Linux

Comment vérifier la disponibilité de votre serveur Linux

Comment configurer un démon Rsync sur votre serveur Linux

Comment :utiliser lsof - 10 commandes essentielles pour dépanner votre serveur Linux

Comment configurer un pare-feu sur votre serveur Linux