HowtoForgeに8月16日(米国時間)に掲載された記事「How to Monitor your Linux Server using osquery」が、システムモニタリングツール「osquery」の使い方を紹介した。

osqueryはFacebookによって開発されたソフトウェアで、オペレーティングシステムに関する各種情報をSQLで取い合わせ可能にしているという特徴がある。osqueryの主なインストール方法は次のとおり。

Ubuntuにおけるosqueryインストール方法

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $OSQUERY_KEY
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt install osquery -y

macOSにおけるosqueryインストール方法

brew install osquery

FreeBSDにおけるosqueryインストール方法

pkg install osquery

紹介されているosqueryの主な使い方は次のとおり。

出力形式の指定

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

システム情報の表示

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

オペレーティングシステムバージョンの表示

SELECT * FROM os_version;

カーネルおよびカーネルモジュール情報の表示

SELECT * FROM kernel_info;
SELECT * FROM kernel_modules LIMIT 5;

aptパッケージに関する情報を表示(Ubuntu)

SELECT * FROM apt_sources;
SELECT name, base_uri, release, maintainer, components FROM apt_sources ORDER BY name;
SELECT * FROM deb_packages;
SELECT name, version FROM deb_packages ORDER BY name;
SELECT name, version FROM deb_packages WHERE name="nginx";

マウントに関する情報を表示

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;

NICに関する情報を表示

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

アップタイムに関する情報を表示

SELECT * FROM uptime;

ユーザに関する情報を表示

SELECT * FROM users;
SELECT * FROM users WHERE uid>=1000;
SELECT * FROM last;
SELECT username, time, host FROM last WHERE type=7;
SELECT * FROM logged_in_users;

iptablesに関する情報を表示(Ubuntu)

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

プロセスに関する情報を表示

SELECT * FROM processes;
SELECT pid, name, path, cmdline FROM processes;

crontabに関する情報を表示

SELECT * FROM crontab;

suidバイナリに関する情報を表示

SELECT * FROM suid_bin;
SELECT * FROM suid_bin WHERE username="root" AND groupname="nobody" order by path;
  • システム情報の表示

    システム情報の表示

  • オペレーティングシステムバージョンの表示

    オペレーティングシステムバージョンの表示

  • カーネルモジュール情報の表示

    カーネルモジュール情報の表示

それぞれの情報は個別のコマンドを使って得ることができるが、osqueryを利用するとSQLという統一の方法に従ってOSに関する情報にアクセスできるようになる。