これは私の以前の質問と多少関連しています。ここ。
/etc/rsyslog.d
以下を含む3つのファイルがあります/etc/rsyslog.conf
。
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
マニュアルページに記載されているようにrunning with~
に置き換えられ、トラブルシューティング段階で警告を提供します。つまり、利用可能な(公式!)文書が古くなったり遅れたりしたことがわかります。stop
rsyslogd
-N1
~
stop
ここでのアイデアは、プレフィックスが付いたすべてのメッセージがipt:
指定されたログファイルに移動し、他のログファイルがこの行を受け取らないことです(私もcontains
使用せずに試しましたstartswith
)。syslog
もはやこのメッセージを受け取るべきではないことに具体的に言及されていますkern.log
。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
注:私はバージョン7.4.4を使用していますrsyslog
。はい、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
答え1
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/)。
答え2
問題が解決したかどうかはわかりません。すべての詳細はカバーされていませんが、rsyslogは特定の設定に応じてさまざまな方法でメッセージを送信できます。たとえば、すべての条件に同時に送信することも、最初の条件に送信してから2番目の条件に送信する式で送信することもできます。全員に同時に送信するように設定している場合は、停止しても問題はありません。 rsyslog 非同期/同期/並列、特に直接/接続リストタイプのキューを見つけると、rsyslog フロー方式が変更されます。