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 !