はじめに
Tripwireとは
ファイルの変更・改ざんを検知するためのソフトウェアです。
Tripwire, Inc.による商用の製品も提供されていますが、ここではGitHub上で公開されているOSS版について述べます。
GitHub上のURLは下です。
GPL v2.0でライセンスされています。
Tripwireはリアルタイムの改ざん検出はできませんが、定期的にチェックを実行することでファイルの変更・改ざんを検知し、レポートすることができます。
想定読者
サーバの管理者などで、ファイル改ざん検知のニーズがある人。
主にLinuxシステムの利用者。(筆者がそうなので)
本記事の趣旨
Tripwireは歴史の古いツールなので、検索すると情報は数多く見つかるのですが、中々まとまったものを見つけられませんでした。
そこで、本記事では初期設定〜定常運用までの流れに沿って、必要になるであろう情報をまとめてみました。
環境要件
筆者はLinuxで動かした経験しかありませんが、上のリポジトリに含まれるREADMEによれば、POSIX-likeなOSであれば動きそうです。
Linuxの他、macOSやWindowsのCygwin上でも動作するようですが、Windows特有のファイル属性やレジストリの監視はサポートされないとのことです。
ドキュメント
一次情報としては、上のREADMEや、ソフトウェアに同梱されているman pageの内容が充実しています。
オンラインで閲覧できるリンクを以下に貼っておきます。
- twintro(8) ... Introduction
- twfiles(5) ... ファイル構成とバックアッププロセス
- CLIドキュメント:
- twadmin(8) ... 管理用コマンド兼ユーティリティー
- tripwire(8) ... 改ざんチェックコマンド
- 設定ファイル:
- twconfig(4) ... tripwireプログラムの動作や環境設定
- twpolicy(4) ... 改ざん検知の対象ファイル群や検査ポリシーの設定
導入〜運用の流れ
- インストール
- 初期セットアップ
- サイトキーとローカルキーの生成
- 設定ファイル(cfg)の生成
- ポリシーファイル(pol)の生成
- データベースの初期化
- 定常運用
- 改ざんチェックの定期実行
- データベースの更新
- 改ざん検知ポリシーの更新
インストール
Linuxにおいては、主要なディストリビューションでは利用可能なパッケージがあります。
# RHEL系
yum install tripwire --enablerepo=epel
# Fedora
dnf install tripwire
# Debian系
apt install tripwire
※RHEL系のepelについては脚注12などを参考に設定ください。
初期設定
以降の手順について、一部は以下の動作環境におけるものです。
- CentOS 7系
- Tripwire v2.4.3.7
サイトキーとローカルキーの生成
暗号署名を行うためのサイトキーとローカルキーを生成します。
サイトキーは、サイト全体で共通の設定ファイルやポリシーファイルなどの暗号化に、ローカルキーはマシンローカルのTripwireデータベースなどの暗号化に用いられます。
tripwire-setup-keyfiles
上のコマンドを実行すると、サイトパスフレーズとローカルパスフレーズの入力を求められるので、別々のパスフレーズを設定します。
コマンドはシェルスクリプトになっており、内部的には twadmin --generate-keys
を実行しています。
cfgファイルの設定と生成
cfg設定ファイルはTripwireの動作に関わる種々の設定を行うファイルです。
詳しい設定項目はtwconfig(4) man pageを参照して下さい。
SMTPの設定などは環境によって変える必要があるだろうと思います。
こちらは twadmin --create-cfgfile
コマンドを使って、設定内容を記述したテキストを元に、サイトキーで暗号署名したバイナリを生成します。
# 設定の元となるテキストファイルを編集
vi /etc/tripwire/twcfg.txt
# 暗号署名した設定ファイルを生成
twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key \
--site-passphrase <サイトパスフレーズ> /etc/tripwire/twcfg.txt
ポリシーファイルの設定と生成
ポリシーファイルは、Tripwireによってどのファイル・ディレクトリをどのようなルールで監視するかというポリシーを定めるものです。
これもテキスト形式で記述したポリシーファイルを元に、サイトキーで暗号署名を行ってバイナリファイルを生成する形になります。
ポリシーの記述方法はオリジナルのポリシー設定テキストファイル twpol.txt
やtwpolicy(4)を参考にできます。
また、日本語の解説記事を記事末尾の参考リンクに挙げておきます。
ポリシーファイルの生成には twadmin --create-polfile
コマンドを使います。
# ポリシー設定の元となるテキストファイルを編集
vi /etc/tripwire/twpol.txt
# 暗号署名したポリシー設定ファイルを生成
twadmin --create-polfile --cfgfile /etc/tripwire/tw.cfg \
--site-passphrase <サイトパスフレーズ> /etc/tripwire/twpol.txt
データベースの初期化
ここまで設定したら、改ざん検知を行うため、現在のファイルシステムの状態を記録してベースラインとなるデータベースを作ります。
これには、 tripwire --init
コマンドを使います。
tripwire --init --local-passphrase <ローカルパスフレーズ>
以上で、Tripwireを使うための初期セットアップは完了です。
定常運用
運用時に発生する作業とその手順・コマンドについて述べます。
改ざんチェックの定期実行
tripwire --check
コマンドで改ざんチェックを実行できます。
tripwire --check
ファイルシステムの状態とTripwireのデータベースに記録されたベースラインに差異がある場合、コマンドの終了コードはゼロでない値となります。
上のコマンドをcronなどで定期的に実行するとよいでしょう。
tripwire --check
コマンドで -M|--email-report
オプションを付けることで、ポリシーファイルで設定された受信者にメールを送ることができます。
あるいは、 tripwire --check
終了コードをチェックして、異常時にアラートするような方法も可能です。
改ざんチェック結果の確認
改ざんチェックの結果は、 tripwire --check
コマンドの標準出力でも確認できますが、cfg設定ファイルの REPORTFILE
で設定されたpathにレポートファイルが生成されます。
そのファイルの内容は twprint --print-report
コマンドによって確認できます。
twprint --print-report --twrfile <レポートファイルのpath>
データベースの更新
改ざんを検知した後、ファイルシステムの状態を修正するか、Tripwireのデータベース(= ベースライン)を更新しない限り、以降もずっと改ざんが検出され続けることになります。
そこで、現在のファイルシステムの状態を正として、ベースラインを更新します。
これには、 tripwire --update
コマンドを使います。
tripwire --update --accept-all \
--local-passphrase <ローカルパスフレーズ> \
--twrfile <レポートファイルのpath>
--accept-all
オプションを付けることで、プロンプトを表示せずにベースラインの更新を実行します。
改ざん検知ポリシーの更新
運用中に改ざん検知のポリシーを更新することもあるでしょう。
そんなときは、ポリシーファイル及びベースラインの再作成からやり直すこともできますが、その場合、もし最後の改ざんチェックからその時点までに誰かがファイルの変更・改ざんを行った場合に、検出できなくなってしまいます。
そこで、 tripwire --update-policy
コマンドを使うことが推奨されています。3
# ポリシー設定の元となるテキストファイルを編集
vi /etc/tripwire/twpol.txt
# ポリシー設定ファイルの再生成と、ベースラインの更新を行う
tripwire --update-policy --site-passphrase <サイトパスフレーズ> \
--local-passphrase <ローカルパスフレーズ> /etc/tripwire/twpol.txt
まとめ
以上、オープンソース版のTripwireのインストール、初期設定、定常運用の手順について解説しました。
どなたかの参考になれば幸いです。
参考
- Tripwireについて|トリップワイヤ・ジャパン株式会社
-
エンタープライズ:Tripwireによるファイル改ざんの検知 ... ITMediaに掲載されている全5回の連載記事(2002年)
- エンタープライズ:セキュリティ How-To - 第2回:ポリシーファイルの作成と編集 ... ポリシーファイルの記述方法を詳しく解説している。
脚注
-
twpolicy(4)のman pageに該当の記述があります。 "Once the initial policy file has been generated, any changes should be made with the
tripwire --update-policy
command, ..." ↩