GNU/Linux >> Znalost Linux >  >> Linux

Jak monitorovat zabezpečení serveru Linux pomocí Osquery

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!


Linux
  1. Jak monitorovat váš Linux server?

  2. 5 tipů, jak začít se zabezpečením serveru Linux

  3. Jak monitorovat výkon systému Linux pomocí Sysstat

  1. Monitorujte Linuxový server pomocí Prometheus a Grafana

  2. Jak zaregistruji server Linux se serverem Windows DNS

  3. Jak nastavit linuxový server jako router s NAT

  1. Monitorujte svůj Linux server pomocí Checkmk

  2. Jak pracovat s SFTP klientem v Linuxu – 10 příkazů sftp

  3. Jak monitorovat využití sítě pomocí nload v Linuxu?