iptables
のログ出力を他のシステムログと混合したくありません。 iptables
LOGチェーン出力専用のログファイルを指定するにはどうすればよいですか?
これをどのように行うかは、使用するログデーモン、syslog
またはsyslog-ng
によって異なります。
syslogを使用すると、特定のログレベルを調整して、iptables
メッセージのみを含めることができます。
/etc/syslog.conf
:
kern.warning /var/log/iptables
そのログレベルを使用するためのセットiptables
:
iptables -A INPUT -j LOG --log-level 4
syslog-ng
を使用すると、少し凝ったものを手に入れることができるはずです。ログレベルをハッキングする代わりに、コンテンツをフィルタリングして、そのコンテンツを特定のログファイルに送信できます。
/etc/syslog-ng/syslog-ng.conf
:
destination d_iptables { file("/var/log/iptables"); };
filter f_iptables { match("IN=[A-Za-z0-9\.]* OUT=[A-Za-z0-9\.]*" value("MESSAGE")); };
log { source(s_sys); filter(f_iptables); destination(d_iptables); }
次のようなものを使用できます。
:msg,contains,"IPTABLES:" /var/log/iptables
& stop
たとえば、他のルールの前に追加する必要があります。
:msg,contains,"IPTABLES:" /var/log/iptables
& stop
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log
daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
...
IPTABLES:
をLOGターゲットに設定したものに変更するだけです。 & stop
を使用しない場合、メッセージは標準の/var/log/syslog
ファイルと/var/log/iptables
の両方のファイルに記録されます。
これは、すべてのkern.warningメッセージをリダイレクトするよりも優れたソリューションです。その場合、必要な情報だけでなく、他の情報もリダイレクトできるためです。