Linux: Tripwireの運用サイクルの基本 – ポリシー設定から改竄チェック〜DB更新

前回の記事に続けて、Tripwireの初期設定、ファイル改竄チェック、レポートファイルの確認、そしてデータベースファイルの更新方法等の改竄検知の運用サイクルを記載。実施環境等は前記事をご参照。また、ここではポリシーファイルの詳細な説明は省く。あくまでツールの基本的な使い方の流れを説明。参考サイトは例によって記事末尾に掲載。
少し復習から入るが、Tripwireでは2つの鍵ファイル(site key, local key)を利用してファイルの暗号化(や署名)を行い、(インストール時に設定を求められたやつ。)site keyはTripwireの設定・ポリシーファイルを保護、local keyはTripwireのデータベースとレポートを保護するもの。
一つのポリシーファイルを複数のホストに適用し、ポリシー制御を集中させ、DB管理とレポートの生成はサーバー個々に分散させる手法もある。

設定ディレクトリ

尚、local・site keyや設定・ポリシーファイルはデフォルトでは下記ディレクトリに保管されている。

local keyがdebian-local.key、site keyがsite.key、tw.cfgが暗号化済み設定ファイル、tw.polが暗号化済みポリシーファイルとなる。設定・ポリシーを変更する際は、twcfg.txt、twpol.txtを編集の上、設定を反映、暗号化する必要がある。なお、本運用の際は*.txt(平文)は削除し侵入時お設定内容の漏洩を防止に備える。
仮に暗号化ファイルから平文の内容を確認したい場合は下記のコマンドを用いる。

因みにコマンドオプションの簡略形はそれぞれ下記の通り。

参考までに下記にtwcfg.txt内容を記載する。各項目の詳細説明はman twconfigで参照可能。

本運用ではDBFILEは読み取り専用の媒体に格納されていることが望ましい。改竄検知ツールが検知に使用するベースデーターベースが汚染されていては改竄検知が出来ない為。
設定ファイルの平文→暗号化は下記のコマンドで行う。

コマンドオプションの簡略形は下記の通り。

ポリシーファイルの編集・反映

今回はサンプルとしてユーザーのホームディレクトリを監視するポリシーファイルをtwpol.txtファイルに追記する。

これで/home/yu以下のサブディレクトリ1階層下まで監視するよう指示している。$(ペケペケ)は変数参照$(SEC_CONFIG)はファイル上部で下記の通り宣言されている。

Dynamicは定義済みプロパティマスク。よくユーザーディレクトリ・ファイル等の可変ファイルに適用される。どのような属性がチェックされるかは記事末尾のマニュアルをご参照。
ポリシーファイルをインストール(署名兼暗号化)するには下記のコマンドを用いる。

コマンドオプションの簡略形は下記の通り。

データベースの初期化

Tripwireはベースとなるシステムのスナップショット、すなわちポリシーファイルが対象としているファイルのハッシュ値と現時点とスナップショットの比較によりファイルの改竄検知を行う。その為、まずはポリシーファイルを元にベースとなる現時点でのシステム情報をデータベース化する。上述のDBFILEディレクティブに指定のディレクトリに*.twdファイルが作成される。

初期の既存ポリシーをそのまま流用すると行くつくか下記のような警告が出るが今回は特に気にする必要は無い。(元々存在しないファイルを探してエラーを出力しているだけ)

改竄チェックとレポート参照

ベースとなるスナップショットがとれたら、後は定期的なチェック、すなわちある時点でのスナップショットとベースの比較を行う。コマンドは下記の通り。

コマンドを実行すると標準出力とレポートファイルに出力する。標準出力にはかなり出るので、リダイレクトしているのはその為。但し標準エラー出力もそれなりに出るがそれは今回は読み飛ばす。
report.txt内容を抜粋すると下記の通りとなる。

実はinit後check前に/root/1129ディレクトリにファイルを作成したりrootディレクトリ内のディレクトリを削除しているので、上記のログではそれが検知されている。また、OSが自動で書き換えるような箇所も検知される為、システム毎に何を検知するべきかを設計の上、ポリシーファイルを編集する必要がある。尚、同時に保存されたレポートファイルは下記のコマンドで参照可能。ここで指定している、–report-level 0の場合はサマリーを1行で表示する。

レポートファイル名には作成日時が付与されているので、実行環境毎にファイル名は読み替えて実行すること。

データベースの更新

本運用ではcheck後に監視対象ファイルの変更を検知した場合は、その変更が攻撃者からの改竄なのか正規のシステム変更かを見極める必要がある。仮に正規の変更である場合は、その変更を下記のコマンドを用いてベースデータベースに反映する。

実行するとviエディタが起動し、各変更に対して反映する・反映しないのチェックボックスを[X] or [ ]で設定する(デフォルトは全反映)

編集終了後にlocal passphraseを入力すればデータベースへの反映完了。

試しに再度tripwire -m cを実行して前回のレポート内容と比較しupdateされていることを確認してみると良い。最後に、下記の参考サイト(command reference)はかなりオススメなので、tripwireを使用する際は手元に置いておくと良い。

参考サイト