Osquery je open source software pro monitorování, dotazy a analýzu operačního systému. Vytvořil ji Facebook a odhaluje operační systém jako vysoce výkonnou relační databázi, kterou lze dotazovat pomocí dotazů založených na SQL.
Osquery je multiplatformní software, lze jej nainstalovat na Linux, Windows, MacOS a FreeBSD. Osquery nám umožňuje prozkoumat profil operačního systému, výkon, zabezpečení a mnoho dalších metrik pomocí dotazů založených na SQL.
V tomto tutoriálu vám ukážu, jak nainstalovat osquery na linuxové distribuce Ubuntu 18.04 LTS a CentOS 7. Nainstalujeme osquery, naučíme se používat interaktivní režim 'osqueryi' a jak monitorovat živý systém pomocí osquery.
Předpoklady
- Linux OS (Ubuntu 18.04 nebo CentOS 7)
- Oprávnění uživatele root
Co uděláme
- Nainstalujte osquery na operační systém Linux
- Základní použití interaktivního režimu osqueryi
- Monitorovací systém pomocí osquery
Krok 1 – Instalace osquery na operační systém Linux
osquery poskytuje své vlastní úložiště pro každou platformu. V tomto kroku nainstalujeme balíček osquery z oficiálního úložiště osquery.
Na Ubuntu
Přidejte klíč osquery.
export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
Nainstalujte balíček osquery na Ubuntu.
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y
V systému CentOS
Přidejte klíč osquery.
curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery
Nainstalujte balíček osquery na CentOS 7.
sudo yum-config-manager --add-repo https://pkg.osquery.io/rpm/osquery-s3-rpm.repo
sudo yum-config-manager --enable osquery-s3-rpm
sudo yum install osquery
Počkejte, až se nainstalují všechny balíčky.
Krok 2 – Základní použití interaktivního režimu osqueryi
osquery poskytuje uživatelům dvě hlavní rozhraní, osqueryi a osqueryd.
osqueryi je interaktivní dotazovací konzole osquery. Je to jako příkazový shell 'mysql' v MySQL a shell 'psql' v databázi PostgreSQL.
V tomto kroku se naučíme základní použití interaktivního režimu 'osqueryi'.
Zadejte příkaz 'osqueryi' na serverovém terminálu a získáte režim interaktivní konzoly osquery.
osqueryi
Dále se seznámíme se základním příkazem režimu konzoly osqueryi.
Zobrazit všechny základní dostupné příkazy v interaktivním režimu osqueryi.
.help
Zobrazit aktuální konfiguraci a nastavení osquery.
.show
Osquery poskytuje více režimů zobrazení pro zobrazení výsledků dotazu. Výchozí režim je režim „pěkný“.
Nyní změníme režim zobrazení výsledků dotazu, pro tuto příručku použijeme režim 'čára'.
.mode csv
.mode list
.mode column
.mode line
.mode pretty
Osquery odhaluje operační systém jako relační databázový systém. Všechny informace o systému jsou uloženy v tabulkách osquery a můžeme prozkoumat informace o celém systému dotazem na všechny dostupné tabulky.
Chcete-li získat seznam všech dostupných tabulek v osquery, spusťte níže uvedený příkaz.
.tables
Jakmile budeme znát všechny dostupné tabulky v systému osquery, podíváme se na sloupce.
Pomocí následujícího příkazu získáte schéma (sloupce, typy) tabulek.
.schema users
.schema processes
A získáte všechny sloupce schématu v tabulce.
Krok 3 – Základní monitorování systému Linux pomocí dotazu
V tomto kroku budeme monitorovat živý systém Linux pomocí osquery. Budeme monitorovat informace o profilu systému, uživatele, síťová rozhraní atd. prostřednictvím interaktivního režimu osqueryi.
Získat systémové informace
Zobrazit podrobnosti o systémovém hardwaru.
SELECT * FROM system_info;
SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;
Získat verzi operačního systému
Zobrazit aktuální informace o operačním systému, včetně verze operačního systému, platformy, opravy operačního systému a kódového názvu.
SELECT * FROM os_version;
Zobrazit verzi jádra a moduly
Chcete-li zkontrolovat informace o jádře systému, osquery poskytuje tabulky 'kernel_info' a 'kernel_modules'.
Ukaž jádro používané systémem.
SELECT * FROM kernel_info;
Zobrazit všechny načtené moduly jádra v systému.
SELECT * FROM kernel_modules LIMIT 5;
Kontrola úložiště a balíčků
osquery poskytuje tabulky pro kontrolu repozitářů a nainstalovaných balíčků v Linuxu Ubuntu i CentOS.
– Na Ubuntu
Na Ubuntu můžeme zkontrolovat dostupné repozitáře prostřednictvím 'apt_sources' a zkontrolovat balíčky nainstalované prostřednictvím 'deb_packages'.
Zkontrolujte všechna dostupná úložiště Ubuntu.
SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;
Zkontrolujte všechny balíčky nainstalované pomocí tabulky deb_packages.
SELECT * FROM deb_packages;
Zobrazit pouze název balíčku a verzi.
SELECT name, version FROM deb_packages ORDER BY name;
Pro konkrétní balíček přidejte filtr názvu.
SELECT name, version FROM deb_packages WHERE name="nginx";
– V systému CentOS
Na CentOS můžeme zkontrolovat dostupné úložiště prostřednictvím 'yum_sources' a zkontrolovat balíčky nainstalované prostřednictvím 'rpm_packages'.
Zkontrolujte všechna dostupná úložiště CentOS.
SELECT * FROM yum_sources;
SELECT name, baseurl, enabled FROM yum_sources;
Zkontrolujte povolené úložiště přidáním filtru 'enabled'.
SELECT name, baseurl, enabled FROM yum_sources WHERE enabled=1;
Zkontrolujte všechny balíčky nainstalované pomocí tabulky rpm_packages.
SELECT * FROM rpm_packages;
SELECT name, version FROM rpm_packages ORDER BY name;
Pro konkrétní název balíčku přidejte filtr názvu.
SELECT name, version FROM rpm_packages WHERE name="firewalld";
Informace o připojení disku
Můžeme použít tabulku připojení ke kontrole všech podrobností o systémové jednotce, včetně volných inodů, příznaků, typu atd.
Zkontrolujte všechny disky připojené systémem.
SELECT * FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts;
Pro konkrétní typ zařízení.
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="ext4";
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="tmpfs";
Informace o paměti
Kontrola systémové paměti v bajtech.
SELECT * FROM memory_info;
Informace o síťovém rozhraní
Kontrola síťové adresy pomocí 'interface_addresses'.
SELECT * FROM interface_addresses;
Kontrola podrobností síťového rozhraní pomocí 'interface_details'.
SELECT * FROM interface_details;
SELECT interface, mac, ipackets, opackets, ibytes, obytes FROM interface_details;
Doba provozu serveru
Kontrola provozuschopnosti serveru.
SELECT * FROM uptime;
Kontrola uživatele
osqery poskytuje podrobné tabulky pro kontrolu uživatelů systému. Můžeme použít tabulku 'users' ke kontrole všech uživatelů v systému, používat tabulku 'poslední' ke kontrole posledního přihlášení uživatelů a pomocí 'logged_in_users' získat přihlášeného uživatele s aktivním shellem.
Chcete-li zkontrolovat všechny dostupné uživatele na serveru, použijte tabulku 'users'.
SELECT * FROM users;
Pro běžné uživatele můžeme zadat uid na '>=1000'.
SELECT * FROM users WHERE uid>=1000;
Chcete-li zkontrolovat poslední přihlášené uživatele, použijte tabulku 'poslední'.
SELECT * FROM last;
Pro normální uživatele vyplňte 'type' na '7'.
SELECT username, time, host FROM last WHERE type=7;
Pro kontrolu přihlášeného uživatele s aktivním shellem použijte tabulky 'logged_in_users'.
SELECT * FROM logged_in_users;
Informace o firewallu tabulek IP
Pomocí tabulky 'tables' můžeme zkontrolovat všechna dostupná pravidla firewallu, včetně řetězce, politiky, src/dst IP a portu atd.
Zobrazit všechna pravidla iptables.
SELECT * FROM iptables;
Specifikujte pravidlo pomocí vlastního dotazu níže.
SELECT chain, policy, src_ip, dst_ip FROM iptables WHERE chain="POSTROUTING" order by src_ip;
Informace o procesu
Celý proces aplikace můžeme zkontrolovat pomocí tabulky 'procesy'. Poskytuje podrobné informace o procesu včetně pid, názvu, cesty, příkazu atd.
Dotaz na základní procesy pro kontrolu všech spuštěných aplikací.
SELECT * FROM processes;
Zadejte sloupce pro pid atd., cestu a příkaz.
SELECT pid, name, path, cmdline FROM processes;
Kontrola úlohy Cron
Zkontrolujte dostupnou úlohu cron a čas spuštění skriptu pomocí tabulky 'crontab'.
SELECT * FROM crontab;
Binární soubor SUID
SUID (Nastavit uživatelské ID vlastníka při spuštění) je speciální typ oprávnění k souboru udělená souboru a většinou binárním spustitelným souborům.
Zkontrolujte všechny dostupné uvedené binární soubory.
SELECT * FROM suid_bin;
Zadejte uživatelské jméno a název skupiny.
SELECT * FROM suid_bin WHERE username="root" AND groupname="nobody" order by path;
A vše výše uvedené je základní monitorování systému Linux pomocí osquery.