Linux:logwatch(8)はうるさいです。ノイズレベルを制御するにはどうすればよいですか?


30

Linuxシステムは、デフォルトでlogwatch(8)ユーティリティを実行します。RedHat / CentOS / SLシステムでは、Logwatchがcronjobによって呼び出され、cronjobが/etc/cron.daily/結果を含む毎日の電子メールを送信します。これらのメールには次のような件名があります。

Subject: Logwatch for $HOSTNAME

問題は、デフォルトではこれらの毎日の電子メールがうるさく、他のサービス(Nagios、Cacti、中央syslogなど)によって既に監視されている多くの余分な情報(HTTPエラー、毎日のディスク使用量など)が含まれていることです。100システムの場合、電子メールの負荷は耐えられません。人々は電子メールを無視します。これは、ログウォッチによって検出される問題を見逃す可能性があることを意味します。

ログウォッチによって生成されるノイズの量を減らす方法はありますが、それでもログウォッチを使用して重大な問題を通知できますか?

以下に自分の回答を投稿しますが、他の人が何をしたかを見たいです。

:FreeBSDに関しては、FreeBSDに関する同様の質問があります:periodic(8)はうるさいです。ノイズレベルを制御するにはどうすればよいですか?

回答:


39

全体的に、Logwatchの入手可能なドキュメントには十分な説明がなく、しばしばあまりにも曖昧です。いくつかの有用な例をつないで、Logwatchのノイズを95%以上削減しました。

ここに私が見つけたものがあります。

Logwatchのドキュメントは/usr/share/doc/logwatch-*/HOWTO-Customize-LogWatchにあり、いくつかの便利な例が含まれていることに注意してください。

  1. RHEL / CentOS / SLでは、デフォルトのログウォッチ構成は以下にあります /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"
    
  2. 特定のサービスのログウォッチを完全に無効にしたくない場合があります。結果を調整して、ノイズを少なくします。/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.*
    

  3. logwatchでは、正規表現をに配置することにより、ログウォッチの電子メールから出力を取り除くこともできます/etc/logwatch/conf/ignore.conf。HOWTO-Customize-LogWatchによると:

    ignore.conf:このファイルは、logwatchの出力と一致すると、実行されているサービスに関係なく、一致する行を抑制する正規表現を指定します。

    しかし、私はこれであまり運がありませんでした。要件には条件ステートメントが必要です。これは、「セキュリティスキャナーによるセキュリティ警告がある場合は、出力を印刷しないでください。しかし、セキュリティスキャナー悪意のある人からセキュリティ警告がある場合は、有用な部分を印刷してください。ヘッダー「失敗したログイン:」、悪いホストのIP、スキャナーのIPではありません。」

  4. ソースでニップします(@ user48838が示唆するとおり)。これらのメッセージはいくつかのアプリケーションによって生成されており、Logwatchは結果を喜んであなたに吐き出します。これらの場合、ログを少なくするようにアプリケーションを変更できます。

    これは必ずしも望ましいとは限りません。完全なログをどこか(中央syslogサーバー、中央IDSサーバー、Splunk、Nagiosなど)に送信したい場合がありますが、すべてのサーバー、毎日。


これはまさに私がやったことですが、正しく思い出すと、ログから正しく解析されていないため、何らかの「その他」のカテゴリにリストされていたサービス(電子メールの拒否と関係があると思います)ログのすべての行が電子メールで送信されていました。これは非常にうるさかった。そのため、ログウォッチのソースコードを編集し、それぞれのフィルターを追加/変更して、おそらく電子メールごとに20kbを削減しました。これは数年前のことなので、それ以降はログウォッチが改善されたと確信していますが、そうでない場合に備えてバージョンを更新していません。
マイク

5

はい-ログウォッチはノイズが多すぎます。チェックを完全に無効にすることについては既に言及しました。

そうしたくない場合は、特定のイベントが表示されないようにする必要があります。たとえば、nagiosがsshを介してDMZシステムに接続するのは面白くありません。しかし、ssh経由で他のログインがある場合は興味深いです。

ksyslogdの代わりにrsyslogを使用します(最初にrsyslogをインストールしてから、ksyslogdを削除します)。rsyslogを使用すると、ログに記録するものとしないものを微調整できます(たとえば、「nagios connected」を含むsshdからメッセージをドロップする式を作成します)。そうすれば、ログウォッチは有用な情報のみを報告します。

別のケースはxinetdかもしれません-成功した接続について通知されたくない-これはxinetd itselvで設定できます-xinetdのlogwatch-checkを無効にすることなく。


3

興味のある点として、Stefan Lasiewskiの回答からフォーム2を選択しましたが、私の目的のために、不要なノイズをすべて除外するのではなく、特定の行のみを含めたいと考えました。

vsftpdを設定していたので、テキストを含む行を削除する/etc/logwatch/conf/services/vsftpd.confようなものを使用する代わりに*Remove = testuser、そのテキストtestuser*OnlyContains = "testuser"含む行のみを返す行を使用しました。

これらの2つのスクリプトは、使用して非常に基本的に働くgrepgrep -v

違いは、*Remove何回でも使用でき*OnlyContainsますが、何か他の何かが必要な場合は一度だけ使用する必要があることです。したがって、複数の値に対しては*OnlyContains = "testuser|testuser2|testuser3"


1

電子メールステータスメッセージを、サイズや期間/年齢などのプログラム可能な属性に基づいてダイジェストを提供できるリストサーバーに送信することを検討しましたか?この方法では、電子メールで送信されるログの量は減りませんが、バッチ処理により個々の電子メールの量を制御して、電子メールの頻度を減らすことができます。


私が持っています。また、syslogのみのソリューションも検討しました。このソリューションでは、ノイズの一部を除去します。ただし、簡単にするために、ソースでこのようなものを制御できるかどうかを見たかったのです。
ステファンLasiewski

1
ソースで「ニップ」し、そうすることで発生する障害を最小限に抑えることを検討している場合は、利用可能な場合にログレベルを調整する努力を制限することを検討できます。
user48838

0

私は最近、sshdサービスからの出力を静かにする必要がありました。一部のセクションは非常に長く、詳細レベルを設定しても制御できませんでした。

これは理想的な解決策ではありませんが、sshd スクリプト/usr/share/logwatch/scripts/services/sshdをここからコピーして上書きしました:/etc/logwatch/scripts/services/sshd

もちろん、そのスクリプトファイルの更新についていく必要がありますが、出力内容を非常に細かく制御できます。または、のlogwatchようなツールを介して出力をパイプ処理しawkたり、不要なsedものを削除したりできると思いますが、それは私には難しいようです。


0

UNIX&Linux Stackexchangeについても同じ質問がありましたが、これを修正した答えを次に示します。

のRangeパラメーターを変更することにより、logwatchに1日ではなく7日を見るように指示できますlogwatch.conf

Range = between -7 days and -1 days

logwatch毎週のcronディレクトリから毎日のcronディレクトリに移動することで、毎日ではなく毎週実行するように指示できます。

mv /etc/cron.daily/00logwatch /etc/cron.weekly/

@JeffSchallerに感謝

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.