12
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Tripwireによるファイル改ざん検知の導入〜設定〜運用の流れ

Last updated at Posted at 2018-09-17

はじめに

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) ... 改ざん検知の対象ファイル群や検査ポリシーの設定

導入〜運用の流れ

  1. インストール
  2. 初期セットアップ
  3. サイトキーとローカルキーの生成
  4. 設定ファイル(cfg)の生成
  5. ポリシーファイル(pol)の生成
  6. データベースの初期化
  7. 定常運用
  8. 改ざんチェックの定期実行
  9. データベースの更新
  10. 改ざん検知ポリシーの更新

インストール

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 コマンドを使って、設定内容を記述したテキストを元に、サイトキーで暗号署名したバイナリを生成します。

cfg設定ファイルの生成
# 設定の元となるテキストファイルを編集
vi /etc/tripwire/twcfg.txt

# 暗号署名した設定ファイルを生成
twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key \
--site-passphrase <サイトパスフレーズ> /etc/tripwire/twcfg.txt

ポリシーファイルの設定と生成

ポリシーファイルは、Tripwireによってどのファイル・ディレクトリをどのようなルールで監視するかというポリシーを定めるものです。
これもテキスト形式で記述したポリシーファイルを元に、サイトキーで暗号署名を行ってバイナリファイルを生成する形になります。
ポリシーの記述方法はオリジナルのポリシー設定テキストファイル twpol.txttwpolicy(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のインストール、初期設定、定常運用の手順について解説しました。
どなたかの参考になれば幸いです。

参考

脚注

  1. https://fedoraproject.org/wiki/EPEL/ja

  2. Centos5,6,7にEPEL/REMIのyumリポジトリの追加をする。 - Qiita

  3. twpolicy(4)のman pageに該当の記述があります。 "Once the initial policy file has been generated, any changes should be made with the tripwire --update-policy command, ..."

12
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?