クラッカーによるLinuxサーバーのファイルの改竄を検知するシステムTripwireを導入する。
Tripwireインストールの前にEPELリポジトリ導入(EPEL)
※なぜEPELリポジトリを導入するのかというと、CentOS標準のリポジトリでは提供されていないパッケージを、yumコマンドでインストールすることを可能にするためです。
[root @ホスト名 ~]# rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest6.noarch.rpm
↑ EPELリポジトリインストール※CentOS6の場合
[root @ホスト名 ~]# yum -y install yum-plugin-versionlock
↑ バージョンロックプラグインインストール※CentOS7,6の場合
[root @ホスト名 ~]# rpm -q openvpn >> /etc/yum/pluginconf.d/versionlock.list
↑ (例) openvpnパッケージをバージョンロックする
EPELリポジトリ導入はここまで
ここからTripwireインストール
[root @ホスト名 ~]# yum -y install tripwire ← tripwireインストール
[root @ホスト名 ~]# tripwire-setup-keyfiles ← tripwire初期設定
Enter the site keyfile passphrase:
↑ 任意のサイトパスフレーズ応答(ただのパスワードの設定です)
Verify the site keyfile passphrase:
↑ 任意のサイトパスフレーズ応答(確認)(上で決めたパスワードを改めて入力する場所)
※パスワードは入力しても*など何も表示されないので注意。ちゃんと入力できています。
Enter the local keyfile passphrase: ← 任意のローカルパスフレーズ応答(ただのパスワード設定ですが、こちらはローカルパスフレーズで上で設定したものとはまた別の設定)
Verify the site keyfile passphrase: ← 任意のローカルパスフレーズ応答(確認)
Please enter your site passphrase: ← サイトパスフレーズ応答(上で設定したであろうサイトパスフレーズを入力。ローカルパスフレーズではないので注意)
Please enter your site passphrase: ← サイトパスフレーズ応答
(1)Tripwire設定
[root @ホスト名 ~]# vi /etc/tripwire/twcfg.txt ← Tripwire設定ファイル(テキスト版)作成
viエディタに遷移
LOOSEDIRECTORYCHECKING =true
↑ ファイル変更時に所属ディレクトリの変更を通知しないようにする
REPORTLEVEL =4 ← リポートレベルを変更する
※:wqでエディタを閉じないと保存されないので注意
[root @ホスト名 ~]# twadmin -m F -c /etc/tirpwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt
↑ Tripwire設定ファイル(暗号署名版)作成
Please enter your site passphrase: ← サイトパスフレーズ応答
[root @ホスト名 ~]# rm -f /etc/tripwire/twcfg.txt ← Tripwire設定ファイル(テキスト版)削除
※Tripwire設定ファイル(テキスト版)を復元する場合
[root @ホスト名 ~]# twadmin -m f -c /etc/tripwire/tw.cfg > /etc/tripwire/twcfg.txt
(2)ポリシーファイル設定
Tripwireは、ポリシーファイルを元に作成したデータベースと、現在のファイル状態を比較することにより、ファイルが変更されたかどうかを検知するが、デフォルトのポリシーファイルでは存在しないファイルのチェックが有効になっていたり、逆に存在するファイルのチェックが無効になっていたりするため、存在しないファイルのチェックを無効に、存在するファイルのチェックを有効にするPerlスクリプトを作成して、ポリシーファイルを最適化する。
[root @ホスト名 ~]# vi /etc/tripwire/twpolmake.pl
↑ ポリシーファイル最適化スクリプト作成
※viエディタに遷移すると記述が何もされていないと思うので、上記の記述を追加する
※:wqでエディタを閉じないと保存されないので注意
[root @ホスト名 ~]# perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new
↑ ポリシーファイル最適化
↑ Tripwireデータベース自体をチェック対象外にする
[root @ホスト名 ~]# echo ! “/tmp/tripwire.log ;” >> /etc/tripwire/twpol.txt.new
↑ Tripwireログをチェック対象外にする※後述のTripwire定期自動実行スクリプトで使用
[root @ホスト名 ~]# 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: ← サイトパスフレーズ応答
[root @ホスト名 ~]# rm -f /etc/tripwire/twpol.txt* ← ポリシーファイル(テキスト版)削除
※ポリシーファイル(テキスト版)を復元する場合
[root @ホスト名 ~]# twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt
(3)データベース作成
[root @ホスト名 ~]# tripwire -m i -s -c /etc/tripwire/tw.cfg ← Tripwireデータベース作成
Please enter your local passphrase: ← ローカルパスフレーズ応答
(4)Tripwire確認
[root @ホスト名 ~]# tripwire -m c -s -c /etc/tripwire/tw.cfg ← Tripwireチェック実行
Total violations found: 0 ← 変更がないと0、変更があると変更の数だけ+1されていく。
[root @ホスト名 ~]# echo test > test.txt ← 試しにテストファイルを作成する
[root @ホスト名 ~]# tripwire -m c -s -c /etc/tripwire/tw.cfg ← Tripwireチェック再実行
Total violations found: 1 ← 1件の変更を検知した 上で述べたのはこのこと
[root @ホスト名 ~]# twprint -m r –report-level 1 -c /etc/tripwire/tw.cfg -r /var/lib/tripwire/report/ホスト名-20170123-184023.twr
↑ チェック結果サマリ参照
Added: “/root/test.txt” ← /root/test.txtの追加を検知した
[root @ホスト名 ~]# rm -f test.txt ← テストファイル削除(後始末)
(5)Tripwire定期自動実行設定
[root @ホスト名 ~]# vi tripwire.sh ← Tripwire定期自動実行スクリプト作成
[root @ホスト名 ~]# chmod 700 tripwire.sh
↑ Tripwire定期自動実行スクリプトへ実行権限付加
[root @ホスト名 ~]# echo “0 3 * * * root /root/tripwire.sh” > /etc/cron.d/tripwire
↑ Tripwire定期自動実行設定追加※毎日3:00にTripwire定期実行スクリプトを実行する
(6)ポリシーファイルメンテナンス
日々のチェック結果より、あらかじめ変更がわかっているディレクトリやファイルについては検知されないようにする。
[root @ホスト名 ~]# twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt
↑ ポリシーファイル(テキスト版)作成
[root @ホスト名 ~]# echo ‘!/var/log/sa ;’ >> /etc/tripwire/twpol.txt
↑ 例としてディレクトリ/var/log/saをチェック対象外にする
[root @ホスト名 ~]# echo ‘!/etc/sysconfig/iptables ;’ >> /etc/tripwire/twpol.txt
↑ 例としてファイル/etc/sysconfig/iptablesをチェック対象外にする
[root @ホスト名 ~]# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt
↑ 最適化済ポリシーファイルを元にポリシーファイル(暗号署名版)作成
Please enter your site passphrase: ← サイトパスフレーズ応答
[root @ホスト名 ~]# rm -f /etc/tripwire/twpol.txt /etc/tripwire/tw.pol.bak
↑ ポリシーファイル(テキスト版&バックアップ)削除
[root @ホスト名 ~]# rm -f /var/lib/tripwire/.twd ; tripwire -m i -s -c /etc/tripwire/tw.cfg
↑ Tripwireデータベース更新
Please enter your local passphrase: ← ローカルパスフレーズ応答