[iptables] ログを出力する LOGターゲット

スポンサーリンク

——————————————————–
iptables ****条件**** -j LOG
——————————————————–

LOG」は、条件に合致するパケット情報をログ出力します。
条件に合致したログはdmesgコマンドで確認できるほか、syslogd経由で希望のファイルに保存することも出来ます。

LOG」で処理されたパケットは次のルールに引き継がれますので、拒否(DROP or REJECT)する接続状況を
ログとして出力したい場合は、はじめにログを出力する設定を行い、続いて拒否(DROP or REJECT)する設定
行なってください。

以下 man iptables より

LOG
Turn on kernel logging of matching packets.  When this option is set for a rule,
the Linux kernel will print some information on all matching packets (like most IP header fields)
via the kernel log (where it can be read with dmesg or syslogd(8)).  This is a "non-terminating target",
i.e. rule traversal continues at the next rule.  So if you want to LOG the packets you refuse,
use two separate rules with the same matching criteria, first using target LOG then DROP (or REJECT).

以下の例は、

・IPアドレス「xxx.ee.rr.ssからWebサーバー(80番ポート)のアクセスをログ出力
IPアドレス「xxx.ee.rr.ss」からWebサーバー(80番ポート)へのアクセスを拒否(破棄)

する設定です。

iptables -A INPUT -p tcp --dport 80 -s xxx.ee.rr.ss -j LOG
iptables -A INPUT -p tcp --dport 80 -s xxx.ee.rr.ss -j DROP

どこにログは出力されるのか

iptablesは、syslogdにログを渡す際に「このログはkernel logですよ」という情報を“ファシリティ”として渡します。

ファシリティとはsyslogdにログの出力元を識別する為のマークのようなもののことで、kernel log のファシリティは「kern」です。したがって、iptablesがsyslogdにログを渡すときには、このログはファシリティ「kern」のログですよという情報を渡していることになります。ファシリティ「kern」のログをsyslogdがどこに出力するのかはsyslogdの設定ファイル/etc/syslog.confから確認します。

実際にファシリティが「kern」のもの、またはファシリティが「*」のものがないか/etc/syslog.confから確認しましょう

# egrep '^kern|^*' /etc/syslog.conf
kern.*                                                  /var/log/boot.log
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
*.emerg                                                 *
#

これを見ると、kern.ファシリティは/var/log/boot.logに出力されることがわかります。

つまりは、この設定のままiptablesで「-j LOG」を使用すると、/var/log/boot.logに出力されます。
この設定を変更することも出来ますので、詳細はsyslog.confのマニュアルをご覧ください。

また、「LOG」には以下のオプションが存在します。

--log-levellevel  syslogdに渡すファシリティのプライオリティを指定できます(例: -j LOG --log-level info)

--log-prefixprefix  ログ出力時に決まったプレフィックスを付与します(例: -j LOG --log-prefix IPTABLES)

--log-tcp-sequence
  TCPシーケンスナンバーをログ出力します。

--log-tcp-options
  TCPパケットのヘッダから確認できるオプションを出力します。

--log-ip-options 
  IPパケットヘッダにあるオプションを出力します。

 

以上

コメント

  1. そこらへん より:

    検索で目に付いたのでやってきましたよ。初心者には一番分かりやすい記事でした。

  2. trippyboy より:

    そこらへんさん
    コメントありがとうございます!(^^)
    お役に立てたようでよかったです!

タイトルとURLをコピーしました