FreeBSD に同梱の freebsd-update IDS
で、FreeBSD のシステムファイルが
変更されていないか検査できる。という話はあまりにも有名です。
これは、freebsd-update
で導入されたファイルのハッシュ値は、
サーバに存在しているため、それを取り寄せてハッシュ値の一致テストを
行うことができるためです。
似たようなものとして、pkg
でインストールしたプログラムその他は、
pkg
のデータベースにインストール時のハッシュ値が記録されているため、
破損していないか確認することができます。
そのコマンドがこちら。
$ sudo pkg check -sa Checking all packages: 16% ezjail-3.4.2_1: checksum mismatch for /usr/local/bin/ezjail-admin
試しに ezjail-admin
を編集してみたときの実行結果です。
ちゃんとファイルの中身が書き換わっていることを検知できています。
ただし、freebsd-update IDS
も同じですが、検査プログラムやゴールデンデータが
ローカルに存在するため、「悪意を持って改ざんされた可能性」を排除するには能力不足です。
あくまで、ディスクエラーなどでファイルが破損してないか。みたいな検査には有用なので、
使えるときには使うといいかもしれません。一応、periodic
で走るようなので、
毎日届くレポートメールを見ていればそれで十分なのかもしれません。
さて、ではどのファイルがチェック対象なのでしょうか。
それは pkg query
で見ることができます。
$ pkg query "%Fp" ezjail /usr/local/bin/ezjail-admin /usr/local/etc/ezjail.conf.sample /usr/local/etc/rc.d/ezjail :
こんな感じ。%Fp
がインストールファイルの名前。
ezjail 配下で動いているものを全部リストアップしたければ以下のコマンド。
$ echo mysql vpn mail | xargs -n 1 -I RP sudo pkg -j RP query "/mnt/jails/RP%Fp"
query
なので、%Fp
の前に jail の root パスをくっつけて表示します。
/
から始まるパスなので、RP
とくっつけて使います。