エックスサーバーに Tripwire を導入する

投稿日:2022年7月19日 更新日:

エックスサーバーに、Tripwire というソフトウェアを導入する手順を紹介します。

Tripwire は、ファイルの改ざんを検知するためのソフトウェアで、サーバー上のファイルに何らかの変更が加えられたかどうかをチェックすることができます。

1. 方針

  • サーバー上のユーザー名は、foobar とします。
  • Tripwire を、~/local/tripwire にインストールします。

2. Tripwire を導入する手順

2-1. Automake を導入する

まず、Automake というツールを導入します。

(このあたりは、エックスサーバーのいつのサーバーかによって異なる可能性があります)

/local/src 以下にソースファイルをダウンロードします。

$ cd ~/local/src
$ wget https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.gz

解凍して、展開されたディレクトリに移動します。

$ tar xzvf automake-1.16.5.tar.gz
$ cd automake-1.16.5

一端、~/local/bin に 2つのシンボリックリンクを作成しておきます(この後で必要なため)。

$ cd ~/local/bin 
$ ln -s aclocal aclocal-1.15
$ ln -s automake automake-1.15

configure コマンドを実行して、Makefile を生成します。

$ LDFLAGS="-L/home/foobar/local/lib" \ 
./configure --prefix=/home/foobar/local

コンパイルして、インストールします。

$ make
$ make install

2-2. Tripwire を導入する

ここからが、Tripwire の導入作業です。

~/repositories ディレクトリに、tripwire の Gitリポジトリをクローンします。

$ cd ~/repositories
$ git clone https://github.com/Tripwire/tripwire-open-source.git

configureコマンドを実行して、Makefile を生成します。

LDFLAGS="-L/home/foobar/local/lib" \
./configure --prefix=/home/foobar/local/tripwire

コンパイルして、インストールします。

$ make
$ make install

このコマンドを実行すると、いろいろな設定項目について聞かれます。

  • ライセンスを受け入れるかどうか。
  • site keyfile のパスフレーズ。
  • local keyfile のパスフレーズ。

ファイル構成は以下となっています。

$ tree ~/local/tripwire
.
├── doc
│   └── tripwire
│       ├── COMMERCIAL
│       ├── COPYING
│       ├── ChangeLog
│       ├── ReadMe-2.4.3
│       ├── TRADEMARK
│       └── policyguide.txt
├── etc
│   ├── site.key
│   ├── svXXXXX.xserver.jp-local.key
│   ├── tw.cfg
│   ├── twcfg.txt
│   ├── tw.pol
│   └── twpol.txt
├── lib
│   └── tripwire
│       ├── report
│       ├── svXXXXX.xserver.jp.twd
│       └── svXXXXX.xserver.jp.twd.bak
├── man
├── sbin
│   ├── siggen
│   ├── tripwire
│   ├── twadmin
│   └── twprint
└── share
    └── man
(省略)

この時点で生成された設定内容を表示します。

$ cd ~/local/tripwire
$ ./sbin/twadmin -m f
ROOT          =/home/foobar/local/tripwire/sbin 
POLFILE       =/home/foobar/local/tripwire/etc/tw.pol 
DBFILE        =/home/foobar/local/tripwire/lib/tripwire/$(HOSTNAME).twd 
REPORTFILE    =/home/foobar/local/tripwire/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr 
SITEKEYFILE   =/home/foobar/local/tripwire/etc/site.key 
LOCALKEYFILE  =/home/foobar/local/tripwire/etc/svXXXXX.xserver.jp-local.key 
EDITOR        =/usr/bin/vi 
LATEPROMPTING =false 
LOOSEDIRECTORYCHECKING =false 
MAILNOVIOLATIONS =true 
EMAILREPORTLEVEL =3 
REPORTLEVEL   =3 
MAILMETHOD    =SENDMAIL 
SYSLOGREPORTING =false 
MAILPROGRAM   =/usr/sbin/sendmail -oi -t

3. Tripwire の設定

GitHub – Tripwire/tripwire-open-source: Open Source Tripwire® に従って設定します。

3-1. キーを生成する (Generating Keys)

ここは既に済んでいます。

ローカルキー(local key)とサイトキー(site key)があり、それぞれが1ファイルになっています。

以下の2つのファイルです。

~/local/tripwire/etc/
  ├─ site.key   (site keyfile)
  └─ svXXXXX.xserver.jp-local.key  (local keyfile)

3-2. 設定ファイルを生成する (Creating a configuration file)

~/local/tripwire/etc/twcfg.txt ファイルの末尾に以下を追記します。

これは、Tripwire のチェック処理を自動実行したとき、結果が送信される先のメールアドレスです。

GLOBALEMAIL =foobar@example.com

次のコマンドで、テキスト形式の設定ファイルから、バイナリ形式の設定ファイルを生成します。

$ cd ~/local/tripwire
$ ./sbin/twadmin --create-cfgfile -S ./etc/site.key ./etc/twcfg.txt

3-3. ポリシーファイルを生成する (Generating a policy file)

~/local/tripwire/etc/twpol.txt (テキストファイル)を元に、~/local/tripwire/etc/tw.pol (バイナリファイル)を生成します。

事前に、~/local/tripwire/etc/twpol.txt ファイルを編集するとよいのですが、分からなければデフォルトのままでもよいと思います。後で少しずつ変更していけばよいでしょう。

$ cd ~/local/tripwire
$ ./sbin/twadmin --create-polfile -S ./etc/site.key ./etc/twpol.txt

3-4. データベースを構築する (Creating a baseline)

現状のファイルとディレクトリを元にして、データベースを生成します。

$ ./sbin/tripwire --init

3-5. テキスト形式の「設定ファイル」と「ポリシーファイル」を削除する

~/local/tripwire/etc/twcfg.txt~/local/tripwire/etc/twpol.txt は、残しておくと危険なので削除します。

$ rm ~/local/tripwire/etc/twcfg.txt
$ rm ~/local/tripwire/etc/twpol.txt

4. Tripwire の運用

4-1. チェック処理の実行を定期実行させる

ファイルが改ざんされたかどうかのチェック処理は、以下のコマンドで実行します。

$ ~/local/tripwire/sbin/tripwire --check

~/local/tripwire/lib/report/ 以下にレポートファイルが生成されます。

このコマンドを cron で、1日1回実行するようにしておきます。

$ crontab -e

以下の1行を追記します。

00 6 * * * /home/foobar/local/tripwire/sbin/tripwire --check --email-report -t 1
  • --email-reportオプション:結果をメール送信します。
  • -t 1 オプション:メールする内容の詳細レベルを指定します。

4-2. レポートを表示する (Printing a report)

$ cd ~/local/tripwire
$ ./sbin/twprint -m r -t 2 -r ./lib/tripwire/report/svXXXXX.xserver.jp-20220711-173942.twr | less
  • -t 2 オプション:内容の詳細レベルを指定します。
  • -r オプション:表示するレポートのファイルを指定します。

4-3. レポートを元にデータベースを更新する (Updating a database)

レポートに記載されたファイルやディレクトリの変更後の状態を、データベースに反映させます。

$ cd ~/local/tripwire
$ ./sbin/tripwire --update -r ./lib/tripwire/report/svXXXXX.xserver.jp-20220711-173942.twr
  • -r オプション:表示するレポートのファイルを指定します。

コマンドを実行すると、エディタでレポートが開きますが、ファイルやディレクトリの先頭に「[x]」というチェックマークがついています。この「x」を消してファイルを保存するとその行のファイルもしくはディレクトリの状態は反映されません。

4-4. ポリシーを更新する (Updating a policy)

レポートを閲覧した際に、「特定のパスについては、チェックを除外したい」「特定のパスについては、チェックする内容[1]を変更するべき」などに気づいた場合は、ポリシーを変更します。

まず、バイナリ形式のポリシーファイルから、テキスト形式のポリシーファイルを生成します。

$ cd ~/local/tripwire
$ ./sbin/twadmin -m p > ./etc/twpol.txt

テキスト形式のポリシーファイルを編集します。

$ vi ~/local/tripwire/etc/twpol.txt

[1] Tripwire では、ファイルやディレクトリに対して、何をチェックするか指定することができます。詳しくは、twpolicy(4): Tripwire policy file reference – Linux man pageTripwireによるホスト型IDSの構築:ゼロから始めるLinuxセキュリティ(8)(2/3 ページ) – @IT(20年前の記事!) などを参照してください。

テキスト形式のポリシーファイルを使って、バイナリ形式のポリシーファイルを更新します。

$ ./sbin/tripwire --update-policy -Z low ./etc/twpol.txt
  • このとき、データベースも更新されます。
  • そのため、事前に --check してファイルが改ざんされていないかチェックしておくことをお勧めします。

-Tips

執筆者:fitallright

関連記事

レンタルサーバーのTips

Windows で、.htaccess(先頭がドットで始まり拡張子を持たないファイル名の)ファイルを作成する方法

レンタルサーバーでは、.htaccess ファイルを使ってサーバー側の設定を変更することが許されているものが多くあります。 そこで、この機能を利用しようと思い Windows のエクスプローラー上で …

レンタルサーバーの Tips

.htaccess ファイルとは何なのか?

.htaccess ファイルとは何なのか?について説明します。

レンタルサーバーの Tips

【エックスサーバー】サイトを編集する時は、mod_pagespeed をオフにしましょう

2019年3月27日:「mod_pagespeed設定」機能の新規設定の受付が終了しました。 「mod_pagespeed設定」機能の新規設定の受付終了について – 2019/03/27 …

CodePen で書いたコードを自分のWebサイトに埋め込む方法

CodePen とは、Web上で HTML, CSS, JavaScript を書いてすぐに結果を表示することができるサービスです。 結果を確認しながら、コードを書いたり修正できるので、ちょっとしたW …

レンタルサーバーの Tips

.htaccess でのアクセス設定に注意

レンタルサーバーでは、特定のディレクトリに .htaccess ファイルを置き、アクセス制限をかける場合があります。 例えば、以下を記述した .htaccess ファイルを置くと、そのディレクトリ以下 …

ロリポップ!「スタンダードプラン」