Osquery ist ein von Facebook entwickeltes Open-Source-Tool zur Überwachung von Sicherheitsbedrohungen. Es wird zum Abfragen von Systeminformationen verwendet, einschließlich Systemversion, Kernelinformationen, laufende Prozesse, Speicherinformationen, Überwachungsports, Anmeldebenutzer und mehr. Osquery hilft Systemadministratoren beim Schreiben von SQL-Abfragen, um verschiedene Arten von Bedrohungen zu identifizieren, zu untersuchen und zu beseitigen. Es unterstützt mehrere Betriebssysteme, darunter Windows, Linux, FreeBSD und macOS.
In diesem Beitrag erklären wir, wie man Osquery unter Ubuntu 20.04 installiert und verwendet.
Voraussetzungen
- Ein Ubuntu 20.04-Server auf der Atlantic.Net Cloud Platform
- Ein auf Ihrem Server konfiguriertes Root-Passwort
Schritt 1 – Atlantic.Net Cloud-Server erstellen
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Ubuntu 20.04 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Ubuntu 20.04-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
apt-get update -y
Schritt 2 – Osquery installieren
Installieren Sie zuerst die erforderlichen Abhängigkeiten mit dem folgenden Befehl:
apt-get install gnupg2 software-properties-common wget unzip -y
Fügen Sie als Nächstes den Osquery-GPG-Schlüssel mit dem folgenden Befehl hinzu:
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Als nächstes fügen Sie das Osquery-Repository mit dem folgenden Befehl zu APT hinzu:
add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
Sobald das Repository hinzugefügt wurde, aktualisieren Sie das Repository und installieren Sie Osquery mit dem folgenden Befehl:
apt-get update -y apt-get install osquery -y
Schritt 3 – Verbindung zur Osquery-Konsole herstellen
Osquery bietet eine interaktive Shell zum Ausführen von Abfragen und Erkunden des aktuellen Zustands Ihres Betriebssystems.
Sie können sich mit dem folgenden Befehl mit der Osquery-Shell verbinden:
osqueryi
Sobald Sie verbunden sind, sollten Sie die folgende Ausgabe erhalten:
Using a virtual database. Need help, type '.help' osquery>ein
Zeigen Sie als Nächstes die Standardeinstellungen von Osquery mit dem folgenden Befehl an:
osquery> .show
Sie sollten die folgende Ausgabe sehen:
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 hat viele Tabellen, die für Abfragen verfügbar sind. Sie können sie mit dem folgenden Befehl auflisten:
osquery> .tables
Beispielausgabe:
=> 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 hat mehrere Modi, um die Abfrageausgabe anzuzeigen. Hier verwenden wir den Zeilenmodus, um die Ausgabe anzuzeigen.
Führen Sie den folgenden Befehl aus, um den Zeilenmodus festzulegen:
osquery> .mode line
Schritt 4 – Verwendung von Osquery
Um Informationen über Ihr laufendes Betriebssystem zu erhalten, führen Sie Folgendes aus:
osquery> SELECT * FROM system_info;
Beispielausgabe:
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
Um die Ausgabe der Systeminformationen zu filtern, führen Sie Folgendes aus:
osquery> SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;
Beispielausgabe:
hostname = ubuntu2004
cpu_type = x86_64
physical_memory = 2084278272
hardware_vendor = QEMU
hardware_model = Standard PC (i440FX + PIIX, 1996)
Um Ihre Betriebssystemversion anzuzeigen, führen Sie Folgendes aus:
osquery> SELECT * FROM os_version;
Beispielausgabe:
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
Um Ihre Kernel-Informationen anzuzeigen, führen Sie Folgendes aus:
osquery> SELECT * FROM kernel_info;
Beispielausgabe:
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
Führen Sie Folgendes aus, um alle Listening-Ports mit dem Dienstnamen und der PID anzuzeigen:
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';
Beispielausgabe:
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
Um Informationen für das Apache-Paket anzuzeigen, führen Sie Folgendes aus:
osquery> SELECT name, version FROM deb_packages WHERE name="apache2";
Beispielausgabe:
+---------+-------------------+ | name | version | +---------+-------------------+ | apache2 | 2.4.41-4ubuntu3.4 | +---------+-------------------+
Um Informationen zum Systemspeicher anzuzeigen, führen Sie Folgendes aus:
osquery> SELECT * FROM memory_info;
Beispielausgabe:
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+ | memory_total | memory_free | buffers | cached | swap_cached | active | inactive | swap_total | swap_free | +--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+ | 2084278272 | 1358233600 | 44519424 | 520896512 | 0 | 406622208 | 222449664 | 495411200 | 495411200 | +--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
Um Informationen zu allen Netzwerkschnittstellen anzuzeigen, führen Sie Folgendes aus:
osquery> SELECT * FROM interface_addresses;
Beispielausgabe:
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+ | 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 | +-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
Um die Systemverfügbarkeit zu überprüfen, führen Sie Folgendes aus:
osquery> SELECT * FROM uptime;
Beispielausgabe:
+------+-------+---------+---------+---------------+ | days | hours | minutes | seconds | total_seconds | +------+-------+---------+---------+---------------+ | 0 | 1 | 55 | 5 | 6905 | +------+-------+---------+---------+---------------+
Um alle Benutzer aufzulisten, deren UID größer als 1000 ist, führen Sie Folgendes aus:
osquery> SELECT * FROM users WHERE uid>=1000;
Beispielausgabe:
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+ | 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 | | +-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
Führen Sie Folgendes aus, um die zuletzt angemeldeten Benutzer zu überprüfen:
osquery> SELECT * FROM last;
Beispielausgabe:
+----------+-------+------+------+------------+-----------------+ | 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 | +----------+-------+------+------+------------+-----------------+
Um alle angemeldeten Benutzer anzuzeigen, führen Sie Folgendes aus:
osquery> SELECT * FROM logged_in_users;
Beispielausgabe:
+-----------+----------+------------+------------------+------------+------+ | 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 | +-----------+----------+------------+------------------+------------+------+
Schlussfolgerung
In der obigen Anleitung haben wir erklärt, wie man Osquery installiert und verwendet, um Daten vom Betriebssystem abzurufen, indem man SQL-basierte Abfragen ausführt. Es ist ein sehr nützliches und benutzerfreundliches Tool, um Backdoors, Malware, Zombie-Prozesse und mehr zu finden. Beginnen Sie noch heute mit Osquery auf Ihrem VPS von Atlantic.Net!