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

osqueryを使用してLinuxサーバーを監視する方法

Osqueryは、オープンソースのオペレーティングシステムの監視、クエリ、および分析ソフトウェアです。 Facebookによって作成され、SQLベースのクエリを使用してクエリできる高性能のリレーショナルデータベースとしてオペレーティングシステムを公開します。

Osqueryはマルチプラットフォームソフトウェアであり、Linux、Windows、MacOS、およびFreeBSDにインストールできます。 Osqueryを使用すると、SQLベースのクエリを使用して、オペレーティングシステムのプロファイル、パフォーマンス、セキュリティ、その他多くの指標を調べることができます。

このチュートリアルでは、LinuxディストリビューションUbuntu 18.04LTSおよびCentOS7にosqueryをインストールする方法を示します。osqueryをインストールし、「osqueryi」インタラクティブモードの使用方法と、osqueryを使用してライブシステムを監視する方法を学習します。

前提条件
  • Linux OS(Ubuntu18.04またはCentOS7)
  • root権限
何をするか
  • Linuxオペレーティングシステムにosqueryをインストールする
  • osqueryiインタラクティブモードの基本的な使用法
  • osqueryを使用した監視システム
ステップ1-Linuxオペレーティングシステムにosqueryをインストールします

osqueryは、プラットフォームごとに独自のリポジトリを提供します。このステップでは、公式のosqueryリポジトリからosqueryパッケージをインストールします。

Ubuntuの場合

osqueryキーを追加します。

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

Ubuntuにosqueryパッケージをインストールします。

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

CentOSの場合

osqueryキーを追加します。

curl -L https://pkg.osquery.io/rpm/GPG | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-osquery

CentOS7にosqueryパッケージをインストールします。

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

すべてのパッケージがインストールされるのを待ちます。

ステップ2-osqueryiインタラクティブモードの基本的な使用法

osqueryは、osqueryiとosquerydの2つの主要なインターフェイスをユーザーに提供します。

osqueryiは、osqueryインタラクティブクエリコンソールです。これは、MySQLの「mysql」コマンドシェルやPostgreSQLデータベースの「psql」シェルに似ています。

このステップでは、「osqueryi」インタラクティブモードの基本的な使用法を学習します。

サーバーターミナルで「osqueryi」コマンドを入力すると、osqueryインタラクティブコンソールモードが表示されます。

osqueryi

次に、osqueryiコンソールモードの基本的なコマンドについて学習します。

インタラクティブモードosqueryiで使用可能なすべての基本的なコマンドを表示します。

.help

現在のosqueryの構成と設定を表示します。

.show

Osqueryは、クエリ結果を表示するための複数の表示モードを提供します。デフォルトのモードは「きれいな」モードです。

次に、クエリ結果の表示モードを変更します。このガイドでは、「行」モードを使用します。

.mode csv
.mode list
.mode column
.mode line
.mode pretty

Osqueryは、オペレーティングシステムをリレーショナルデータベースシステムとして公開します。システムに関するすべての情報はosqueryテーブルに保存され、使用可能なすべてのテーブルをクエリすることでシステム情報全体を調べることができます。

osqueryで使用可能なすべてのテーブルのリストを取得するには、以下のコマンドを実行します。

.tables

osqueryシステムで使用可能なすべてのテーブルがわかったら、列を確認します。

次のコマンドを使用して、テーブルのスキーマ(列、タイプ)を取得します。

.schema users
.schema processes

そして、テーブルのすべてのスキーマ列を取得します。

ステップ3-クエリを使用した基本的なLinuxモニタリング

このステップでは、osqueryを使用してライブLinuxシステムを監視します。 osqueryiインタラクティブモードを介して、システムプロファイル情報、ユーザー、ネットワークインターフェイスなどを監視します。

システム情報を取得

システムハードウェアの詳細を表示します。

SELECT * FROM system_info;
SELECT hostname, cpu_type, physical_memory, hardware_vendor, hardware_model FROM system_info;

OSバージョンを取得

osバージョン、プラットフォーム、osパッチ、コード名など、現在のオペレーティングシステム情報を表示します。

SELECT * FROM os_version;

カーネルバージョンとモジュールの表示

システムのカーネル情報を確認するために、osqueryはテーブル「kernel_info」と「kernel_modules」を提供します。

システムで使用されているカーネルを表示します。

SELECT * FROM kernel_info;

システムにロードされているすべてのカーネルモジュールを表示します。

SELECT * FROM kernel_modules LIMIT 5;

リポジトリとパッケージの確認

osqueryは、LinuxUbuntuとCentOSの両方にリポジトリとインストール済みパッケージをチェックするためのテーブルを提供します。

-Ubuntuの場合

Ubuntuでは、「apt_sources」を介して利用可能なリポジトリを確認し、「deb_packages」を介してインストールされたパッケージを確認できます。

利用可能なすべてのUbuntuリポジトリを確認してください。

SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;

deb_packagesテーブルを使用してインストールされたすべてのパッケージを確認します。

SELECT * FROM deb_packages;

パッケージの名前とバージョンのみを表示します。

SELECT name, version FROM deb_packages ORDER BY name;

特定のパッケージについては、名前フィルターを追加します。

SELECT name, version FROM deb_packages WHERE name="nginx";

-CentOSの場合

CentOSでは、「yum_sources」を介して利用可能なリポジトリを確認し、「rpm_packages」を介してインストールされたパッケージを確認できます。

利用可能なすべてのCentOSリポジトリを確認してください。

SELECT * FROM yum_sources;
SELECT name, baseurl, enabled FROM yum_sources;

「有効」フィルターを追加して、有効なリポジトリを確認します。

SELECT name, baseurl, enabled FROM yum_sources WHERE enabled=1;

rpm_packagesテーブルを使用してインストールされているすべてのパッケージを確認してください。

SELECT * FROM rpm_packages;
SELECT name, version FROM rpm_packages ORDER BY name;

特定のパッケージ名については、名前フィルターを追加します。

SELECT name, version FROM rpm_packages WHERE name="firewalld";

マウントディスク情報

マウントテーブルを使用して、空きiノード、フラグ、タイプなど、システムドライブに関するすべての詳細を確認できます。

システムによってマウントされているすべてのディスクを確認してください。

SELECT * FROM mounts;
SELECT device, path, type, inodes_free, flags FROM mounts;

特定のタイプのデバイス用。

SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="ext4";
SELECT device, path, type, inodes_free, flags FROM mounts WHERE type="tmpfs";

メモリ情報

システムメモリをバイト単位でチェックしています。

SELECT * FROM memory_info;

ネットワークインターフェース情報

'interface_addresses'を使用してネットワークアドレスを確認します。

SELECT * FROM interface_addresses;

'interface_details'を使用してネットワークインターフェースの詳細を確認します。

SELECT * FROM interface_details;
SELECT interface, mac, ipackets, opackets, ibytes, obytes FROM interface_details;

サーバーの稼働時間

サーバーの稼働時間を確認しています。

SELECT * FROM uptime;

ユーザーの確認

osqeryは、システムユーザーをチェックするための詳細テーブルを提供します。 'users'テーブルを使用してシステム上のすべてのユーザーをチェックし、'last'テーブルを使用してユーザーの最後のログインをチェックし、'logged_in_users'を使用してアクティブなシェルでログインしたユーザーを取得できます。

サーバーで使用可能なすべてのユーザーを確認するには、「users」テーブルを使用します。

SELECT * FROM users;

通常のユーザーの場合、uidを「>=1000」に指定できます。

SELECT * FROM users WHERE uid>=1000;

最終ログインユーザーを確認するには、「last」テーブルを使用します。

SELECT * FROM last;

通常のユーザーの場合は、「type」を「7」に入力します。

SELECT username, time, host FROM last WHERE type=7;

アクティブなシェルでログインしているユーザーを確認するには、「logged_in_users」テーブルを使用します。

SELECT * FROM logged_in_users;

IPテーブルファイアウォール情報

'tables'テーブルを使用すると、チェーン、ポリシー、src / dst IP、ポートなど、ファイアウォールで使用可能なすべてのルールを確認できます。

すべてのiptablesルールを表示します。

SELECT * FROM iptables;

以下のカスタムクエリを使用してルールを指定します。

SELECT chain, policy, src_ip, dst_ip FROM iptables WHERE chain="POSTROUTING" order by src_ip;

プロセス情報

'processes'テーブルを使用して、すべてのアプリケーションプロセスを確認できます。 pid、name、path、commandなどのプロセスに関する詳細情報を提供します。

実行中のすべてのアプリをチェックするための基本的なプロセスクエリ。

SELECT * FROM processes;

pidなど、パス、およびコマンドの列を指定します。

SELECT pid, name, path, cmdline FROM processes;

cronジョブの確認

'crontab'テーブルを使用して、使用可能なcronジョブとスクリプト実行時間を確認してください。

SELECT * FROM crontab;

SUIDバイナリファイル

SUID(実行時に所有者ユーザーIDを設定)は、ファイルおよびほとんどの場合バイナリ実行可能ファイルに付与される特殊なタイプのファイル権限です。

利用可能なすべてのバイナリファイルを確認してください。

SELECT * FROM suid_bin;

ユーザー名とグループ名を指定します。

SELECT * FROM suid_bin WHERE username="root" AND groupname="nobody" order by path;

上記はすべて、osqueryを使用した基本的なLinuxシステムの監視です。


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

  2. LinuxVPSサーバーのパフォーマンスを測定する方法

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

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

  2. Chronyを使用してLinuxサーバーで時刻を同期する方法

  3. OpenSSHを使用してLinuxサーバーに接続する方法

  1. Linux VPSでCS:GOサーバーを作成する方法

  2. CloudStatsを使用してLinuxサーバーを監視する方法

  3. Cactiを使用してCentOS7サーバーを監視する方法