調べものしてたところ、OSの状態をSQLで取得できる『osquery』というFacebookの作ったツールを見かけた。 LinuxのほかMac、Windowsにも対応しているようだ。 さすがにFacebookが作ってるだけあってか、ドキュメントも充実している様子。

今回は、CentOS 7でこのツールをインストールしてみる。

1. インストール

osqueryをCentOSにインストールする場合(他のプラットフォームも同様だが)、こちらの情報を参考に進めるといいだろう。 以下のコマンドでリポジトリを追加してyumからインストールを行う。

sudo rpm -ivh https://osquery-packages.s3.amazonaws.com/centos7/noarch/osquery-s3-centos7-repo-1-0.0.noarch.rpm
sudo yum -y install osquery

これでインストールは完了。

2. 実際に使ってみる

さて、インストールが終わったら実際に使用してみよう。 osqueryのコンソールを開いてそこで操作する方法とコマンドからSQLを実行する方法、2パターンの手法があるようだ。

osqueryi # コンソールを開く
osqueryi 'SQL' # SQLを実行する
[root@BS-PUB-CENT7-02 ~]# osqueryi 'SELECT uid, name FROM listening_ports l, processes p WHERE l.pid=p.pid;'
+-----+----------------+
| uid | name           |
+-----+----------------+
| 0   | rserver        |
| 0   | sshd           |
| 0   | master         |
| 0   | sshd           |
| 0   | master         |
| 0   | NetworkManager |
| 0   | master         |
+-----+----------------+
[root@BS-PUB-CENT7-02 ~]# osqueryi 'SELECT address, mac, id.interface FROM interface_details AS id, interface_addresses AS ia WHERE id.interface = ia.interface;'
+-----------------+-------------------+-----------+
| address         | mac               | interface |
+-----------------+-------------------+-----------+
| 127.0.0.1       | 00:00:00:00:00:00 | lo        |
| 172.XXX.XXX.XXX | 32:64:35:36:37:38 | eth0      |
| 172.XXX.XXX.XXX | 66:36:65:39:61:37 | eth1      |
+-----------------+-------------------+-----------+

OSの設定とかを取得するのに便利そうだ。