ファイルの改竄を検知するソフトの Tripwire を搭載します。
Tripwireは、導入時のファイル状態をデータベース化し、
そのデータベースとファイルの現状を比較することにより、
ファイルの追加/変更/削除を検知。
これは、サーバー立ち上げ初期から搭載するのが良いので早速実行。
①Tripwireのインストール
GNOME端末より
# su + 管理者権限パスワード
# yum install tripwire を入力
# y
#exit
完了です。
②Tripwireの設定
1. サイトキーを作成します
続けて(GNOME端末)
# tripwire-setup-keyfiles を入力
* パスフレーズは入力しても画面には何も表示されません。
Enter the site keyfile passphrase: → サイトパスフレーズ①を入力
Verify the site keyfile passphrase: → サイトパスフレーズ①を再度入力
* 設定ファイル、ポリシーファイルの署名及び、検証に使用されます。
Enter the local keyfile passphrase: → ローカルパスフレーズ②を入力
Verify the local keyfile passphrase: → ローカルパスフレーズ②を再度入力
* ベースラインのデータベースファイルとレポートファイルの署名及び、検証に使用されます。
Signing configuration file...
Please enter your site passphrase: → サイトパスフレーズ①を入力
Signing policy file...
Please enter your site passphrase: → サイトパスフレーズ①を入力
* パスフレーズを忘れるとTripwireが使用できなくなります。
忘れた場合は初めから設定をもう一度実行しなければならず、
Tripwireデータベースも再び初期化されてしまいます。
2. 設定ファイル twcfg.txt の作成
続けて(GNOME端末)
# vi /etc/tripwire/twcfg.txt を入力
ROOT =/usr/sbin
POLFILE =/etc/tripwire/tw.pol
DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
SITEKEYFILE =/etc/tripwire/site.key
LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
EDITOR =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false → true (変更)
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3 → 4 (変更)
MAILMETHOD =SENDMAIL
SYSLOGREPORTING =false → true (変更)
MAILPROGRAM =/usr/sbin/sendmail -oi -t
: w
:q
----------- 設定ファイル 内容一覧-----------
ROOT : tripwireへのパス
POLFILE : デフォルトのポリシーファイルのパス
DBFILE : デフォルトのデータベースファイルのパス
REPORTFILE : デフォルトのレポートファイルのパス
SITEKEYFILE : デフォルトのサイトキーファイルへのパス
LOCALKEYFILE : デフォルトのローカルキーファイルへのパス
EDITOR : デフォルトで使用するエディタのパス
LATEPROMPTING :
メモリ上にパスワードが保存されている期間を短くする場合は「true」、
違う場合は「false」
LOOSEDIRECTORYCHECKING :
監査対象に何らかの変化があった際、
そのファイルを格納しているディレクトリも報告の対象とする場合は「true」、
違う場合は「false」
MAILNOVIOLATIONS :
違反がない場合でもメールの送信をする場合は「true」
違う場合は「false」
EMAILREPORTLEVEL :
メールで送信されるレポートの詳細レベルを 0~4 の範囲で指定
レベル0(本文なし、件名のみ)
* 対象サーバのホスト名
* 改ざんを検出した時刻
* 改ざんを検出したファイル数
* 改ざんのタイプ(追加,削除,変更)
* 改ざんされたファイルのレベル(事前定義が必要です。)
レベル2(レベル0 + 下記)
* Tripwireが整合性チェックを行った際の設定ファイル情報
* あらかじめ定義したチェック対象ファイルのグループごとの改ざん比率
* Tripwireがチェックをおこなったファイルの総数、
改ざんを検出したファイル数
* 改ざんを検出したファイル,ディレクトリ
レベル4(レベル2 + 下記)
* 改ざんを検出したファイルの、
基準となる属性値(TripwireのDBファイルに含まれる情報)
* 改ざんを検出したファイルの、チェックを行った際の属性値
REPORTLEVEL :
レポートの詳細レベルを 0~4 の範囲で指定
MAILMETHOD :
メールを送信するプロトコル「SMTP」、もしくは「SENDMAIL」
SYSLOGREPORTING :
TripwireのメッセージをSyslogにuser.noticeレベルで出力する場合は「true」
違う場合は「false」
MAILPROGRAM :
MAILMETHODで「SENDMAIL」と指定した場合、sendmailのパスを指定
3. 署名ファイル(テキスト ⇒ 暗号化)の作成
安全面を考えてrootにより署名、暗号化されたファイルのみを使用する為
続けて(GNOME端末)
# twadmin -m F -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt を入力
----------- twadmin コマンド オプション一覧-----------
-m F
設定ファイル作成時に指定
-v、--verbose
詳細表示モード
-s、--silent、--quiet
簡易出力モード
-c 暗号署名された設定ファイル、--cfgfile 暗号署名された設定ファイル
暗号署名された設定ファイル名を指定
-S サイトキー、--sitekey-file サイトキー
設定ファイルを暗号署名するときに使用するサイトキーを指定
-Q、--site-passphrase
設定ファイルの暗号署名に、サイトキーとともに使用するパスフレーズを指定
-e、--no-encryption
暗号署名せずに設定ファイルを作成する
--help
twadmin コマンドのヘルプを表示
--------------------------------------------
Please enter your site passphrase: → サイトパスフレーズ①を入力
Wrote configuration file: /etc/tripwire/tw.cfg の表示で完了。
4. 設定ファイル(twcfg.txt)を削除(セキュリティ確保)
続けて(GNOME端末)
# rm -f /etc/tripwire/twcfg.txt を入力
* 暗号化されている設定ファイルからテキスト版に戻す場合
# twadmin --print-cfgfile > /etc/tripwire/twcfg.txt
③ポリシーファイルの設定
1. ポリシーファイルを作成
続けて(GNOME端末)
# vi /etc/tripwire/twpol.txt を入力 → 何も入力しません
(省略)
: w
:q
2. ポリシーファイル最適化スクリプトの作成(コピペ)
続けて(GNOME端末)
# vi /etc/tripwire/twpolmake.pl
----------- 下記を追加 -----------
#!/usr/bin/perl
# Tripwire Policy File customize tool
# ----------------------------------------------------------------------
# Copyright (C) 2003 Hiroaki Izumi
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# ----------------------------------------------------------------------
# Usage:
# perl twpolmake.pl {Pol file}
# ----------------------------------------------------------------------
#
$POLFILE=$ARGV[0];
open(POL,"$POLFILE") or die "open error: $POLFILE" ;
my($myhost,$thost) ;
my($sharp,$tpath,$cond) ;
my($INRULE) = 0 ;
while (
chomp;
if (($thost) = /^HOSTNAME\s*=\s*(.*)\s*;/) {
$myhost = `hostname` ; chomp($myhost) ;
if ($thost ne $myhost) {
$_="HOSTNAME=\"$myhost\";" ;
}
}
elsif ( /^{/ ) {
$INRULE=1 ;
}
elsif ( /^}/ ) {
$INRULE=0 ;
}
elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+->\s+.+)$/) {
$ret = ($sharp =~ s/\#//g) ;
if ($tpath eq '/sbin/e2fsadm' ) {
$cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ;
}
if (! -s $tpath) {
$_ = "$sharp#$tpath$cond" if ($ret == 0) ;
}
else {
$_ = "$sharp$tpath$cond" ;
}
}
print "$_\n" ;
}
close(POL) ;
----------- 以上 -----------
3. ポリシーファイルのファイル名変更
続けて(GNOME端末)
# perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new を入力
4. ポリシーファイル(テキスト ⇒ 暗号化)の作成
続けて(GNOME端末)
# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt.new
Please enter your site passphrase: → サイトパスフレーズ①を入力
Wrote policy file: /etc/tripwire/tw.pol の表示で完了。
5. 設定ファイル(twpol.txt)を削除(セキュリティ確保)
続けて(GNOME端末)
# rm -f /etc/tripwire/twpol.txt* を入力
* 暗号化されている設定ファイルからテキスト版に戻す場合
# twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt
④Tripwireのデータベース作成
続けて(GNOME端末)
# tripwire -m i -s -c /etc/tripwire/tw.cfg を入力
Please enter your local passphrase: → ローカルパスフレーズ②を入力
(ここでは暫く待つ)
----------- tripwire コマンド オプション一覧-----------
-m c、--check
整合性チェック時に指定
-I、--interactive
整合性チェック終了後、結果のレポートがデータベースのアップデートのためにエディタで開かれる
-r レポートファイル、--twrfile レポートファイル
指定されたファイルにレポートを出力する
-n、--no-tty-output
コンソールに表示されるレポートを抑制
-V エディタ、--visual エディタ
指定されたエディタでバロットボックスの編集を行う
-E、--signed-report
レポートに署名するように指定
-i リスト、--ignore リスト
リストに指定されたプロパティを処理・比較しない
-l { レベル | 名前 }、severity { レベル | 名前 }
指定されたレベル、名前以上のポリシールールのみをチェック
-R ルール、--rule-name ルール
指定されたポリシールールのみチェック
-x セクション、--section セクション
ポリシーファイルの指定されたセクションのルールのみチェック
-M、--email-report
ポリシーファイルで指定されたアドレスにレポートを送信する
-t レベル、--email-report-level レベル
メールレポートのレベルを指定(0~4)
⑤Tripwireの確認
出来具合をチョット確認してみましょう。
続けて(GNOME端末)
# tripwire -m c -s -c /etc/tripwire/tw.cfg を入力
(ここでも暫く待つ)
内容を確認して完了です。
⑥Tripwireの定期自動実行
1. 定期実行設定
続けて(GNOME端末)
# crontab -e
0 3 * * * root /usr/sbin/tripwire -m c -M → 整合性を毎日午前3時からチェックします。
:w
:q
----------- tripwire コマンド オプション一覧-----------
-m i、--init
データベースの初期化時に指定
-v、--verbose
詳細表示モード
-s、--silent、--quiet
簡易出力モード
-c 設定ファイル、--cfgfile 設定ファイル
使用する設定ファイルを指定
-p ポリシーファイル、--polfile ポリシーファイル
使用するポリシーファイル名を指定
-d データベースファイル、--dbfile データベースファイル
データベースファイル名を指定
-S サイトキー、--sitekey-file サイトキー
設定ファイルとポリシーファイルを読み込むときに使用するサイトキーを指定
-L ローカルキー、--local-keyfile ローカルキー
新しいデータベースファイルを書き込むときに使用するローカルキーを指定
-P パスフレーズ、--local-passphrase パスフレーズ
新しいデータベースファイルの署名に指定したパスフレーズをローカルキーと一緒に指定
-e、--no-encryption
データベースファイルを暗号署名しない
-m c --help、--check --help
tripwire コマンドの整合性チェックモードのヘルプを表示
-m c、--check
システムの整合性チェックを行う
--------------------------------------------
いやー終わりましたねー。![]()