データセンターにおいて、データセキュリティは最優先事項です。そのため、Linuxサーバーを導入されている方もいらっしゃるかもしれません。それは当然のことです。Linuxは、セキュリティと柔軟性を比類のないレベルで両立させています。この柔軟性こそが、Linuxがデータセンターに最適な理由です。しかし、他のプラットフォームと同様に、すぐに使える環境が必ずしもお客様の期待に沿うとは限りません。幸いなことに、サーバーのセキュリティを強化できるツールは数多くあります。
そのようなツールの一つがTripwireです。これは、特定のファイルの変更を監視し、アラートを通知するセキュリティおよびデータ整合性ツールです。Tripwireは、エンタープライズ版とオープンソース版の2つのソリューションで提供されています。両者の最大の違いは、エンタープライズ版はLinux、Solaris、AIX、Windowsで利用できるのに対し、オープンソース版はLinuxのみで利用できることです。もちろん、エンタープライズ版には商用サポートも提供されています。
Ubuntu Server 16.04 プラットフォームに Tripwire のオープン ソース バージョンをインストールして構成し、変更されたファイルを監視して変更があった場合に警告する方法を説明します。
参照: Linux のセキュリティ保護ポリシー (Tech Pro Research)
インストール
Tripwire は標準リポジトリ内に存在するため、インストールは次のコマンドを発行するだけで簡単に行えます。
sudo apt install tripwire
インストール中に、ncurses ベースのウィンドウがいくつか表示されます (図 A )。そこで次の操作を行う必要があります。
- SMTP 構成用に Postfix を構成します (構成なし、インターネット サイト、スマートホストを使用したインターネット、サテライト システム、ローカルのみから選択できます)。
- メールシステム名を設定します(デフォルトのままにします)
- サイト認証キーとローカル認証キーの両方を作成する
- Tripwire 構成とポリシーを再構築します (両方とも [はい] を選択します)
- サイトキーとローカルキーのパスフレーズの両方を入力します
図A

構成
次に設定プロセスを開始します。まず、コマンドsudo tripwire –initでデータベースを初期化します。するとすぐにsudoパスワードとローカルパスフレーズ(インストール時に作成)の入力を求められます。初期化プロセスは続行されますが、「そのようなファイルまたはディレクトリはありません」というエラーメッセージが表示されます(図B)。
図B

このエラーを回避するには、Tripwireの設定ファイルを編集する必要があります。ただし、その前に、どのディレクトリが不足しているかを確認する必要があります。そのためには、次のコマンドを実行します。
sudo sh -c "tripwire --check | grep Filename > missing-directory.txt"
参照可能なmissing-directory.txtというテキストファイルが作成されます。お好みのテキストエディタでTripwireの設定ファイルを開き、いくつかの変更を加えます。設定ファイルは/etc/tripwire/twpol.txtです。最初に編集するセクションは、rulename = “Boot Scripts”です。/etc/rc.bootの行の先頭に # 文字を追加してコメントアウトします(図C)。
図C

次に、 rulename = “System boot changes”までスクロールし、次の行をコメントアウトします。
/var/lock
â/var/run
下にスクロールして、 rulename = “Root config files”まで移動し、次の項目以外をコメントアウトします。
/root
/root/.bashrc
下にスクロールして、rulename = “Device & Kernel information”をコメントアウトします。
/proc
ファイルを保存して閉じます。
次のコマンドで暗号化されたポリシー ファイルを再生成します。
sudo twadmin -m P /etc/tripwire/twpol.txt
サイトキーのパスフレーズの入力を求められます。パスフレーズを認証すると、ポリシーファイルが再生成されます。その後、以下のコマンドでTripwireデータベースを再初期化する必要があります。
sudo tripwire --init
ローカルサイトのパスフレーズの入力を求められます。パスフレーズを認証すると、データベースはエラーなく初期化されます。
参照:サイバー戦争からの防御:サイバーセキュリティエリートがデジタル黙示録を防ぐために取り組んでいる方法(無料PDF)(TechRepublic)
整合性のテスト
新しくインストールしたTripwireシステムでテストを実行してみましょう。コマンドsudo tripwire –checkを実行してください。コマンドが完了すると、「エラーなし」と表示されます(図D)。
図D

さらにテストしてみましょう。sudo touch /bin/test.shコマンドでサンプルファイルを追加し、 sudo tripwire –checkコマンドで再度チェックを実行してください。すると、2つの違反(追加したファイルと/binディレクトリへの変更)が表示されるはずです(図E)。
図E

新しいルールを作成する
このサーバーをウェブホスティングに使用していて、/var/www/ ディレクトリの違反を監視するトリップワイヤールールを作成したいとします。これを行うには、/etc/tripwire/twpol.txt ファイルを開いて編集し、以下の行を追加します。
# Rules for web hosting
(
rulename = "Web Hosting Ruleset",
severity = $(SIG_HI)
)
{
/var/www -> $(SEC_CRIT);
}
ファイルを保存して閉じます。次のコマンドでTripwire設定ファイルを再生成します。
sudo twadmin -m P /etc/tripwire/twpol.txt
次のコマンドで Tripwire データベースを再初期化します。
sudo tripwire --init
sudo touch /var/www/test コマンドを使用して、/var/www にテストファイルを追加し、新しいルールをテストしてみましょう。チェックを再実行すると、テストファイルにフラグが付けられます。
メール通知
当然のことながら、Tripwireを手動で実行するのは避けたいところです。そこでcronと通知機能が役立ちます。まずは、システムからメールが送信できるかどうかテストしてみましょう。以下のコマンドを実行します。
tripwire --test --email EMAIL@ADDRESS
ここで、EMAIL@ADDRESS はアクセスできるメール アドレスです。
電子メールを受信したら、任意のエディタで Tripwire 構成ファイルを開き、電子メールで監視するルールに次の行を追加します。
emailto = EMAIL@ADDRESS
ここで、EMAIL@ADDRESSは実際のメールアドレスです。例えば、Webホスティングルールは次のようになります。
# Rules for web hosting
(
rulename = "Web Hosting Ruleset",
severity = $(SIG_HI),
emailto = EMAIL@ADDRESS
)
{
/var/www -> $(SEC_CRIT);
}
もちろん、設定ファイルを変更したので、次のコマンドを使用して設定を再生成し、データベースを再初期化する必要があります。
sudo twadmin -m P /etc/tripwire/twpol.txt
sudo tripwire --init
この時点で、次のコマンドを使用して、Tripwire チェックを手動で実行し、結果をメールで送信することができます。
sudo tripwire --check --email-report
クロン
cronを使ってシステムを自動化しましょう。コマンドsudo crontab -e -u rootを実行して、rootユーザーのcrontabファイルを開き、編集します。ファイルの末尾に以下の行を追加します。
0 0 * * * tripwire --check --email-report
ファイルを保存して閉じます。sudo systemctl restart cron コマンドでcronを再起動します。
これで完了です。Tripwire はシステムを毎日チェックし、その結果をメールでお知らせします。
安心してください
TripwireでLinuxサーバーを監視すれば、システムに変更が加えられた際に通知が届くので安心です。アラートが計画的な変更であれば無視しても構いません。しかし、システムに何も変更を加えていないのにアラートが届く場合は、ログファイルを調べて何が起こったのかを確認しましょう。
