Osquery est un outil open source de surveillance des menaces de sécurité développé par Facebook. Il est utilisé pour interroger les informations système, notamment la version du système, les informations sur le noyau, les processus en cours d'exécution, les informations sur la mémoire, les ports d'écoute, les utilisateurs de connexion, etc. Osquery aide les administrateurs système à écrire des requêtes SQL pour identifier, sonder et éliminer divers types de menaces. Il prend en charge plusieurs systèmes d'exploitation, dont Windows, Linux, FreeBSD et macOS.
Dans cet article, nous expliquerons comment installer et utiliser Osquery sur Ubuntu 20.04.
Prérequis
- Un serveur Ubuntu 20.04 sur la plate-forme cloud Atlantic.Net
- Un mot de passe root configuré sur votre serveur
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 20.04 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur Ubuntu 20.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
apt-get update -y
Étape 2 - Installer Osquery
Tout d'abord, installez les dépendances requises à l'aide de la commande suivante :
apt-get install gnupg2 software-properties-common wget unzip -y
Ensuite, ajoutez la clé Osquery GPG avec la commande suivante :
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Ensuite, ajoutez le référentiel Osquery à APT à l'aide de la commande suivante :
add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
Une fois le référentiel ajouté, mettez à jour le référentiel et installez Osquery avec la commande suivante :
apt-get update -y apt-get install osquery -y
Étape 3 - Connectez-vous à la console Osquery
Osquery fournit un shell interactif pour exécuter des requêtes et explorer l'état actuel de votre système d'exploitation.
Vous pouvez vous connecter au shell Osquery en utilisant la commande suivante :
osqueryi
Une fois connecté, vous devriez obtenir le résultat suivant :
Using a virtual database. Need help, type '.help' osquery>
Ensuite, affichez les paramètres par défaut d'Osquery à l'aide de la commande suivante :
osquery> .show
Vous devriez voir le résultat suivant :
osquery - being built, with love.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
osquery 4.9.0
using SQLite 3.35.5
General settings:
Flagfile:
Config: filesystem (/etc/osquery/osquery.conf)
Logger: filesystem (/var/log/osquery/)
Distributed: tls
Database: ephemeral
Extensions: core
Socket: /root/.osquery/shell.em
Shell settings:
echo: off
headers: on
mode: pretty
nullvalue: ""
output: stdout
separator: "|"
width:
Non-default flags/options:
database_path: /root/.osquery/shell.db
disable_database: true
disable_events: true
disable_logging: true
disable_watchdog: true
extensions_socket: /root/.osquery/shell.em
hash_delay: 0
logtostderr: true
stderrthreshold: 0
Osquery a beaucoup de tables disponibles pour la requête. Vous pouvez les lister avec la commande suivante :
osquery> .tables
Exemple de sortie :
=> acpi_tables => apparmor_events => apparmor_profiles => apt_sources => arp_cache => atom_packages => augeas => authorized_keys => azure_instance_metadata => azure_instance_tags => block_devices => bpf_process_events => bpf_socket_events => carbon_black_info => carves => chrome_extension_content_scripts => chrome_extensions => cpu_time => cpuid => crontab => curl => curl_certificate => deb_packages => device_file => device_hash => device_partitions => disk_encryption => dns_resolvers => docker_container_fs_changes => docker_container_labels => docker_container_mounts => docker_container_networks => docker_container_ports
Osquery a plusieurs modes pour afficher la sortie de la requête. Ici, nous allons utiliser le mode ligne pour afficher la sortie.
Pour définir le mode ligne, exécutez la commande suivante :
osquery> .mode line
Étape 4 - Comment utiliser Osquery
Pour obtenir des informations sur votre système d'exploitation en cours d'exécution, exécutez :
osquery> SELECT * FROM system_info;
Exemple de sortie :
hostname = ubuntu2004
uuid = a83cffe2-50f4-4fea-9ef4-423853fdc122
cpu_type = x86_64
cpu_subtype = 6
cpu_brand = QEMU Virtual CPU version 2.5+
cpu_physical_cores = 1
cpu_logical_cores = 1
cpu_microcode = 0x1
physical_memory = 2084278272
hardware_vendor = QEMU
hardware_model = Standard PC (i440FX + PIIX, 1996)
hardware_version = pc-i440fx-bionic
hardware_serial =
board_vendor =
board_model =
board_version =
board_serial =
computer_name = ubuntu2004
local_hostname = ubuntu2004
Pour filtrer la sortie des informations système, exécutez :
osquery> SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;
Exemple de sortie :
hostname = ubuntu2004
cpu_type = x86_64
physical_memory = 2084278272
hardware_vendor = QEMU
hardware_model = Standard PC (i440FX + PIIX, 1996)
Pour afficher la version de votre système d'exploitation, exécutez :
osquery> SELECT * FROM os_version;
Exemple de sortie :
name = Ubuntu
version = 20.04 LTS (Focal Fossa)
major = 20
minor = 4
patch = 0
build =
platform = ubuntu
platform_like = debian
codename = focal
arch = x86_64
Pour afficher les informations de votre noyau, exécutez :
osquery> SELECT * FROM kernel_info;
Exemple de sortie :
version = 5.4.0-29-generic
arguments = ro net.ifnames=0 biosdevname=0 console=ttyS0 console=tty0
path = /boot/vmlinuz-5.4.0-29-generic
device = UUID=29a0b164-1ba1-45a7-b23a-cdb98f23edbc
Pour afficher tous les ports d'écoute avec le nom du service et le PID, exécutez :
osquery> SELECT DISTINCT processes.name, listening_ports.port, processes.pid FROM listening_ports JOIN processes USING (pid) WHERE listening_ports.address = '0.0.0.0';
Exemple de sortie :
name = unbound port = 53 pid = 3407 name = sshd port = 22 pid = 649 name = unbound port = 953 pid = 3407 name = darkstat port = 666 pid = 6100 name = darkstat port = 667 pid = 6109 name = apt-cacher-ng port = 3142 pid = 4071 name = ntpd port = 123 pid = 483
Pour afficher les informations du package Apache, exécutez :
osquery> SELECT name, version FROM deb_packages WHERE name="apache2";
Exemple de sortie :
+---------+-------------------+ | name | version | +---------+-------------------+ | apache2 | 2.4.41-4ubuntu3.4 | +---------+-------------------+
Pour afficher les informations sur la mémoire système, exécutez :
osquery> SELECT * FROM memory_info;
Exemple de sortie :
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+ | memory_total | memory_free | buffers | cached | swap_cached | active | inactive | swap_total | swap_free | +--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+ | 2084278272 | 1358233600 | 44519424 | 520896512 | 0 | 406622208 | 222449664 | 495411200 | 495411200 | +--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
Pour afficher les informations de toutes les interfaces réseau, exécutez :
osquery> SELECT * FROM interface_addresses;
Exemple de sortie :
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+ | interface | address | mask | broadcast | point_to_point | type | +-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+ | lo | 127.0.0.1 | 255.0.0.0 | | 127.0.0.1 | unknown | | eth0 | 69.87.221.220 | 255.255.255.0 | 69.87.221.255 | | unknown | | lo | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | | | unknown | | eth0 | fe80::200:45ff:fe57:dddc%eth0 | ffff:ffff:ffff:ffff:: | | | unknown | +-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
Pour vérifier la disponibilité du système, exécutez :
osquery> SELECT * FROM uptime;
Exemple de sortie :
+------+-------+---------+---------+---------------+ | days | hours | minutes | seconds | total_seconds | +------+-------+---------+---------+---------------+ | 0 | 1 | 55 | 5 | 6905 | +------+-------+---------+---------+---------------+
Pour répertorier tous les utilisateurs dont l'UID est supérieur à 1 000, exécutez :
osquery> SELECT * FROM users WHERE uid>=1000;
Exemple de sortie :
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+ | uid | gid | uid_signed | gid_signed | username | description | directory | shell | uuid | +-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+ | 65534 | 65534 | 65534 | 65534 | nobody | nobody | /nonexistent | /usr/sbin/nologin | | | 65534 | 65534 | 65534 | 65534 | nobody | nobody | / | /usr/sbin/nologin | | +-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
Pour vérifier les derniers utilisateurs connectés, exécutez :
osquery> SELECT * FROM last;
Exemple de sortie :
+----------+-------+------+------+------------+-----------------+ | username | tty | pid | type | time | host | +----------+-------+------+------+------------+-----------------+ | root | pts/0 | 1013 | 7 | 1629008887 | 106.213.193.155 | | root | pts/1 | 3372 | 7 | 1629010656 | 106.213.193.155 | | root | pts/2 | 4158 | 7 | 1629013021 | 106.213.193.155 | +----------+-------+------+------+------------+-----------------+
Pour afficher tous les utilisateurs connectés, exécutez :
osquery> SELECT * FROM logged_in_users;
Exemple de sortie :
+-----------+----------+------------+------------------+------------+------+ | type | user | tty | host | time | pid | +-----------+----------+------------+------------------+------------+------+ | boot_time | reboot | ~ | 5.4.0-29-generic | 1629008369 | 0 | | init | | /dev/tty1 | | 1629008378 | 491 | | init | | /dev/ttyS0 | | 1629008378 | 484 | | login | LOGIN | ttyS0 | | 1629008378 | 484 | | login | LOGIN | tty1 | | 1629008378 | 491 | | runlevel | runlevel | ~ | 5.4.0-29-generic | 1629008383 | 53 | | user | root | pts/0 | 106.213.193.155 | 1629008887 | 1013 | | user | root | pts/1 | 106.213.193.155 | 1629010656 | 3372 | | user | root | pts/2 | 106.213.193.155 | 1629013021 | 4158 | +-----------+----------+------------+------------------+------------+------+
Conclusion
Dans le guide ci-dessus, nous avons expliqué comment installer et utiliser Osquery pour obtenir des données du système d'exploitation en exécutant des requêtes basées sur SQL. C'est un outil très utile et facile à utiliser pour trouver des portes dérobées, des logiciels malveillants, des processus zombies, etc. Commencez dès aujourd'hui avec Osquery sur votre VPS d'Atlantic.Net !