Agence web » Actualités du digital » Utilisez SQL et osquery pour interroger votre matériel sous Linux –

Utilisez SQL et osquery pour interroger votre matériel sous Linux –

une-breve-histoire-d39unix-cloudsavvy-it-7337062

Oubliez-vous toujours la syntaxe des commandes matérielles obscures que vous utilisez à peine? L’application osquery vous permet d’interroger le matériel, les utilisateurs et les performances de votre ordinateur Linux avec des commandes SQL standard.

L’application osquery

L’application osquery est un programme gratuit et open-source de la fondation osquery. Il rassemble une énorme quantité d’informations sur votre ordinateur Linux et le rend accessible en tant que pseudo-base de données. La base de données contient de nombreuses tables contenant différentes catégories d’informations. Les données des tables peuvent être récupérées à l’aide de commandes SQL (SQL).

osquery peut être utilisé de manière interactive, ou il peut être contrôlé via un fichier de configuration et exécuté en tant que démon. L’exécuter en tant que démon vous permet de planifier des requêtes. osquery est une application très flexible et sophistiquée. Il contient bien plus que ce qui peut être couvert dans un article d’introduction. L’excellente documentation est le premier endroit à se tourner si vous souhaitez étudier ses nombreuses autres options.

Nous allons examiner l’utilisation d’osquery de manière interactive.

Installer osquery

La plupart des distributions Linux n’incluent pas osquery dans leurs dépôts officiels. Cela ne pose pas de problème, nous pouvons télécharger les packages d’installation à partir de la page de téléchargement d’osquery.

Pour Ubuntu, téléchargez le package «.deb». Celui-ci sera probablement téléchargé dans votre répertoire «Téléchargements». Changez de répertoire dans le répertoire «Téléchargements», puis utilisez dpkg commande pour installer le fichier «.deb». Remplacez le nom du fichier dans notre exemple par le nom de celui que vous téléchargez.

cd Downloads
sudo dpkg -i osquery_4.6.0-1.linux_amd64.deb

sudo dpkg -i osquery_4.6.0-1.linux_amd64.deb dans une fenêtre de terminal

Pour Fedora, téléchargez le fichier «.rpm». Localisez le fichier sur votre disque dur et utilisez le rpm package pour l’installer. Nous utilisons le -U (option de mise à jour. Cela installe une application si elle n’est pas déjà installée sur votre système et la met à niveau si elle l’est.

sudo rpm -U osquery-4.6.0-1.linux.x86_64.rpm

sudo rpm -U osquery-4.6.0-1.linux.x86_64.rpm dans une fenêtre de terminal

Sur Manjaro, osquery est dans les référentiels par défaut. nous pouvons l’installer en utilisant pacman.

sudo pacman -Sy osquery

sudo pacman -Sy osquery dans une fenêtre de terminal

Vous pouvez tester que osquery s’est installé correctement et connaître la version que vous utilisez en lançant osquery avec le --version option. Notez qu’il y a un «i» à la fin de la commande. C’est « osqueryi » et non « osquery ». Le «i» signifie interactif.

osqueryi --version

osqueryi --version dans une fenêtre de terminal

Le shell interactif osquery

Pour démarrer osquery en mode interactif, utilisez le osqueryi commander.

osqueryi

osqueryi dans une fenêtre de terminal

Un shell interactif osquery démarre et une invite «osquery>» apparaît.

C’est ici que vous tapez le SQL et commandes dot. Les commandes point sont des commandes que vous émettez pour interagir avec le shell osquery. À une ou deux exceptions près, les commandes point ne renvoient aucune information sur votre ordinateur. Ils tirent leur nom du point ou du point « . » qui apparaît au début de toutes les commandes point.

Vous pouvez utiliser la touche «Flèche vers le haut» pour faire défiler les commandes précédemment utilisées, et la complétion par tabulation est disponible pour les noms de table.

Pour obtenir une liste des commandes point et une description rapide de chacune d’elles, utilisez le .help à l’invite «osquery>».

.help

.help dans une session interactive osquery

Pour fermer la session osquery, vous pouvez utiliser soit .exit ou .quit.

.quit

v dans une session interactive osquery

Utilisation des commandes SQL

osquery présente les informations système sur lesquelles il peut générer des rapports sous forme de tables dans une base de données. Pour pouvoir interroger cette base de données, vous devez connaître les noms des tables et les champs qu’elles contiennent chacune. le .tables La commande listera les tables pour vous.

.tables

.tables dans une session interactive osquery

Il y a beaucoup de tables. Vous pouvez faire défiler la liste vers l’avant et vers l’arrière et rechercher ceux qui vous intéressent. Disons que nous voulons en savoir plus sur le uptime table. le .schema La commande listera les noms de champ d’une table et le type de données que chaque champ contient.

.schema uptime

Disponibilité du .schema dans une session interactive osquery

Nous en savons assez maintenant pour pouvoir émettre notre première instruction SQL. Nous allons sélectionner les données du days, hours, et minutes colonnes du uptime table. N’oubliez pas qu’il s’agit de SQL, utilisez donc un point-virgule « ;»Pour mettre fin à votre commande.

select days, hours, minutes from uptime;

sélectionnez les jours, les heures et les minutes de disponibilité;  dans une session interactive osquery

Si nous voulons voir toutes les colonnes, nous pouvons utiliser un astérisque « *»Comme un raccourci représentant tous les noms de colonnes. Mais il existe une commande dot qui est encore plus rapide. Type .all suivi du nom de la table pour obtenir le même résultat. (N’oubliez pas qu’il n’y a pas de point-virgule « ; » au bout du point commandes.)

select * from uptime;
.all uptime

sélectionnez * à partir de la disponibilité;  dans une session interactive osquery

Sélection de données à partir de tables

La table des utilisateurs

Pour voir une liste de tous les noms d’utilisateur, nous pouvons interroger le users table.

select username from users;

sélectionnez le nom d'utilisateur des utilisateurs;  dans une session interactive osquery

Vous pouvez trier les données par n’importe quelle colonne dans les résultats. Dans cet exemple, nous n’avons qu’une seule colonne mais nous pouvons toujours trier les données.

select username from users order by username;

sélectionnez le nom d'utilisateur parmi les utilisateurs triés par nom d'utilisateur;  dans une session interactive osquery

Si nous voulons voir un sous-ensemble des noms d’utilisateur – ceux d’une longueur particulière, peut-être – nous pouvons ajouter plus de clauses à notre instruction SQL.

select username, directory from users where length(username)=4 order by username;

sélectionnez nom d'utilisateur, répertoire des utilisateurs où longueur (nom d'utilisateur) = 4 ordre par nom d'utilisateur;  dans une session interactive osquery

Peut-être que nous ne sommes intéressés que par un seul nom d’utilisateur.

select username, directory, shell from users where username="mary";

sélectionnez nom d'utilisateur, répertoire, shell parmi les utilisateurs où nom d'utilisateur ="Marie";  dans une session interactive osquery

Le tableau des processus

Nous pouvons appliquer les mêmes principes aux données de n’importe quel tableau. Si nous voulons connaître les détails d’un gedit processus, nous pouvons le rechercher comme ceci:

select pid, name, state, start_time from processes where name="gedit";

sélectionnez pid, name, state, start_time dans les processus où name ="gedit";  dans une session interactive osquery

Le «S» dans le state colonne signifie sommeil interruptible.

La table Log_in_users

Au lieu de regarder la liste des utilisateurs configurés comme nous l’avons fait auparavant, peut-être que nous sommes plus intéressés par les utilisateurs qui sont connectés en ce moment.

select user, host, time from logged_in_users;

sélectionnez l'utilisateur, l'hôte, l'heure, parmi les utilisateurs connectés;  dans une session interactive osquery

Pour exclure les utilisateurs non humains, utilisez le « not like»Clause SQL. le tty la colonne contient les détails du tty de l’utilisateur ou d’un tilde « ~”Si aucun tty n’est utilisé.

select user, host, time from logged_in_users where tty not like "~";

sélectionnez l'utilisateur, l'hôte, l'heure des utilisateurs connectés où tty n'aime pas "~";  dans une session interactive osquery

Nous pouvons voir que l’utilisateur avec le nom d’utilisateur «dave» est connecté deux fois.

Le «: 0» dans le host La colonne indique l’écran et le clavier connectés à l’ordinateur. Donc, cet utilisateur doit être physiquement sur les lieux. L’autre session de connexion utilisant ce nom d’utilisateur provient d’une autre adresse IP.

Cela nécessite probablement une enquête. Comment peuvent-ils accéder à distance à l’ordinateur s’ils sont ici dans le bâtiment? L’une de ces sessions pourrait être frauduleuse.

La table os_version

Pour en savoir plus sur la version Linux, interrogez le os_version table.

select name, major, minor, codename from os_version;

sélectionnez le nom, majeur, mineur, nom de code dans os_version;  dans une session interactive osquery

La table interface_addresses

le interface_addresses table contient des informations sur vos interfaces réseau.

select interface, address from interface_addresses order by interface;

sélectionnez l'interface, l'adresse de l'interface_addresses ordre par interface;  dans une session interactive osquery

La table memory_info

le memory_info Le tableau contient des informations sur la quantité de mémoire de votre ordinateur et sur la manière dont elle est utilisée.

select memory_total, memory_free, cached from memory_info;

sélectionnez memory_total, memory_free, mis en cache depuis memory_info;  dans une session interactive osquery

La table des groupes

Pour voir rapidement les groupes configurés sur votre système, utilisez le .all commande dot sur le groups table.

.tous les groupes

.tous les groupes dans une session interactive osquery

Pour afficher les détails des groupes associés aux utilisateurs, filtrez les groupes avec un ID de groupe supérieur ou égal à 1000.

select * from groups where gid>=1000;

sélectionnez * parmi les groupes où gid> = 1000;  dans une session interactive osquery » width= »646″ height= »197″/></p>
<h3><span class=La table usb_devices

Si un périphérique de bus série universel n’est pas reconnu, vous pouvez consulter ce tableau pour voir si le système d’exploitation le détecte même.

select usb_address, usb_port, version, model from usb_devices;

sélectionnez usb_address, usb_port, version, model dans usb_devices;  dans une session interactive osquery

La table deb_packages

le deb_packages Le tableau contient des détails sur tous les progiciels «.deb» qui ont été installés sur votre ordinateur. Il y a aussi un rpm_packages table pour Fedora et autres dérivés de Red Hat. Les autres systèmes de gestion de paquets ne sont pas signalés.

Il y a beaucoup de packages sur cette machine de test. Les résultats ont été limités à 10 enregistrements.

select name, version, source from deb_packages limit 10;

sélectionnez le nom, la version, la source de deb_packages limit 10;  dans une session interactive osquery

La table system_info

La table system_info contient de nombreuses informations. Nous allons simplement vérifier la marque de l’unité centrale (CPU) installée sur cet ordinateur.

select cpu_brand from system_info;

sélectionnez cpu_brand dans system_info;  dans une session interactive osquery

Le sommet de l’iceberg

osquery met les informations de plus de 150 tables à portée de main. Même si vous ne connaissez pas beaucoup SQL, vous trouverez qu’il est facile de maîtriser le peu dont vous avez besoin pour utiliser de manière productive cette excellente application.

★★★★★