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

Debian10にosqueryをインストールする方法

osqueryは、Facebookが開発した無料のオープンソースツールで、メモリ使用量、インストール済みパッケージ、プロセス情報、ログインユーザーなどのオペレーティングシステム関連情報のクエリに使用できます。リスニングポートなど。 Windows、Linux、FreeBSD、MacOSなどのいくつかのオペレーティングシステムで実行できます。これは、パフォーマンスと運用上の問題をトラブルシューティングするためのさまざまなユースケースに非常に役立つツールです。 OSの分析と監視を実行するのに役立つ多くのツールが付属しています。

このチュートリアルでは、Debian10にosqueryをインストールして使用する方法を学びます。

前提条件
  • Debian10を実行しているサーバー。
  • ルートパスワードはサーバーで構成されています。
はじめに

開始する前に、システムのパッケージを最新バージョンに更新することをお勧めします。次のコマンドを使用して、すべてのパッケージを更新できます。

apt-get update -y
apt-get upgrade -y

すべてのパッケージが更新されたら、システムを再起動して変更を適用します。

osqueryをインストールする

デフォルトでは、osqueryはDebian10のデフォルトリポジトリでは利用できません。そのため、システムにosqueryリポジトリを追加する必要があります。

まず、次のコマンドを使用してGPGキーをダウンロードして追加します。

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B

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

apt-get install software-properties-common -y
add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'

次に、リポジトリを更新し、次のコマンドを使用してosqueryをインストールします。

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

インストールが完了したら、次のコマンドを使用してosqueryサービスを開始します。

osqueryctl start osqueryd

次のコマンドを使用して、osqueryのステータスを確認することもできます。

osqueryctl status osqueryd

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

? osqueryd.service - The osquery Daemon
   Loaded: loaded (/lib/systemd/system/osqueryd.service; disabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-19 15:21:57 UTC; 6s ago
  Process: 25333 ExecStartPre=/bin/sh -c if [ ! -f $CONFIG_FILE ]; then echo {} > $CONFIG_FILE; fi (code=exited, status=0/SUCCESS)
  Process: 25334 ExecStartPre=/bin/sh -c if [ ! -f $FLAG_FILE ]; then touch $FLAG_FILE; fi (code=exited, status=0/SUCCESS)
  Process: 25336 ExecStartPre=/bin/sh -c if [ -f $LOCAL_PIDFILE ]; then mv $LOCAL_PIDFILE $PIDFILE; fi (code=exited, status=0/SUCCESS)
 Main PID: 25337 (osqueryd)
    Tasks: 13 (limit: 4701)
   Memory: 6.4M
   CGroup: /system.slice/osqueryd.service
           ??25337 /usr/bin/osqueryd --flagfile /etc/osquery/osquery.flags --config_path /etc/osquery/osquery.conf
           ??25339 /usr/bin/osqueryd

Apr 19 15:21:57 debian10 systemd[1]: Starting The osquery Daemon...
Apr 19 15:21:57 debian10 systemd[1]: Started The osquery Daemon.
Apr 19 15:21:57 debian10 osqueryd[25337]: osqueryd started [version=4.2.0]
Apr 19 15:21:57 debian10 osqueryd[25337]: I0419 15:21:57.261158 25339 events.cpp:863] Event publisher not enabled: auditeventpublisher: Publish
Apr 19 15:21:57 debian10 osqueryd[25337]: I0419 15:21:57.261485 25339 events.cpp:863] Event publisher not enabled: syslog: Publisher disabled v

osqueryの操作

osqueryには、osqueryi、osqueryd、osqueryctlの3つの便利なコンポーネントが付属しています。 osqueryiはosqueryインタラクティブシェルであり、デーモンと通信しません。シェルを使用してクエリを実行し、オペレーティングシステムの現在の状態を調べることができます。 osquerydは、クエリをスケジュールし、OSの状態の変化を記録するために使用できるホスト監視デーモンです。 osqueryctlは、構成をテストするためのヘルパースクリプトです。

次のコマンドを実行して、osqueryシェルに接続できます。

osqueryi

次の出力が得られるはずです:

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

次に、.helpコマンドを実行して、osqueryで使用可能なすべてのオプションを確認します。

osquery> .help

次の出力が得られるはずです:

Welcome to the osquery shell. Please explore your OS!
You are connected to a transient 'in-memory' virtual database.

.all [TABLE]     Select all from a table
.bail ON|OFF     Stop after hitting an error
.echo ON|OFF     Turn command echo on or off
.exit            Exit this program
.features        List osquery's features and their statuses
.headers ON|OFF  Turn display of headers on or off
.help            Show this message
.mode MODE       Set output mode where MODE is one of:
                   csv      Comma-separated values
                   column   Left-aligned columns see .width
                   line     One value per line
                   list     Values delimited by .separator string
                   pretty   Pretty printed SQL results (default)
.nullvalue STR   Use STRING in place of NULL values
.print STR...    Print literal STRING
.quit            Exit this program
.schema [TABLE]  Show the CREATE statements
.separator STR   Change separator used by output mode
.socket          Show the osquery extensions socket path
.show            Show the current values for various settings
.summary         Alias for the show meta command
.tables [TABLE]  List names of tables
.types [SQL]     Show result of getQueryColumns for the given query
.width [NUM1]+   Set column widths for "column" mode
.timer ON|OFF      Turn the CPU timer measurement on or off
osquery> 

クエリに使用できるテーブルはたくさんあります。次のコマンドを使用して、すべてのテーブルを一覧表示できます。

osquery> .table

次の出力が得られるはずです:

  => acpi_tables
  => apparmor_profiles
  => apt_sources
  => arp_cache
  => atom_packages
  => augeas
  => authorized_keys
  => block_devices
  => carbon_black_info
  => carves
  => chrome_extensions
  => cpu_time
  => cpuid
  => crontab
  => curl
  => curl_certificate
  => deb_packages
  => device_file
  => device_hash
  => device_partitions
  => disk_encryption
  => dns_resolvers
  => docker_container_labels
  => docker_container_mounts

上記の表とosqueryを使用して、さまざまなシステム情報を見つけることができます。

osqueryでシステムを監視する

osqueryを使用して、メモリ使用量、プロセス情報、ディスク容量、ログインユーザーなどを監視できます。

まず、次のコマンドを使用してosqueryシェルを起動します。

osqueryi

次に、次のコマンドを使用して、システムのホスト名、CPUコア、および物理メモリの情報を取得できます。

osquery> select hostname,cpu_physical_cores,physical_memory from system_info;

次の出力が得られるはずです:

+------------+--------------------+-----------------+
| hostname   | cpu_physical_cores | physical_memory |
+------------+--------------------+-----------------+
| debian10   | 1                  | 1032937472      |
+------------+--------------------+-----------------+

ssh_configファイルに関する情報を取得するには、次のクエリを実行します。

osquery> select * from ssh_configs;

次の出力が得られるはずです:

W0419 15:47:17.043509 25397 virtual_table.cpp:959] The ssh_configs table returns data based on the current user by default, consider JOINing against the users table
W0419 15:47:17.043740 25397 virtual_table.cpp:974] Please see the table documentation: https://osquery.io/schema/#ssh_configs
+-----+--------+--------------------------+---------------------+
| uid | block  | option                   | ssh_config_file     |
+-----+--------+--------------------------+---------------------+
| 0   | host * | sendenv lang lc_*        | /etc/ssh/ssh_config |
| 0   | host * | hashknownhosts yes       | /etc/ssh/ssh_config |
| 0   | host * | gssapiauthentication yes | /etc/ssh/ssh_config |
+-----+--------+--------------------------+---------------------+
osquery> 

システム内のすべてのユーザーのリストを取得するには、次のクエリを実行します。

osquery> SELECT * FROM users;

次の出力が得られるはずです:

+-------+-------+------------+------------+-----------------+------------------------------------+----------------------+-------------------+------+
| uid   | gid   | uid_signed | gid_signed | username        | description                        | directory            | shell             | uuid |
+-------+-------+------------+------------+-----------------+------------------------------------+----------------------+-------------------+------+
| 0     | 0     | 0          | 0          | root            | root                               | /root                | /bin/bash         |      |
| 1     | 1     | 1          | 1          | daemon          | daemon                             | /usr/sbin            | /usr/sbin/nologin |      |
| 2     | 2     | 2          | 2          | bin             | bin                                | /bin                 | /usr/sbin/nologin |      |
| 3     | 3     | 3          | 3          | sys             | sys                                | /dev                 | /usr/sbin/nologin |      |
| 4     | 65534 | 4          | 65534      | sync            | sync                               | /bin                 | /bin/sync         |      |
| 5     | 60    | 5          | 60         | games           | games                              | /usr/games           | /usr/sbin/nologin |      |
| 6     | 12    | 6          | 12         | man             | man                                | /var/cache/man       | /usr/sbin/nologin |      |
| 7     | 7     | 7          | 7          | lp              | lp                                 | /var/spool/lpd       | /usr/sbin/nologin |      |

システム内のすべての非システムユーザーを一覧表示する場合は、次のクエリを実行します。

osquery> select * from users where uid <= 1000 limit 3;

次の出力が得られるはずです:

+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+
| uid | gid | uid_signed | gid_signed | username | description | directory | shell             | uuid |
+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+
| 0   | 0   | 0          | 0          | root     | root        | /root     | /bin/bash         |      |
| 1   | 1   | 1          | 1          | daemon   | daemon      | /usr/sbin | /usr/sbin/nologin |      |
| 2   | 2   | 2          | 2          | bin      | bin         | /bin      | /usr/sbin/nologin |      |
+-----+-----+------------+------------+----------+-------------+-----------+-------------------+------+

現在ログインしているユーザーのリストを取得するには、次のクエリを実行します。

osquery> select * from logged_in_users where type = 'user';

次の出力が得られるはずです:

+------+------+-------+--------------+------------+-------+
| type | user | tty   | host         | time       | pid   |
+------+------+-------+--------------+------------+-------+
| user | root | pts/0 | 27.61.217.59 | 1587309538 | 19279 |
| user | root | pts/1 | 27.61.217.59 | 1587310737 | 25378 |
| user | root | pts/2 | 27.61.217.59 | 1587310997 | 25394 |
+------+------+-------+--------------+------------+-------+

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

osquery> select * from memory_info;

次の出力が得られるはずです:

+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
| memory_total | memory_free | buffers  | cached     | swap_cached | active    | inactive  | swap_total | swap_free |
+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
| 4138455040   | 2407211008  | 79745024 | 1384751104 | 0           | 556371968 | 954744832 | 0          | 0         |
+--------------+-------------+----------+------------+-------------+-----------+-----------+------------+-----------+
osquery> 

システムの平均負荷を見つけるには、次のクエリを実行します。

osquery> select * from load_average;

次の出力が得られるはずです:

+--------+----------+
| period | average  |
+--------+----------+
| 1m     | 0.000000 |
| 5m     | 0.000000 |
| 15m    | 0.000000 |
+--------+----------+
osquery> 

システムの最初の5つのパッケージのリストを取得するには、次のクエリを実行します。

osquery> select * from deb_packages top limit 5;

次の出力が得られるはずです:

+-------------------+------------+--------------+------+-------+----------+
| name              | version    | source       | size | arch  | revision |
+-------------------+------------+--------------+------+-------+----------+
| acpi-support-base | 0.142-8    | acpi-support | 43   | all   | 8        |
| acpid             | 1:2.0.31-1 |              | 146  | amd64 | 1        |
| adduser           | 3.118      |              | 849  | all   |          |
| apparmor          | 2.13.2-10  |              | 1833 | amd64 | 10       |
| apt               | 1.8.2      |              | 4064 | amd64 |          |
+-------------------+------------+--------------+------+-------+----------+

システムで実行されているプロセスに関する情報を取得するには、次のクエリを実行します。

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 | port | pid |
+------+------+-----+
| sshd | 22   | 729 |
+------+------+-----+

以前のすべてのログインを検索するには、次のクエリを実行します。

osquery> select * from last;

次の出力が得られるはずです:

+----------+-------+-------+------+------------+--------------+
| username | tty   | pid   | type | time       | host         |
+----------+-------+-------+------+------------+--------------+
| root     | pts/0 | 1448  | 7    | 1587365277 | 27.61.217.41 |
| root     | pts/1 | 13392 | 7    | 1587368569 | 27.61.217.41 |
|          | pts/0 | 1004  | 8    | 1587376329 |              |
|          | pts/1 | 13321 | 8    | 1587376821 |              |
|          | ttyS0 | 748   | 8    | 1587465619 |              |
|          | tty1  | 749   | 8    | 1587465619 |              |
| root     | pts/0 | 1057  | 7    | 1587465664 | 27.61.217.9  |
| root     | pts/1 | 1375  | 7    | 1587465846 | 27.61.217.9  |
+----------+-------+-------+------+------------+--------------+

crontabによってスケジュールされたすべてのジョブを一覧表示するには、次のクエリを実行します。

osquery> select command, path from crontab ;

次の出力が得られるはずです:

+----------------------------------------------------------------------------------------------------------------------------------------+-------------------+
| command                                                                                                                                | path              |
+----------------------------------------------------------------------------------------------------------------------------------------+-------------------+
| root cd / && run-parts --report /etc/cron.hourly                                                                                       | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )                                                       | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )                                                      | /etc/crontab      |
| root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )                                                     | /etc/crontab      |
| root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi | /etc/cron.d/mdadm |

システムで開いているすべてのポートを見つけるには、次のクエリを実行します。

osquery> select * from listening_ports;

次の出力が得られるはずです:

+------+------+----------+--------+------------+-----+--------+----------------------------------------+---------------+
| pid  | port | protocol | family | address    | fd  | socket | path                                   | net_namespace |
+------+------+----------+--------+------------+-----+--------+----------------------------------------+---------------+
| 444  | 53   | 6        | 2      | 127.0.0.53 | 13  | 14910  |                                        | 4026531993    |
| 729  | 22   | 6        | 2      | 0.0.0.0    | 3   | 16940  |                                        | 4026531993    |
| 664  | 3306 | 6        | 2      | 127.0.0.1  | 69  | 15824  |                                        | 4026531993    |
| 544  | 6379 | 6        | 2      | 127.0.0.1  | 6   | 15472  |                                        | 4026531993    |
| 729  | 22   | 6        | 10     | ::         | 4   | 16951  |                                        | 4026531993    |
| 544  | 6379 | 6        | 10     | ::1        | 7   | 15473  |                                        | 4026531993    |
| 759  | 80   | 6        | 10     | ::         | 4   | 17009  |                                        | 4026531993    |
| 444  | 53   | 17       | 2      | 127.0.0.53 | 12  | 14909  |                                        | 4026531993    |
| 405  | 58   | 255      | 10     | ::         | 15  | 16039  |                                        | 4026531993    |

最もアクティブな上位5つのプロセスを一覧表示するには、次のクエリを実行します。

osquery> select count(pid) as total, name from processes group by name order by total desc limit 5;

次の出力が得られるはずです:

+-------+---------+
| total | name    |
+-------+---------+
| 4     | sshd    |
| 3     | apache2 |
| 2     | systemd |
| 2     | bash    |
| 2     | agetty  |
+-------+---------+
結論

上記のチュートリアルでは、Debian 10にosqueryをインストールして使用する方法を学びました。osqueryは、システム内のバックドア、マルウェア、またはゾンビプロセスを見つけるのに非常に便利なツールです。 osqueryの詳細については、osqueryのドキュメントページにアクセスしてください。


Debian
  1. Debian9にRをインストールする方法

  2. Debian10にApacheZooKeeperをインストールする方法

  3. Debian11にWildFlyをインストールする方法

  1. Debian10にRをインストールする方法

  2. Debian10にIonicFrameworkをインストールする方法

  3. Debian11にDjangoFrameworkをインストールする方法

  1. PHP8をDebian11にインストールする方法

  2. Debian11にGitLabをインストールする方法

  3. Debian11にApacheSparkをインストールする方法