これは私の前の質問にいくらか関連しています ここ 。
_/etc/rsyslog.d
_に含まれている_/etc/rsyslog.conf
_に3つのファイルがあります。
00-iptables.conf
_50-default.conf
_postfix.conf
_最初のものは私が作成したものです。私の仮定は、名前が付けられているため、_50-default.conf
_の前に含まれるというものですが、フィルター行を直接_50-default.conf
_に入れて、カスタムファイル(_00-iptables.conf
_)を削除してみました。
_:msg, startswith, "ipt:" /var/log/iptables.log
& stop
_
マニュアルページとトラブルシューティングの手順で説明されているように、stop
を_~
_で実行しているため、_-N1
_をrsyslogd
に置き換え、_~
_は非推奨であるという警告を出しました。賛成またはstop
。これは、利用可能な(公式!)ドキュメントが古くなっている/遅れているように見えることを意味します。
ここでの考え方は、接頭辞_ipt:
_が付いたメッセージはすべて、指定されたログファイルに入り、他のログファイルはこれらの行を受信しないということです(contains
の代わりにstartswith
も試しました) 。つまり、特に_kern.log
_で言及されているsyslog
と_50-default.conf
_は、これらのメッセージを受信しないはずです。
_auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
kern.* -/var/log/kern.log
_
Rsyslogのドキュメントを読みましたが、 プロパティベースのフィルター (また ここ )のドキュメントは、正確に最も啓発的ではありません。ドキュメントに記載されている例(他の場所にもあります)および Wikiに同様の例があります :
_# From documentation
*.* /var/log/allmsgs-including-informational.log
:msg, contains, "informational" ~
*.* /var/log/allmsgs-but-informational.log
# From Wiki
:syslogtag, startswith, "MSWinEventLog#011" /var/log/messages;fixsnareFormat
& @192.168.1.8;fixsnareForwardFormat
& ~
_
ドキュメントの例は私の2ライナーにそれほど近いものではありませんが、それでも_~
_の意味をよりよく説明しています。
私は何が間違っているのですか?
セレクターとプロパティを組み合わせる方法があるかどうか誰かが答えることができる場合のボーナスポイント。例えば。:
_:msg, startswith, "ipt:" kern.* /var/log/iptables.log
_
注意:私はrsyslog
のバージョン7.4.4を使用しています。はい、変更後に_service rsyslog restart
_を実行し、それが有効になるのを待ちました。
いくつかのより多くの情報。デーモンをデバッグモード(RSYSLOG_DEBUG=LogFuncFlow RSYSLOG_DEBUGLOG=~/rsl.log $(which rsyslogd) -f /etc/rsyslog.conf -d
)で実行すると、最適化後のルールセットが次のようになります。これは、希望どおりであることを示しているようです(簡潔にするために先頭のプレフィックスが削除されています)。
_ruleset 'RSYSLOG_DefaultRuleset' after optimization:
ruleset 0x214a640: rsyslog ruleset RSYSLOG_DefaultRuleset:
PROPFILT
Property.: 'rawmsg'
Operation: 'contains'
Value....: 'ipt:'
THEN
ACTION 0x215c070 [builtin:omfile:/var/log/iptables.log]
STOP
END PROPFILT
PRIFILT 'auth,authpriv.*'
pmask: X X X X FF X X X X X FF X X X X X X X X X X X X X X
ACTION 0x215e840 [builtin:omfile:/var/log/auth.log]
END PRIFILT
PRIFILT '*.*;auth,authpriv.none'
pmask: FF FF FF FF X FF FF FF FF FF X FF FF FF FF FF FF FF FF FF FF FF FF FF FF
ACTION 0x215f030 [builtin:omfile:-/var/log/syslog]
END PRIFILT
_
また、私が見た動作から、フィルターが期待どおりにファイル_/var/log/iptables.log
_に明確に書き込むため、フィルターが効果を持っていると推測できることも追加する必要があります。ただし、メッセージをその特定のファイルに書き込んだ後、メッセージが期待どおりにドロップされません。
これは、後者だけではなく、_kern.log
_、syslog
、および_iptables.log
_のすべてで終わる方法の例です。プライバシー上の理由から、詳細は編集されています。
_Jun 1 02:23:01 hostname kernel: [70025.211497] ipt:drop IN=eth0 OUT=virbr0 MAC=dd:cc:bb:aa:99:88:77:66:55:44:33:22:11:00 SRC=9.8.7.6 DST=1.2.3.4 LEN=60 TOS=0x00 PREC=0x00 TTL=47 ID=59201 DF PROTO=TCP SPT=47626 DPT=23 WINDOW=4380 RES=0x00 SYN URGP=0
_
RainerScriptを使用してみませんか?ファシリティセレクタの代わりに、$syslogfacility-text
で一致します。実際には、これはセレクターとプロパティを組み合わせたものです。
if ($msg startswith 'ipt:' and $syslogfacility-text == 'kern') then {
action(type="omfile" file="/var/log/iptables.log")
stop
}
また、Rsyslogのドキュメントには、バージョン7のツリーが古くなっているため、使用しない( http://www.rsyslog.com)/doc/v7-stable / )。
あなたがそれを解決したかどうかわからない。私はすべての詳細を調べたわけではありませんが、rsyslogはいくつかの構成に応じてさまざまな方法でメッセージを送信できます。たとえば、すべての条件に同時に送信したり、最初の条件に送信してから2番目に送信したりすることができます。設定がすべてに同時に送信される場合、その停止は実際の意味を持ちません。 rsyslog非同期/同期/並列、特にrsyslogフローの流れを変える直接/リンクリストタイプのキューを探してみてください。