ファイアウォールログでいっぱいになったdmesg


8

私の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ます(commandの出力ではありませんdmesg)。

これらのログが表示されるのを防ぐ方法はありdmesgますか?


とにかくすべてをログに記録する意味は何ですか?
0xC0000022L 2014年

1
ドロップされたすべてのパケットをログに記録することは、実際にはお勧めできません。症状を排除するよりも良いことは、ロギングルールをより具体的にすることです。たとえば、どの接続にも関連せず、何も「特別な」ことを行わないパケット(接続の開始など)をログに記録することはあまり賢明ではありません。これを「ホストAがポートBに接続することを望んでいた」などの関連するものに切り詰めた方がはるかに良いでしょう。パケットがドロップされる理由の数は、関連する理由でドロップする理由の数よりも大幅に多い可能性があります。
Andreas Wiese 2014年

1
@Andreas Wiese-この質問のためにルールを簡略化しました。私のルールはより洗練され、具体的です。とにかく、問題はdmesgファイアウォールルールではなく、フラッディングを防ぐ方法です。
Martin Vegter 2014年

Netfilterロギングデーモンに関するこの回答も参照してくださいulogd2。それが私が問題を解決した方法です。
mivk

回答:


4

次の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有能なロギングプログラムだけです。メッセージがそこに送られ、ユーザースペースプロセスがパケットをログに記録するかどうかを決定します。

もう1つ試すことができるのは、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パケットが記録されます。もちろん、必要に応じてこれを調整できます。


パケットrsyslogをログに記録するように構成する方法を見つけることができませんでしたNFLOG。で動作するいくつかのソリューションが必要rsyslogです。
Martin Vegter 2014年

2
@MartinVegter-NFLOGはrsyslogで動作します。NFLOGの場合、仲介役としてulogd(ulogd2が必要だと思います)を使用します。これは、netlinkソケットをリッスンしてログを取得し、(構成されたとおりに)syslogに配信します。ulogd2が使用できない場合は、ulogd(1.x)とULOGターゲットを使用します。
クリストファーキャシェル

0

iptablesで使用しているログレベルに関連している可能性があります。rsyslogのドキュメントから理解できるように、ログレベルは次のとおりです。「優先度は、次のキーワードのいずれかで、昇順です:デバッグ、情報、通知、警告、警告(警告と同じ)、エラー、エラー(エラーと同じ)、クリティカル、アラート、emerg、パニック(emergと同じ)。」名前、つまり「通知」を使用してiptablesでログレベルを指定しようとするとどうなりますか。私は今それがまったく問題ではないと思うので、まあ私にチェックせずに投稿する権利を与えます。上記と同様のスキームを実装したところ、同じ問題が発生しました。私のcentos 7カーネルはv3.10.0であり、どうやらv3.5以降、カーネルのロギングは/ dev / kmsgを使用して行われているようで、dmesgが何らかの方法でそこから入力を取得していると思います。


0

次のコマンドでログレベルを7に設定すると、

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

次に、レベルのしきい値をdmesgに渡すことで、これらのメッセージを単に除外できます。

dmesg --level=err,warn

-7

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

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

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