syslogのiptablesロギングをカスタマイズできますか?

syslogのiptablesロギングをカスタマイズできますか?

iptablesから、次のログエントリがあるとしますsyslog

Nov  3 12:04:12 mypc kernel: [  296.274134] Packet: IN=enp0s9 OUT=enp0s8 MAC=08:00:27:2f:77:23:08:00:27:86:42:0e:08:00 SRC=192.168.2.20 DST=192.168.1.11 LEN=284 TOS=0x00 PREC=0x00 TTL=63 ID=61089 DF PROTO=TCP SPT=80 DPT=1335 WINDOW=32160 RES=0x00 ACK PSH URGP=0

ここで、 " Packet:"はルールで定義したカスタムログプレフィックスですiptables... -j LOG --log-prefix "Packet: "

Q:(IN=enp0s9 <...> ACK PSH URGP=0文字列全体を意味します)変更できますか?それとも解体できない全体の「メッセージ」ですか?

簡単に言えば、アイテムは次のようになりたいです。

Nov  3 12:04:12 Packet: SRC=192.168.2.20 DST=192.168.1.11 LEN=284

追加情報はありません。これをシステムログ用のカスタムテンプレートとして使用したいと思います。可能ですか?残念ながら、まだわからないシステムログ文書

答え1

あなたはそれを使用することができます不動産代替品

ユーザーrsyslog.confまたは同様の行を新しいメッセージに必要な形式のテンプレートとして定義し、入力行を一致させるときに操作に使用します。例えば、

$template myedit,"Packet: %msg:R,ERE,1,FIELD:Packet: .*?(SRC=.*LEN=[0-9]+).*--end%\n"
if ($msg contains "Packet: ") then {
  action(type="omfile" file="/var/log/myedit.log" template="myedit")
}

テンプレート表現テンプレート変数myeditは、正規表現(R)一致、拡張(ERE)、グループキャプチャ1(1)msg(または一致するものがない場合は元のフィールドを保持)に置き換えられた属性を含む文字列です。実際の正規表現はこのPacket: .*?(SRC=.*LEN=[0-9]+).*部分です。これは--endシーケンスの必須部分です%...:R,...--end%。メッセージ全体をこのテンプレートに置き換えるので、最後の改行文字を追加してください。

次の行は、編集したい行と結果が配置される場所の一般的なRainerスクリプトテストです。

関連情報