解決策 1:
全体として、Logwatch の利用可能なドキュメントには十分な説明がなく、多くの場合あいまいすぎます。役立つ例をいくつかまとめて、Logwatch のノイズを 95% 以上削減しました。
これが私が見つけたものです。
/usr/share/doc/logwatch-*/HOWTO-Customize-LogWatch
でいくつかの Logwatch ドキュメントを見つけることができることに注意してください。 、いくつかの有用な例が含まれています。
RHEL/CentOS/SL では、デフォルトの logwatch 設定は /usr/share/logwatch/default.conf/logwatch.conf
未満です。
これらの設定は、ローカル構成を /etc/logwatch/conf/logwatch.conf
の下に配置することで上書きできます .そのファイルに以下を追加して、「httpd」などのサービスや毎日のディスク使用チェックを完全に無視するように logwatch に指示します。
# Don't spam about the following Services
Service = "-http"
Service = "-zz-disk_space"
特定のサービスの logwatch を完全に無効にするのではなく、結果を微調整してノイズを減らしたい場合があります。 /usr/share/logwatch/default.conf/services/*.conf
サービスのデフォルト構成が含まれています。これらのパラメーターは、ローカル構成を /etc/logwatch/conf/services/$SERVICE.conf
の下に配置することでオーバーライドできます .残念ながら、ここでの logwatch の機能は制限されており、logwatch 実行可能ファイルの多くは文書化されていない Perl でいっぱいです。あなたの選択は、実行可能ファイルを別のものに置き換えるか、/etc/logwatch/conf/services
を使用していくつかの設定をオーバーライドすることです。 .
たとえば、ネットワーク全体でスキャンを実行するセキュリティ スキャナーがあります。テストの実行中、セキュリティ スキャナはアプリケーション ログに多くのエラー メッセージを生成します。 logwatch がセキュリティ スキャナーからのエラーを無視するようにしたいのですが、他のホストからの攻撃については引き続き通知します。これについては、Logwatch:SSH および PAM チェックで特定の IP を無視しますか? で詳しく説明されています。これを行うには、次を /etc/logwatch/conf/services/sshd.conf
の下に配置します :
# Ignore these hosts
*Remove = 192.168.100.1
*Remove = X.Y.123.123
# Ignore these usernames
*Remove = testuser
# Ignore other noise. Note that we need to escape the ()
*Remove = "pam_succeed_if\(sshd:auth\): error retrieving information about user netscan.*
"
logwatch では、/etc/logwatch/conf/ignore.conf
に正規表現を配置することで、logwatch メールから出力を取り除くこともできます。 . HOWTO-Customize-LogWatch のコメント:
ignore.conf:このファイルは、実行中のサービスに関係なく、logwatch の出力と一致した場合に一致する行を抑制する正規表現を指定します。
しかし、私はこれであまり運がありませんでした。私の要件には条件ステートメントが必要です。これは、「セキュリティ スキャナーが原因でセキュリティ警告がある場合は、出力を印刷しないでください」のようなものです。ただし、セキュリティ スキャナからセキュリティ警告が表示された場合はおよび 次に、有用な部分を印刷します--「Failed logins from:」というヘッダー、悪意のあるホストの IP ですが、スキャナーの IP ではありません.'
ソースでそれをニップします(@ user48838の提案に従って)。これらのメッセージは何らかのアプリケーションによって生成されており、Logwatch は喜んで結果を吐き出しています。このような場合、アプリケーションを変更してログを減らすことができます。
完全なログをどこかに (中央 syslog サーバー、中央 IDS サーバー、Splunk、Nagios などに) 送信したい場合があるため、これは常に望ましいとは限りませんが、logwatch がこれについて電子メールで送信したくない場合があります。毎日、すべてのサーバー。
解決策 2:
はい - logwatch はノイズが多すぎることがよくあります。チェックを完全に無効にすることについては既に述べました。
それをしたくない場合は、特定のイベントが表示されないようにする必要があります。たとえば、nagios が ssh 経由で DMZ システムに接続するのは興味深いことではありません。しかし、ssh 経由で他のログインがある場合は興味深いです。
ksyslogd の代わりに rsyslog を使用します (最初に rsyslog をインストールしてから ksyslogd を削除します)。rsyslog を使用すると、ログに記録するものと記録しないものを微調整できます (たとえば、「nagios connected」を含む sshd からメッセージをドロップする式を作成します)。そうすれば、logwatch は有用な情報のみを報告します。
別のケースは xinetd かもしれません - 成功した接続について通知されたくありません - これは xinetd 自体で設定できます - xinetd の logwatch-check を無効にする必要はありません.
解決策 3:
興味深い点として、Stefan Lasiewski の回答からオプション 2 に従いましたが、目的のために、不要なノイズをすべて除外するのではなく、特定の行のみを含めたいと考えました。
vsftpd を設定していたので /etc/logwatch/conf/services/vsftpd.conf
を作成しました *Remove = testuser
のようなものを使用する代わりに テキスト testuser
を含む行を削除します 行 *OnlyContains = "testuser"
を使用しました そのテキストを含む行のみを返します。
これら 2 つのスクリプトは、grep
を使用することで非常に基本的に機能します。 と grep -v
.
違いは、 *Remove
を使用できることです 好きなだけ *OnlyContains
で 何か、または何か他のものが必要な場合は、一度使用する必要があります。したがって、複数の値の場合は *OnlyContains = "testuser|testuser2|testuser3"
を実行します