web-dev-qa-db-ja.com

Syslogから別のファイルへの情報のリダイレクト

Ubuntu18.04.3システムへのすべての着信TCP接続をログに記録したい。これは問題なく動作し、イントロと同じように問題ではありません。このコマンドをcrontabで使用しています。

@reboot /sbin/iptables -I INPUT -p tcp --syn -j LOG --log-prefix='[tcpconnections] '

(これはきれいな方法ではないことはわかっていますが、セキュリティの問題ではないので、この簡単な方法で問題ありません。ここでも問題はありません。)

もちろん、これはsyslogに多くのログ行を作成します。したがって、情報を別のログファイルに再ルーティングする必要があります。

/var/log/tcpconnections.log

新しいファイルを作成して、ログ情報をこの別のファイルに取り込むことができました

/etc/rsyslog.d/tcpconnections.conf

コンテンツで

if $msg contains "[tcpconnections]" then {
        /var/log/tcpconnections.log
        stop
}

その後、rsyslogサービスやシステム全体を再起動します。

ただし、ログエントリはsyslogと別のログファイルの両方に表示されます。私の知る限り、「停止」はそれが発生しないようにする必要があります。

私も成功せずに試したこと:

〜停止する代わりに、これは非推奨であることがわかりました

:msg,contains,"[tcpconnections] " /var/log/tcpconnections.log
   & ~

上記と私がこのトピックでグーグルできるもののほとんどすべての組み合わせ。

誰かが私の間違いがどこにあるかについての考えを持っていますか?これについての助けをいただければ幸いです、ありがとうございました。

1
Chris

同じ問題があり、注文の処理を忘れていました。ファイルに/etc/rsyslog.d/00_tcpconnections.confのような名前を付けて、/etc/rsyslog.d/の他のルールの前に処理されるようにする必要があります。これは私のocragentスクリプトの例です。

# copy to /etc/rsyslog.d/00_ocragent.conf
if ( $programname == "ocragent" ) then {
    action(type="omfile" file="/var/log/ocragent.log" flushOnTXEnd="on")
    stop
}
1
cbueche