パン屑の轍

ボドゲとかプログラミングとかゲームとか

iptalbles LOGについてメモ

iptalbles LOGについてメモ

概要

  • カーネルロギング機能を用いてsyslogにログを出力する
  • ULOGターゲットというものも存在し、これはMySQLデータベースへのロギング等より広範囲な機能を持つ
    • 詳細はこちら 結構色々使えそうではある。
  • ログの出力先はsyslog.confで指定できる(らしい)
  • ArchLinuxのページがわかりやすい

ログ関連のオプション

Option --log-level
Example iptables -A FORWARD -p tcp -j LOG --log-level debug
Explanation iptablessyslog が用いるlog levelを指定する。
log levelについて詳細はsyslog.confを参照のこと。
通常は、debug, info, notice, warning, warn, err, error, crit, alert, emerg, panicであり、errとerror, warnとwarning, panicとemergは同じ意味だが、error, warn, panicの3つは使用すべきでない。
優先順位は、ログに記録されるメッセージの重要度を意味する。
メッセージは全てカーネル機能を通して記録される。換言すると、syslog.confに kern.=info /var/log/iptables を設定し、iptables の全 LOG メッセージのログレベルを infoにすることで、 /var/log/iptables に全メッセージを出力できます。
infoレベルを使用するカーネルの他の部分からのメッセージも、ここに出力されることに留意してください。
ロギングの詳細については、syslogとsyslog.confのmanページや他のHOWTO等を読むことをおすすめします。
Option --log-prefix
Example iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
Explanation ログメッセージにプリフィックスを付加するために使用します。プリフィックスをgrepすることで、異なるルールのメッセージを抽出することができます。プリフィックスの長さは空白文字等を含めて、29文字までです。
Option --log-tcp-sequence
Example iptables -A INPUT -p tcp -j LOG --log-tcp-sequence
Explanation ログメッセージにTCPシーケンスナンバーを付加します。TCPシーケンスナンバーはパケットを特定するための数字であり、ストリームがどのように並んでいるべきかを示します。このオプションはログが認証されていないユーザによって見られた場合、セキュリティリスクを引き起こす可能性があります。
Option --log-tcp-options
Example iptables -A FORWARD -p tcp -j LOG --log-tcp-options
Explanation TCPパケットヘッダから種々のオプションを記録します。これはデバッグに役立ちます。
Option --log-ip-options
Example iptables -A FORWARD -p tcp -j LOG --log-ip-options
Explanation --log-tcp-optionsと似ていますが、これはIPオプションを記録します。

kern.= info /path/to/logでログレベルごとにログの出力先を変えられる、ってことは

  • Well Knowポートの通信とかはinfoに設定して、/var/iptables/logに出力
  • それ以外はdebugに設定しておいて、普段は/dev/nullに、必要に応じて/var/iptables/logに出力

とかもできるんだろうか。
iptablesAWS Greengrassのようなロギングを出来るとよさげなのだけれど。
iptables以外のログが混ざるのがなかなか難しいところ。混ざらなくするためにログレベルがもっとほしい。