dmesg がファイアウォールのログで溢れる

dmesg がファイアウォールのログで溢れる

私の iptables には、ドロップされたパケットをログに記録するルールがあります。

-A INPUT -i eth0       -j   LOG  --log-prefix "FW: " --log-level 7
-A INPUT -i eth0       -j   DROP

そして、 には/etc/rsyslog.conf、これらのログを専用のファイルに送信する別のルールがあります/var/log/firewall.log

:msg, contains, "FW: "                    -/var/log/firewall.log
& ~

は、他のログ ファイル& ~に溢れないように、ログを直ちに削除します。syslog

これはうまく機能しますが、dmesgファイアウォール ログ (/var/log/dmesgコマンドの出力ではなくdmesg) が大量に出力されます。

これらのログが表示されないようにする方法はありますかdmesg?

答え1

NFLOG代わりにターゲットを使用することもできますLOG:

NFLOG
    This target provides logging of matching packets. When this  target  is  set  for  a
    rule, the Linux kernel will pass the packet to the loaded logging backend to log the
    packet. This is usually used in combination with nfnetlink_log as  logging  backend,
    which  will multicast the packet through a netlink socket to the specified multicast
    group. One or more userspace processes may subscribe to the  group  to  receive  the
    packets.  Like  LOG, this is a non-terminating target, i.e. rule traversal continues
    at the next rule.

必要なのは、nfnetlink_log有能なログ記録プログラムだけです。メッセージはそこに送られ、ユーザー空間のプロセスがパケットをログに記録するかどうかを決定します。

LOG他に試すことができるのは、ルールを特定のしきい値に制限することです。

-A INPUT -i eth0 -m limit --limit 10/minutes -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP

これにより、平均して 1 分あたり 10 パケットがログに記録されます。もちろん、必要に応じてこれを調整できます。

答え2

次のコマンドでログ レベルを 7 に設定した場合:

-A INPUT -i eth0       -j   LOG  --log-prefix "FW: " --log-level 7

次に、レベルしきい値を dmesg に渡すだけで、これらのメッセージを簡単にフィルタリングできます。

dmesg --level=err,warn

答え3

これは、iptables で使用しているログ レベルに関連している可能性があります。rsyslog のドキュメントから理解している限り、ログ レベルは次のとおりです。「優先度は、昇順で次のキーワードのいずれかです。debug、info、notice、warning、warn (warning と同じ)、err、error (err と同じ)、crit、alert、emerg、panic (emerg と同じ)。」iptables で、名前 (つまり 'notice') を使用してログ レベルを指定してみるのはどうでしょうか。確認せずに投稿した私のせいで、今ではそれが問題ではないと考えています。上記で概説したのと同様のスキームを実装しましたが、同じ問題が発生します。私の Centos 7 カーネルは v3.10.0 ですが、どうやら v3.5 以降ではカーネル ログは /dev/kmsg を使用して行われるようで、dmesg はそこから何らかの方法で入力を取得していると思われます。

答え4

なぜ気にするのですか? はdmesg最近のカーネル メッセージを印刷するための低レベル ツールであり、カーネルにドロップされたパケットをログに記録するように要求しました。

システムの syslog システムを設定して、iptables メッセージを他のカーネル メッセージとは別のログ ファイルに記録し、 の代わりに書き込まれたログ ファイルを使用しますdmesg

関連情報