web-dev-qa-db-ja.com

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

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

Subject: Logwatch for $HOSTNAME

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

Logwatchによって生成されるノイズの量を削減しながら、logwatchを使用して重大な問題を通知するにはどうすればよいですか?

以下に自分の回答を掲載しますが、他の人が何をしたかを確認したいと思います。

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

30

全体として、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:Ignore特定のIPs for SSH&PAMチェック? で説明されています。これを行うには、以下を/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に正規表現を配置することで、logwatchメールからの出力を取り除くこともできます。 HOWTO-Customize-LogWatchさんのコメント:

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

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

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

    完全なログをどこかに(中央のSyslogサーバー、中央のIDSサーバー、Splunk、Nagiosなどに)送信したい場合があるため、これは常に望ましいとは限りませんが、logwatchからこのことを電子メールで送信したくないすべてのサーバー、毎日。

40

はい-ログウォッチはしばしばうるさいです。チェックの無効化については完全に述べました。

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

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

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

5
Nils

興味のあるポイントとして、私はオプション2に従って Stefan Lasiewski による回答を作成しましたが、目的のために、不要なノイズをすべて除外するのではなく、特定の行のみを含めたいと考えました。

Vsftpdを構成して/etc/logwatch/conf/services/vsftpd.confを作成し、*Remove = testuserなどのテキストを含む行を削除する代わりにtestuser*OnlyContains = "testuser"を使用して、そのテキスト。

これら2つのスクリプトは、基本的にはgrepgrep -vを使用することで機能します。

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

3
Jacob Tomlinson

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

1
user48838

NIX&Linux Stackexchange について同じ質問がありましたが、これが私のために修正した答えです:

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

Range = between -7 days and -1 days

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

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

@JeffSchallerに感謝

0

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

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

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

0
Dominic P