web-dev-qa-db-ja.com

tripwireの場合、違反が見つかった場合にのみレポートを電子メールで送信するにはどうすればよいですか?

トリップワイヤーレポートの理想的なソリューションは次のとおりです。

  • 毎日の電子メールは、違反が見つかった場合にのみ生成されます

  • 毎週日曜日には、違反が見つかったかどうかに関係なく、レポートが電子メールで送信されます。

これを実装することについてのSF'ersの意見にも興味があります。おそらくそれはトリップワイヤーの目的に反しますか?誰かが私が思うその議論をしているのを見ることができました。

3

私はすでにMadHatter氏の提出物を答えとして選んだことを知っていますが、いくつか考えた後、私はうまくいくかもしれない何か他のものを考えました。なぜこれが機能しないのか誰かがわかりますか?

tripwire_out=`/usr/sbin/tripwire --check`; test -z "`echo $tripwire_out | grep 'Total violations found: 0'`"&& echo $tripwire_out

シェルでテストしましたが、意図したとおりに機能します。ただし、tripwirecronジョブはまだ置き換えていません。

皆さんはどう思いますか?

1

多くのホストから多くのtripwireレポートを取得するための私の解決策は、それらをすべてファイルにスタックするアドレスに送信し、ホスト名と違反数だけを報告する簡単なジョブを実行することです。違反数がゼロ以外のホストがあるかどうかを報告する電子メール。

まず、すべてのホストがレポートをアドレス[email protected]に送信します。これは、各crontabエントリから簡単に調整できます。私はそれをします:

# check the tripwires
[email protected]
3 1 * * *  /usr/sbin/tripwire --check

次に、メールサーバーに次のようなエイリアスエントリがあります。

# tripwire report autoprocessing
tripwire:   /var/tmp/tripwire

第三に、そのファイルの内容を処理するために毎朝実行されるcronジョブと、ファイルを削除するために毎晩実行される別のcronジョブがあります(したがって、最新の出力のみを確認しています)。

# report problems with nightly tripwire runs
2 7 * * *  /usr/local/bin/tripwire-check
45 23 * * *  rm -f /var/tmp/tripwire

そして、これが/ usr/local/bin/tripwire-checkの内容です。それは非常に簡単です:

#!/bin/tcsh
grep "Total violation" /var/tmp/tripwire | grep -vw 0 > /dev/null || exit 0
egrep 'Host name|Total vio' /var/tmp/tripwire | mail -s "NIGHTLY TRIPWIRE VIOLATIONS `date +%Y%m%d`" [email protected]

最初のgrepは、メールまたは出力IFOなしで終了します。違反カウントを含むすべての行には、Word全体として数値0も含まれます。 2番目は、最初の行が失敗した場合にのみ呼び出され、簡潔な要約電子メールを生成して私に送信します。

そして最後に、報告するエラーがある場合の出力例を次に示します。

Subject: NIGHTLY TRIPWIRE VIOLATIONS 20050401
Date:   Fri, 1 Apr 2005 07:02:00 +0100
To:     [email protected]
From:   root <[email protected]>

Host name: fw03b.company.com
Total violations found: 0
Host name: je01b.company.com
Total violations found: 0
Host name: ms01.company.com
Total violations found: 1
Host name: fw05a.company.com
Total violations found: 0
Host name: fw02b.company.com
Total violations found: 0
Host name: fw01b.company.com
Total violations found: 0
Host name: je02o.company.com
Total violations found: 0
Host name: je01a.company.com
Total violations found: 0
Host name: fw04a.company.com
Total violations found: 0
Host name: fw04b.company.com
Total violations found: 0
Host name: je02p.company.com
Total violations found: 0
Host name: fw02a.company.com
Total violations found: 0
Host name: fw03a.company.com
Total violations found: 0
Host name: rp01a.company.com
Total violations found: 0
Host name: rp01b.company.com
Total violations found: 0
Host name: je03o.company.com
Total violations found: 0
Host name: db03.company.com
Total violations found: 0
Host name: lb02p.company.com
Total violations found: 15
Host name: rp02o.company.com
Total violations found: 23
Host name: as05.company.com
Total violations found: 0
Host name: db02.company.com
Total violations found: 0

それがお役に立てば幸いです。

9
MadHatter

Tripwireには、エラーのないレポート(MAILNOVIOLATIONS)を抑制するオプションがあります。これは構成ファイルにあります...

2つの異なるtwcfgファイルを設定できます。1つは [〜#〜] mailnoviolations [〜#〜] がTRUEに設定され、もう1つはこのオプションがFALSEに設定されています。

MAILNOVIOLATIONS =true   (or false)

次に、cronジョブは -cフラグ を使用してtripwireを実行し、twcfgファイルを選択できます。

日報crontab:

30 12 * * 1,2,3,4,5,6 /usr/sbin/tripwire --check -c PATH_TO_DAILY_CFG_FILE | mail -s "Tripwire report for `uname -n`, errors found" [email protected]

日曜日のレポートcrontab:

30 12 * * 0 /usr/sbin/tripwire --check -c PATH_TO_WEEKLY_CFG_FILE | mail -s "Weekly Tripwire report for `uname -n`" [email protected]

このように、毎日のcronjobは、違反が見つかった場合にのみレポートを電子メールで送信する構成ファイルを使用してtripwireを実行し、毎週のcronjobは関係なくレポートを電子メールで送信します。

p.s.上記のcrontabコマンドはDebianを使用するシステムからのものであるため、Tripwireバイナリへのパスを編集する必要がある場合があります。

3
adonald

別の可能な単純な解決策。正確には何が求められているかではありませんが、誰かにとって役立つ可能性があります。

メールの件名に「違反の総数」を送信するだけなので、通知を受け取り続けますが、違反が発生しているように見えますが、開く必要はありません。そうすれば、tripwireは期待どおりに機能し続けると確信しています。

tripwire --check > /tmp/twreport; mail -s "Tripwire report for `uname -n`: `grep 'Total violations found' /tmp/twreport`" [email protected] < /tmp/twreport; rm /tmp/twreport

ステップバイステップ:

1.-トリップワイヤーレポートを「twreport」ファイルに保存します

tripwire --check > /tmp/twreport;

2 .-「Totalviolationsfound」という行のtwreportファイルでgrepを実行します。これをmailコマンドの件名に挿入します。そして、メールの本文にtwreportテキストの内容が表示されます。

mail -s "Tripwire report for `uname -n`: `grep 'Total violations found' /tmp/twreport`" [email protected] < /tmp/twreport

3.-最後にtwreportファイルを削除します。

rm /tmp/twreport
0
Carlos Sancho