GNU/Linux >> Linux の 問題 >  >> Linux

Osqueryを使用してLinuxサーバーのセキュリティを監視する方法

Osqueryは、Facebookによって開発されたオープンソースのセキュリティ脅威監視ツールです。これは、システムバージョン、カーネル情報、実行中のプロセス、メモリ情報、リスニングポート、ログインユーザーなどのシステム情報を照会するために使用されます。 Osqueryは、システム管理者がさまざまなタイプの脅威を識別、調査、および排除するためのSQLクエリを作成するのに役立ちます。 Windows、Linux、FreeBSD、macOSなどのいくつかのオペレーティングシステムをサポートしています。

この投稿では、Ubuntu20.04にOsqueryをインストールして使用する方法について説明します。

前提条件

  • Atlantic.Netクラウドプラットフォーム上のUbuntu20.04サーバー
  • サーバーで構成されているrootパスワード

ステップ1-Atlantic.Netクラウドサーバーを作成する

まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてUbuntu20.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。

Ubuntu 20.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。

apt-get update -y

ステップ2–Osqueryをインストールする

まず、次のコマンドを使用して必要な依存関係をインストールします。

apt-get install gnupg2 software-properties-common wget unzip -y

次に、次のコマンドを使用してOsqueryGPGキーを追加します。

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY

次に、次のコマンドを使用してOsqueryリポジトリをAPTに追加します。

add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'

リポジトリが追加されたら、リポジトリを更新し、次のコマンドを使用してOsqueryをインストールします。

apt-get update -y
apt-get install osquery -y

ステップ3–Osqueryコンソールに接続する

Osqueryは、クエリを実行し、オペレーティングシステムの現在の状態を調査するためのインタラクティブなシェルを提供します。

次のコマンドを使用して、Osqueryシェルに接続できます。

osqueryi

接続すると、次の出力が表示されます。

Using a virtual database. Need help, type '.help'
osquery>

次に、次のコマンドを使用してOsqueryのデフォルト設定を表示します。

osquery> .show

次の出力が表示されます。

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には、クエリに使用できるテーブルがたくさんあります。次のコマンドでそれらを一覧表示できます:

osquery> .tables

サンプル出力:

  => 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には、クエリ出力を表示するためのいくつかのモードがあります。ここでは、ラインモードを使用して出力を表示します。

ラインモードを設定するには、次のコマンドを実行します。

osquery> .mode line

ステップ4–Osqueryの使用方法

実行中のオペレーティングシステムに関する情報を取得するには、次を実行します。

osquery> SELECT * FROM system_info;

サンプル出力:

          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

システム情報出力をフィルタリングするには、次のコマンドを実行します。

osquery> SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;

サンプル出力:

       hostname = ubuntu2004
       cpu_type = x86_64
physical_memory = 2084278272
hardware_vendor = QEMU
 hardware_model = Standard PC (i440FX + PIIX, 1996)

オペレーティングシステムのバージョンを表示するには、次を実行します:

osquery> SELECT * FROM os_version;

サンプル出力:

         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

カーネル情報を表示するには、次のコマンドを実行します:

osquery> SELECT * FROM kernel_info;

サンプル出力:

  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

サービス名とPIDを含むすべてのリスニングポートを表示するには、次のコマンドを実行します。

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';

サンプル出力:

 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

Apacheパッケージの情報を表示するには、次のコマンドを実行します。

osquery> SELECT name, version FROM deb_packages WHERE name="apache2";

サンプル出力:

+---------+-------------------+
| name    | version           |
+---------+-------------------+
| apache2 | 2.4.41-4ubuntu3.4 |
+---------+-------------------+

システムメモリ情報を表示するには、次を実行します。

osquery> SELECT * FROM memory_info;

サンプル出力:

+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
| memory_total | memory_free | buffers  | cached    | swap_cached | active    | inactive  | swap_total | swap_free |
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+
| 2084278272   | 1358233600  | 44519424 | 520896512 | 0           | 406622208 | 222449664 | 495411200  | 495411200 |
+--------------+-------------+----------+-----------+-------------+-----------+-----------+------------+-----------+

すべてのネットワークインターフェースの情報を表示するには、次のコマンドを実行します。

osquery> SELECT * FROM interface_addresses;

サンプル出力:

+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+
| 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 |
+-----------+-------------------------------+-----------------------------------------+---------------+----------------+---------+

システムの稼働時間を確認するには、次のコマンドを実行します:

osquery> SELECT * FROM uptime;

サンプル出力:

+------+-------+---------+---------+---------------+
| days | hours | minutes | seconds | total_seconds |
+------+-------+---------+---------+---------------+
| 0    | 1     | 55      | 5       | 6905          |
+------+-------+---------+---------+---------------+

UIDが1000を超えるすべてのユーザーを一覧表示するには、次のコマンドを実行します。

osquery> SELECT * FROM users WHERE uid>=1000;

サンプル出力:

+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+
| 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 |      |
+-------+-------+------------+------------+----------+-------------+--------------+-------------------+------+

最後にログインしたユーザーを確認するには、次のコマンドを実行します:

osquery> SELECT * FROM last;

サンプル出力:

+----------+-------+------+------+------------+-----------------+
| 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 |
+----------+-------+------+------+------------+-----------------+

ログインしているすべてのユーザーを表示するには、次のコマンドを実行します:

osquery> SELECT * FROM logged_in_users;

サンプル出力:

+-----------+----------+------------+------------------+------------+------+
| 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 |
+-----------+----------+------------+------------------+------------+------+

結論

上記のガイドでは、SQLベースのクエリを実行してオペレーティングシステムからデータを取得するためにOsqueryをインストールして使用する方法を説明しました。これは、バックドア、マルウェア、ゾンビプロセスなどを見つけるための非常に便利で使いやすいツールです。今すぐAtlantic.NetからVPSでOsqueryを使い始めましょう!


Linux
  1. Linuxサーバーを監視する方法は?

  2. Sysstatを使用してLinuxシステムのパフォーマンスを監視する方法

  3. NAT を使用して Linux サーバーをルーターとして設定する方法

  1. Linuxサーバーのセキュリティを開始するための5つのヒント

  2. PrometheusとGrafanaでLinuxサーバーを監視する

  3. LinuxでSFTPクライアントを操作する方法–10sftpコマンド

  1. CheckmkでLinuxサーバーを監視する

  2. Linuxでnloadを使用してネットワークの使用状況を監視する方法は?

  3. Linux サーバーを Windows DNS サーバーに登録する方法