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に関する情報にアクセスできるようになる。