tripwireの運用で、ほぼ毎日更新があるディレクトリがいつも検知されてしまいます
そのため、除外設定を実施することにしたのですがtripwireデータベースを更新しようとするとエラーが出てしまい更新ができませんでした
やりたかったこと
/var/logをtripwireのチェック除外ディレクトリに設定する
エラー内容
日本語で言うと、「ルールは別のルールの開始点または終了点として既に定義されています。」といったエラーの内容です
# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/twpol.txt ### Error: Rule already defined as a start or stop point of another rule. ### /var/log: Line number 1043 ### Exiting... The policy file was not altered.
解決策
/var/logはポリシーファイルでチェックディレクトリとして設定されているため
設定してあるディレクトリが除外にも入っているので矛盾していることが原因だったっぽいです
# Critical configuration files. (略) ( rulename = "Critical configuration files", severity = $(SIG_HI) ) { /var/log -> $(SEC_CONFIG) ; ← ここが競合 } (略) !/var/log/ ; ← ここが競合
なので対策としては/var/logを除外するのではなく、その下のディレクトリを除外指定することで対処しました
今回はもともと/var/log/rspamdがローテーションで頻繁にファイル作成されるため毎日のようにtripwireチェックに引っかかっておりました
/var/log以下は今後他も同様になるかもしれないな~と思って/var/logごと除外してしまおうと思いましたが、さすがに設定範囲が大雑把すぎたようですね
そのため、/var/log/rspamdを除外ディレクトリとして設定します
まだ作成していない場合は、ポリシーファイルのテキスト版を作成します
# twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt
/var/logで指定した箇所を/var/log/rspamdに書き換えます
# vi /etc/tripwire/twpol.txt !/var/log/ ; ↓ 変更 !/var/log/rspamd ;
暗号署名版のポリシーファイルを作成します
# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /e tc/tripwire/site.key /etc/tripwire/twpol.txt Please enter your site passphrase:
テキスト版ポリシーファイルを削除します
# rm /etc/tripwire/twpol.txt
tripwireデータベースを更新します
# rm -f /var/lib/tripwire/*.twd* ; tripwire -m i -s -c /etc/tripwire/tw.cfg Please enter your local passphrase:
今後/var/log以下で他のディレクトリも引っかかるようであれば、その都度そのディレクトリを除外設定していこうと思います
余談ですが、自分が使用しているポリシーファイルは/var/logや/etcなど様々なディレクトリをチェック対象にしていますが、公開webサーバーを運用している場合は下記サイトのようにwebのルートディレクトリのみチェックするポリシーも良いかもなと思いました
参考
オープンソースのTripwire® / バグ / #46 ポリシーファイル tw.pol の生成に失敗する (sourceforge.net)
ファイル改竄検知システム導入(Tripwire) – AlmaLinuxで自宅サーバー構築 (centossrv.com)
コメント