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!