Osquery je open-source nástroj pro monitorování bezpečnostních hrozeb vyvinutý společností Facebook. Používá se k dotazování na systémové informace včetně verze systému, informací o jádře, běžících procesech, informací o paměti, naslouchacích portů, přihlášení uživatelů a dalších. Osquery pomáhá systémovým administrátorům psát SQL dotazy k identifikaci, testování a eliminaci různých typů hrozeb. Podporuje několik operačních systémů včetně Windows, Linux, FreeBSD a macOS.
V tomto příspěvku vysvětlíme, jak nainstalovat a používat Osquery na Ubuntu 20.04.
Předpoklady
- Server Ubuntu 20.04 na cloudové platformě Atlantic.Net
- Heslo uživatele root nakonfigurované na vašem serveru
Krok 1 – Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte Ubuntu 20.04 s alespoň 2 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte ke svému serveru Ubuntu 20.04, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
apt-get update -y
Krok 2 – Instalace Osquery
Nejprve nainstalujte požadované závislosti pomocí následujícího příkazu:
apt-get install gnupg2 software-properties-common wget unzip -y
Dále přidejte klíč Osquery GPG pomocí následujícího příkazu:
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Dále přidejte úložiště Osquery do APT pomocí následujícího příkazu:
add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
Jakmile je úložiště přidáno, aktualizujte úložiště a nainstalujte Osquery pomocí následujícího příkazu:
apt-get update -y apt-get install osquery -y
Krok 3 – Připojte se k Osquery Console
Osquery poskytuje interaktivní shell pro provádění dotazů a zkoumání aktuálního stavu vašeho operačního systému.
K prostředí Osquery se můžete připojit pomocí následujícího příkazu:
osqueryi
Jakmile se připojíte, měli byste získat následující výstup:
Using a virtual database. Need help, type '.help' osquery>
Dále zobrazte výchozí nastavení Osquery pomocí následujícího příkazu:
osquery> .show
Měli byste vidět následující výstup:
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 má k dispozici mnoho tabulek pro dotaz. Můžete je vypsat pomocí následujícího příkazu:
osquery> .tables
Ukázkový výstup:
=> 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 má několik režimů pro zobrazení výstupu dotazu. Zde použijeme k zobrazení výstupu řádkový režim.
Chcete-li nastavit režim linky, spusťte následující příkaz:
osquery> .mode line
Krok 4 – Jak používat Osquery
Chcete-li získat informace o běžícím operačním systému, spusťte:
osquery> SELECT * FROM system_info;
Ukázkový výstup:
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
Chcete-li filtrovat výstup systémových informací, spusťte:
osquery> SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;
Ukázkový výstup:
hostname = ubuntu2004 cpu_type = x86_64 physical_memory = 2084278272 hardware_vendor = QEMU hardware_model = Standard PC (i440FX + PIIX, 1996)
Chcete-li zobrazit verzi operačního systému, spusťte:
osquery> SELECT * FROM os_version;
Ukázkový výstup:
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
Chcete-li zobrazit informace o vašem jádře, spusťte:
osquery> SELECT * FROM kernel_info;
Ukázkový výstup:
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
Chcete-li zobrazit všechny naslouchající porty s názvem služby a PID, spusťte:
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';
Ukázkový výstup:
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
Chcete-li zobrazit informace o balíčku Apache, spusťte:
osquery> SELECT name, version FROM deb_packages WHERE name="apache2";
Ukázkový výstup:
+---------+-------------------+ | name | version | +---------+-------------------+ | apache2 | 2.4.41-4ubuntu3.4 | +---------+-------------------+
Chcete-li zobrazit informace o systémové paměti, spusťte:
osquery> SELECT * FROM memory_info;
Ukázkový výstup:
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+ | memory_total | memory_free | buffers | cached | swap_cached | active | inactive | swap_total | swap_free | +--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+ | 2084278272 | 1358233600 | 44519424 | 520896512 | 0 | 406622208 | 222449664 | 495411200 | 495411200 | +--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
Chcete-li zobrazit informace o všech síťových rozhraních, spusťte:
osquery> SELECT * FROM interface_addresses;
Ukázkový výstup:
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+ | 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 | +-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
Chcete-li zkontrolovat dostupnost systému, spusťte:
osquery> SELECT * FROM uptime;
Ukázkový výstup:
+------+-------+---------+---------+---------------+ | days | hours | minutes | seconds | total_seconds | +------+-------+---------+---------+---------------+ | 0 | 1 | 55 | 5 | 6905 | +------+-------+---------+---------+---------------+
Chcete-li vypsat všechny uživatele, jejichž UID je větší než 1000, spusťte:
osquery> SELECT * FROM users WHERE uid>=1000;
Ukázkový výstup:
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+ | 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 | | +-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
Chcete-li zkontrolovat poslední přihlášené uživatele, spusťte:
osquery> SELECT * FROM last;
Ukázkový výstup:
+----------+-------+------+------+------------+-----------------+ | 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 | +----------+-------+------+------+------------+-----------------+
Chcete-li zobrazit všechny přihlášené uživatele, spusťte:
osquery> SELECT * FROM logged_in_users;
Ukázkový výstup:
+-----------+----------+------------+------------------+------------+------+ | 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 | +-----------+----------+------------+------------------+------------+------+
Závěr
Ve výše uvedené příručce jsme vysvětlili, jak nainstalovat a používat Osquery k získávání dat z operačního systému spuštěním dotazů založených na SQL. Je to velmi užitečný a snadno použitelný nástroj k nalezení zadních vrátek, malwaru, zombie procesů a dalších. Začněte s Osquery na svém VPS od Atlantic.Net ještě dnes!