Contents
1. Tripwire インストール
Tripwireとはファイルやディレクトリを監視し、変更などがあった場合に通知するホストベースの侵入検知システム(IDS)
1.1 インストール、設定
① ダウンロード、インストール
| 1 2 3 | # cd /usr/local/src # wget https://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/t/tripwire-2.4.3.7-5.el8.x86_64.rpm # rpm -Uvh tripwire-2.4.3.7-5.el8.x86_64.rpm | 
② パスフレーズの設定
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | # tripwire-setup-keyfiles ---------------------------------------------- The Tripwire site and local passphrases are used to sign a variety of files, such as the configuration, policy, and database files. Passphrases should be at least 8 characters in length and contain both letters and numbers. See the Tripwire manual for more information. ---------------------------------------------- Creating key files... (When selecting a passphrase, keep in mind that good passphrases typically have upper and lower case letters, digits and punctuation marks, and are at least 8 characters in length.) Enter the site keyfile passphrase: ←任意の「サイトパスフレーズ」を入力 Verify the site keyfile passphrase: ←再度任意の「サイトパスフレーズ」を入力 Generating key (this may take several minutes)...Key generation complete. (When selecting a passphrase, keep in mind that good passphrases typically have upper and lower case letters, digits and punctuation marks, and are at least 8 characters in length.) Enter the local keyfile passphrase: ←任意の「ローカルパスフレーズ」を入力 Verify the local keyfile passphrase: ←再度任意の「ローカルパスフレーズ」を入力 Generating key (this may take several minutes)...Key generation complete. ---------------------------------------------- Signing configuration file... Please enter your site passphrase: ←「サイトパスフレーズ」を入力 Wrote configuration file: /etc/tripwire/tw.cfg A clear-text version of the Tripwire configuration file: /etc/tripwire/twcfg.txt has been preserved for your inspection. It is recommended that you move this file to a secure location and/or encrypt it in place (using a tool such as GPG, for example) after you have examined it. ---------------------------------------------- Signing policy file... Please enter your site passphrase: ←「サイトパスフレーズ」を入力 Wrote policy file: /etc/tripwire/tw.pol A clear-text version of the Tripwire policy file: /etc/tripwire/twpol.txt ~中略~ default values from the current configuration file are used. | 
③ Tripwire の設定
| 1 2 3 4 5 6 7 8 9 | # vi /etc/tripwire/twcfg.txt ■9 行目あたり 行頭に「#」を追加し、その下の行に「LOOSEDIRECTORYCHECKING =true」を追加します。 LOOSEDIRECTORYCHECKING =true ■12 行目あたり 行頭に「#」を追加し、その下の行に「REPORTLEVEL =4」を追加します。 レベル4 にすることで「0 」~「4 」までの5 段階中、最も詳細なレポートが表示されます。 #REPORTLEVEL =3 REPORTLEVEL =4 | 
④ Tripwire 設定ファイル(暗号署名版)を作成
| 1 2 3 | # twadmin -m F -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt Please enter your site passphrase: ←設定したサイトパスフレーズを入力 Wrote configuration file: /etc/tripwire/tw.cfg | 
⑤Tripwire 設定ファイル(テキスト版)削除
| 1 | # rm -f /etc/tripwire/twcfg.txt | 
参考) Tripwire 設定ファイル(テキスト版)を復元する場合は下記コマンドを実行します
| 1 | # twadmin -m f -c /etc/tripwire/tw.cfg > /etc/tripwire/twcfg.txt | 
⑥ ポリシーファイル設定
| 1 2 | # cd /etc/tripwire/ # vi twpolmake.txt | 
twpolmake.txtの内容
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #!/usr/bin/perl # Tripwire Policy File customize tool # ---------------------------------------------------------------- # 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 (<POL>) { 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) ; | 
⑦ ポリシーファイル最適化
| 1 2 | # mv twpolmake.txt twpolmake.pl # perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new | 
⑧ 最適化済ポリシーファイルを元に、ポリシーファイル(暗号署名版)作成
| 1 2 3 4 | # 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 | 
ポリシーファイル(テキスト版)削除
| 1 | # rm -f /etc/tripwire/twpol.txt* | 
⑨ データベースを作成、動作確認
| 1 2 | # tripwire -m i -s -c /etc/tripwire/tw.cfg Please enter your local passphrase: ←設定したローカルパスフレーズを入力 | 
テスト用ファイルを作成
| 1 | # echo test > /root/test.txt | 
Tripwire の動作確認
| 1 | # tripwire -m c -s -c /etc/tripwire/tw.cfg | 
成功すると下記のように表示される
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | Open Source Tripwire(R) 2.4.3.7 Integrity Check Report Report generated by:          root Report created on:            Wed Jun 14 21:24:53 2023 Database last updated on:     Never =============================================================================== Report Summary: =============================================================================== Host name:                    Lepard Host IP address:              192.168.11.83 Host ID:                      None Policy file used:             /etc/tripwire/tw.pol Configuration file used:      /etc/tripwire/tw.cfg Database file used:           /var/lib/tripwire/Lepard.twd Command line used:            tripwire -m c -s -c /etc/tripwire/tw.cfg =============================================================================== Rule Summary: =============================================================================== ・・・・・省略・・・・・・ ------------------------------------------------------------------------------- Added: "/root/test.txt" =============================================================================== Error Report: =============================================================================== No Errors ------------------------------------------------------------------------------- *** End of report *** Open Source Tripwire 2.4 Portions copyright 2000-2018 Tripwire, Inc.  Tripwire is a registered trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY; for details use --version. This is free software which may be redistributed or modified only under certain conditions; see COPYING for details. All rights reserved. | 
テスト用ファイルを削除
| 1 | # rm -f /root/test.txt | 
1.2 Tripwire を定期実行させる
①Tripwire 自動実行スクリプト作成
| 1 2 | # cd /srv/www/system # vi tripwire.sh | 
「tripwire.sh」の内容
パスフレーズ設定のLOCALPASS、SITEPASS それぞれの「xxxxxxxx」に設定したローカルパスフレーズ、サイトパスフレーズを入力
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #!/bin/bash PATH=/usr/sbin:/usr/bin:/bin:/usr/local/tripwire/sbin # パスフレーズ設定 LOCALPASS= xxxxxxxx # ローカルパスフレーズ SITEPASS= xxxxxxxx # サイトパスフレーズ cd /etc/tripwire # Tripwireチェック実行 tripwire -m c -s -c tw.cfg|mail -s "Tripwire(R) Integrity Check Report in `hostname`" root # ポリシーファイル最新化 twadmin -m p -c tw.cfg -p tw.pol -S site.key > twpol.txt perl twpolmake.pl twpol.txt > twpol.txt.new twadmin -m P -c tw.cfg -p tw.pol -S site.key -Q $SITEPASS twpol.txt.new > /dev/null rm -f twpol.txt* *.bak # データベース最新化 rm -f /usr/local/tripwire/lib/tripwire/*.twd* tripwire -m i -s -c tw.cfg -P $LOCALPASS | 
Tripwire 自動実行スクリプト実行設定
| 1 | # chmod 700 tripwire.sh | 
②Tripwire が定期的に実行されるようcron に追加
| 1 2 | # crontab -e 0 3 * * * /srv/www/system/tripwire.sh | 
参考: メールで結果報告用スクリプト
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #!/bin/bash PATH=/usr/sbin:/usr/bin:/bin:/usr/local/tripwire/sbin # パスフレーズ設定 LOCALPASS=xxxxx # ローカルパスフレーズ SITEPASS=xxxxx # サイトパスフレーズ #通知先メールアドレス指定 MAIL="<your mail address> " cd /etc/tripwire # Tripwireチェック実行 tripwire -m c -s -c tw.cfg|mail -s "Tripwire(R) Integrity Check Report in `hostname`" $MAIL # ポリシーファイル最新化 twadmin -m p -c tw.cfg -p tw.pol -S site.key > twpol.txt perl twpolmake.pl twpol.txt > twpol.txt.new twadmin -m P -c tw.cfg -p tw.pol -S site.key -Q $SITEPASS twpol.txt.new > /dev/null rm -f twpol.txt* *.bak # データベース最新化 rm -f /usr/local/tripwire/lib/tripwire/*.twd* tripwire -m i -s -c tw.cfg -P $LOCALPASS | 
下記コマンドを実行し、指定のメールアドレスに通知が届くことを確認する
| 1 | # /srv/www/system/tripwire.sh | 
2. Logwatch 導入
① Logwatch インストール
| 1 | # zypper -n install logwatch | 
② 設定ファイルの編集
| 1 | # cat /usr/share/logwatch/default.conf/logwatch.conf >> /etc/logwatch/conf/logwatch.conf | 
| 1 2 3 4 5 6 7 8 9 | # vi /etc/logwatch/conf/logwatch.conf ■ 53 行目あたり 「MailTo = root」の行頭に「#」を挿入し、その下行に通知を受け取りたいメールアドレスを設定 #MailTo = root MailTo = <mail.address> ■ 86 行目あたり ログ通知の詳細度を設定 #Detail = Low Detail = High | 
③ Logwatch のレポートを出力
| 1 | # logwatch --output stdout | 
④ 設定したアドレスにレポートが届くかテストを行う
| 1 | # logwatch --output mail | 
4. DiCEのインストール
ネットが切断されたり、ルーターが切断再起動したときにおこるグローバルIPの変更の度に、ダイナミックDNSにアクセスしグローバルIPが変更されたことを知らせなくてはいけません。その作業を自動的にやってくれるのがDiCEです
4.1 Diceのダウンロード、インストール
①ダウンロード
| 1 2 3 4 | # cd /usr/local/bin/ # wget http://www.hi-ho.ne.jp/yoshihiro_e/dice/diced01914.tar.gz # tar -xzvf diced01914.tar.gz # cd /usr/local/bin/DiCE | 
②DiCEの設定
DiCEの出力文字はEUCのため、文字化けしてしまう。
UTF-8に変換するために、nkfをインストールしておく
| 1 | # zypper install nkf | 
③DiCEを起動する
| 1 2 | # cd /usr/local/bin/DiCE # ./diced | nkf -uw | 
-bash: ./diced: No such file or directory
上記のように「そのようなファイルやディレクトリはありません」と表示される場合は、64ビット環境で32ビットを実行するためのglibc-i686がインストールされていませんので下記コマンドインストールして、再度DiCEを起動してください。
| 1 | # zypper install ld-linux.so.2 | 
4.2 イベントの追加
DNSサービスはVALUEDOMAINで進めます
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # ./diced | nkf -uw : add DynamicDNSサービス名を入力してください "?"で対応しているサービスを一覧表示します (P)戻る >VALUEDOMAIN ドメイン名を入力してください "?"でドメイン一覧を表示します (P)戻る ><ドメイン名> ←VALUEDOMAIN ホスト名を入力してください (P)戻る ><ホスト名> ←VALUEDOMAINに登録したホスト名 ログインユーザ名を入力してください (P)戻る ><ユーザー名>  ←VALUEDOMAINに登録したユーザー名 ログインパスワードを入力してください (P)戻る ><passwd>  ←VALUEDOMAINにログインするパスワード 登録するIPアドレスを入力してください 空白にすると現在のIPアドレスを自動検出します (P)戻る >空白 このイベントに題名を付けてください (P)戻る >xxxxxxxxx(適当に付ける) 実行する頻度を指定してください (番号入力) (0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回 (4)その他の周期 (5)IPアドレス変化時 (6)起動時 (P)戻る >5 ←任意 IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると アカウントを削除されてしまうことがあります IPアドレスの変化が無い時に実行する間隔を指定してください (0)7日毎 (1)14日毎 (2)21日毎 (3)28日毎 (4)35日毎 (5)56日毎 (6)84日毎 (P)戻る >0(任意に決める)  ←任意  このイベントを有効にしますか? (Y/N) (イベントの有効/無効は"EN/DIS"コマンドで切替えられます) >y イベントを保存しますか? (Y/N) >y | 
イベントの確認
| 1 2 3 4 5 6 7 8 | :list (No.)   (イベント名)     (スケジュール)       (次回予定) 0 *    xxxxxxxxx   IPアドレス変化時 (7日毎)   01/25 17:43 手動実行 :ex 0 + 1/19 13:13 にxxxxxxxxxが実行されました IPアドレスを更新しました | 
4.3 Diceの自動実行
DiCEデーモンを起動する
| 1 2 3 4 5 6 | # /usr/local/bin/DiCE/diced -d -l =-=-=- DiCE DynamicDNS Client -=-=-= Version 0.19 for Japanese Copyright(c) 2001 sarad DiCE Daemon Started !! | 
起動しているか確認
| 1 2 3 | # ps aux | grep diced root      64904  2.2  0.0   3204   120 ?        Ss   14:48   0:00 /usr/local/bin/DiCE/diced -d -l root      64908  0.0  0.0   7680   848 pts/0    S+   14:49   0:00 grep --color=auto diced | 

