Contents
Tripwire
1.インストール
| 1 | # dnf -y install tripwire | 
2.パスフレーズ設定
| 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | # 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 has been preserved for  your  inspection.  This  implements  a  minimal policy, intended only to test  essential  Tripwire  functionality.  You should edit the policy file to  describe  your  system,  and  then  use twadmin to generate a new signed copy of the Tripwire policy. Once you have a satisfactory Tripwire policy file, you should move  the clear-text version to a secure location  and/or  encrypt  it  in  place (using a tool such as GPG, for example). Now run "tripwire --init" to enter Database Initialization  Mode.  This reads the policy file, generates a database based on its contents,  and then cryptographically signs the resulting  database.  Options  can  be entered on the command line to specify which policy, configuration, and key files are used  to  create  the  database.  The  filename  for  the database can be specified as well. If no  options  are  specified,  the default values from the current configuration file are used. | 
3.Tripwire の設定
①設定ファイル編集
| 1 2 3 4 5 6 7 8 9 | # vi /etc/tripwire/twcfg.txt ●9 行目あたり 行頭に「#」を追加し、その下の行に「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 | 
④ポリシーファイル設定
| 1 2 | # cd /etc/tripwire/ # vi twpolmake.pl | 
twpolmake.plの内容
| 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 | #!/usr/bin/perl # Tripwire Policy File customize tool # $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 | # 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 2 | # tripwire -m i -s -c /etc/tripwire/tw.cfg Please enter your local passphrase: ←ローカルパスフレーズを入力 | 
テスト用ファイルを作成
| 1 | # echo test > /root/test.txt | 
Tripwire の動作確認
| 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | # tripwire -m c -s -c /etc/tripwire/tw.cfg 下記のように表示されればOK Open Source Tripwire(R) 2.4.3.7 Integrity Check Report Report generated by:          root Report created on:            Fri 18 Apr 2025 09:59:51 AM JST 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: =============================================================================== -------------------------------------------------------------------------------   Section: Unix File System -------------------------------------------------------------------------------   Rule Name                       Severity Level    Added    Removed  Modified   ---------                       --------------    -----    -------  --------   User binaries                   66                0        0        0   Tripwire Binaries               100               0        0        0   Operating System Utilities      100               0        0        0   Libraries                       66                0        0        0   OS executables and libraries    100               0        0        0   File System and Disk Administraton Programs                                   100               0        0        0   Networking Programs             100               0        0        0   System Administration Programs  100               0        0        0   Critical Utility Sym-Links      100               0        0        0   Shell Binaries                  100               0        0        0 * Tripwire Data Files             100               1        0        0   System boot changes             100               0        0        0   Security Control                100               0        0        0   Login Scripts                   100               0        0        0   Critical configuration files    100               0        0        0   Kernel Administration Programs  100               0        0        0   Hardware and Device Control Programs                                   100               0        0        0   System Information Programs     100               0        0        0   (/sbin/runlevel)   Application Information Programs                                   100               0        0        0   (/sbin/rtmon)   Critical system boot files      100               0        0        0 * Root config files               100               1        0        0   Invariant Directories           66                0        0        0   Temporary directories           33                0        0        0   Critical devices                100               0        0        0 Total objects scanned:  55044 Total violations found:  2 =============================================================================== Object Summary: =============================================================================== ------------------------------------------------------------------------------- # Section: Unix File System ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Rule Name: Tripwire Data Files (/var/lib/tripwire) Severity Level: 100 ------------------------------------------------------------------------------- Added: "/var/lib/tripwire/Lepard.twd" ------------------------------------------------------------------------------- Rule Name: Root config files (/root) Severity Level: 100 ------------------------------------------------------------------------------- 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 | 
⑧Tripwire 定期的にメールで結果報告するスクリプト作成
| 1 2 | # cd /var/www/system # vi tripwire.sh | 
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 25 | #!/bin/bash PATH=/usr/sbin:/usr/bin:/bin:/usr/local/tripwire/sbin # パスフレーズ設定 LOCALPASS=xxxxx # ローカルキーパスフレーズ SITEPASS=xxxxx # サイトキーパスフレーズ #通知先メールアドレス指定 MAIL="<your mailaddress> " 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 2 3 4 5 | # chmod 700 tripwire.sh cron に追加 # crontab -e 0 3 * * * /var/www/system/tripwire.sh | 
下記コマンドを実行し、指定したメールアドレスにtripwire実行結果が通知されることを確認
| 1 | # /var/www/system/tripwire.sh | 
Logwatch導入
①インストール
| 1 | # dnf install logwatch | 
②設定ファイルの編集
| 1 2 3 4 5 6 7 8 9 | # cat /usr/share/logwatch/default.conf/logwatch.conf >> /etc/logwatch/conf/logwatch.conf # vi /etc/logwatch/conf/logwatch.conf ●76 行目 : 「MailTo = root」の行頭に「#」を挿入し、その下行に通知を受け取りたいメールアドレスを設定 #MailTo = root MailTo = [メールアドレス] ●115行目あたり : ログ通知の詳細度を設定 #Detail = Low Detail = High | 
③レポートを出力
| 1 | # logwatch --output stdout | 
下記のようなメッセージが出ます
| 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 |  ################### Logwatch 7.12 (01/22/25) ####################          Processing Initiated: Fri Apr 18 10:08:38 2025         Date Range Processed: yesterday                               ( 2025-Apr-17 )                               Period is day.         Detail Level of Output: 10         Type of Output/Format: mail / text         Logfiles for Host: Lepard  ##################################################################   --------------------- Kernel Audit Begin ------------------------  *** Denials ***     system_u:system_r:init_t:s0 system_u:object_r:root_t:s0 (rmdir dir): 2 times     system_u:system_r:systemd_hwdb_t:s0 system_u:system_r:systemd_hwdb_t:s0 (dac_override capability): 1 times   Number of audit daemon starts: 3   Number of audit daemon stops: 3   Number of audit initializations: 3 -----------Omission---------- **Unmatched Entries**     No hostname configured, using default hostname.: 2 Time(s)     Reexecuting requested from client PID 2099 ('systemctl') (unit session-5.scope)...: 1 Time(s)     Relabeled /dev, /dev/shm, /run, /sys/fs/cgroup in 26.739ms.: 1 Time(s)     Reloading...: 15 Time(s)     Running in initrd.: 3 Time(s)  ---------------------- Systemd End -------------------------  --------------------- Disk Space Begin ------------------------  Filesystem               Size  Used Avail Use% Mounted on  /dev/mapper/fedora-root   15G  4.3G   11G  29% /  /dev/nvme0n1p2           960M  286M  675M  30% /boot  ---------------------- Disk Space End -------------------------  ###################### Logwatch End ######################### | 
④次のコマンドで設定したアドレスにレポートが届くかテストを行います。上記の様なログレポートメールが届いているか確認
| 1 | # /etc/cron.daily/0logwatch | 
DiCEのインストール
ネットが切断されたり、ルーターが切断再起動したときにおこるグローバルIPの変更の度に、ダイナミックDNSにアクセスしグローバルIPが変更されたことを知らせなくてはいけません。その作業を自動的にやってくれるのがDiCEです
①Diceのダウンロード、インストール
| 1 2 3 | # cd /usr/local/bin # wget http://www.hi-ho.ne.jp/yoshihiro_e/dice/diced01914.tar.gz # tar -xzvf diced01914.tar.gz | 
②DiCEの設定
DiCEの出力文字はEUCのため、文字化けしてしまう。UTF-8に変換するために、nkfをインストールしておく
| 1 | # dnf install nkf | 
64bitOSで32bitソフトのDiceを動かすため下記をインストール
| 1 | # dnf install glibc.i686 | 
③DiCEを起動する
| 1 2 | # cd /usr/local/bin/DiCE # ./diced | nkf -uw | 
④イベントの追加
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | =-=-=- DiCE DynamicDNS Client -=-=-= Version 0.19 for Japanese Copyright(c) 2001 sarad :add 新しくイベントを追加します DynamicDNSサービス名を入力してください "?"で対応しているサービスを一覧表示します (P)戻る >VALUEDOMAIN ------------------------------------------------- << バリュードメイン >> URL: http://www.value-domain.com/index.php *** 情報 *** ・全ホストを更新するにはホスト名に"*"を指定してください。 ・"ユーザー名"に入力された内容は無視されます。 ================================================= ドメイン名を入力してください "?"でドメイン一覧を表示します (P)戻る >[Domain name] ================================================= ホスト名を入力してください (P)戻る >[Host name] ================================================= ログインユーザ名を入力してください (P)戻る >[Login username] ================================================= ログインパスワードを入力してください (P)戻る >[Password] ================================================= 登録するIPアドレスを入力してください 空白にすると現在のIPアドレスを自動検出します (P)戻る >[Enter] ================================================= このイベントに題名を付けてください (P)戻る >[Any name] ================================================= このイベントを実行するスケジュールを設定します ------------------------------------------------- 実行する頻度を指定してください (番号入力) (0)1回のみ (1)1日1回 (2)1週間に1回 (3)1ヵ月に1回 (4)その他の周期 (5)IPアドレス変化時 (6)起動時 (P)戻る >[Any} ------------------------------------------------- IPアドレスがあまり変化しない環境の場合、更新せずに一定期間を過ぎると アカウントを削除されてしまうことがあります IPアドレスの変化が無い時に実行する間隔を指定してください (0)7日毎   (1)14日毎  (2)21日毎  (3)28日毎 (4)35日毎  (5)56日毎  (6)84日毎 (P)戻る >[Any} ================================================= ================================================= このイベントを有効にしますか? (Y/N) (イベントの有効/無効は"EN/DIS"コマンドで切替えられます) >y ================================================= イベントを保存しますか? (Y/N) >y イベント"xxxxx"を保存しました ================================================= :list (No.)   (イベント名)                   (スケジュール)             (次回予定)   0 *  xxxxx                       IPアドレス変化時 (7日毎)   03/12 13:58 :ex o + 3/5 13:58 にxxxxxが実行されました   IPアドレスを更新しました 終了 :exit | 
⑤Diceの自動実行
DiCEを常駐モードで起動
| 1 2 3 | # setarch `uname -m` /usr/local/bin/DiCE/diced -d -l DiCE Daemon Started !! | 
DiCE自動起動設定
| 1 | # echo “setarch `uname -m` /usr/local/bin/DiCE/diced -d -l” >> /etc/rc.d/rc.local | 
rc.localに実行権限を付加
| 1 | # chmod u+x /etc/rc.d/rc.local | 
ディスク使用率チェックスクリプト導入
1 スクリプト作成
| 1 2 | # cd /var/www/system # vi disk_capacity_check.sh | 
disk_capacity_check.shの内容
| 1 2 3 4 5 6 7 8 9 10 | #!/bin/bash #通知先メールアドレス指定 MAIL="<Mail address>" DVAL=`/bin/df / | /usr/bin/tail -1 | /bin/sed 's/^.* \([0-9]*\)%.*$/\1/'` if [ $DVAL -gt 80 ]; then echo "Disk usage alert: $DVAL %" | mail -s "Disk Space Alert in `hostname`" $MAIL fi | 
実行権限
| 1 | # chmod 700 disk_capacity_check.sh | 
2 実行確認
①現在の使用率を確認
| 1 | # df -h | 
次のように表示される
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Filesystem               Size  Used Avail Use% Mounted on /dev/mapper/fedora-root   15G  4.8G   11G  33% / devtmpfs                 4.0M     0  4.0M   0% /dev tmpfs                    1.9G     0  1.9G   0% /dev/shm tmpfs                    772M  1.6M  770M   1% /run tmpfs                    1.0M     0  1.0M   0% /run/credentials/systemd-journald.service /dev/loop1                67M   67M     0 100% /var/lib/snapd/snap/core24/739 /dev/loop0                56M   56M     0 100% /var/lib/snapd/snap/certbot/4557 /dev/loop2                45M   45M     0 100% /var/lib/snapd/snap/snapd/23771 tmpfs                    1.9G     0  1.9G   0% /tmp /dev/nvme0n1p2           960M  328M  633M  35% /boot tmpfs                    1.0M     0  1.0M   0% /run/credentials/systemd-resolved.service tmpfs                    1.0M     0  1.0M   0% /run/credentials/getty@tty1.service tmpfs                    386M  8.0K  386M   1% /run/user/1000 | 
②使用率80%以上になるようダミーファイルを作成(例ではdummyfile という名前で8G程度)
| 1 | # dd if=/dev/zero of=dummyfile bs=1M count=8000 | 
➂ディスク容量チェックスクリプトを実行
| 1 | # /var/www/system/disk_capacity_check.sh | 
設定したメールアドレスに本文の内容として「Disk usage alert: 85 %」のように記載のメールが届きます
④作成した「dummyfile」を削除
| 1 | # rm dummyfile | 
⑤定期実行設定
| 1 2 | # crontab -e 30 2 * * * /var/www/system/disk_capacity_check.sh | 

