iptablesログ出力?

iptablesログ出力?

iptablesを使用すると、特定のパケットを記録できることがわかりました。 Linuxでは、ロギングはどこで発生しますか?どのファイルのログを確認する必要がありますか?

iptables -A INPUT -i wlan0 -p tcp --syn -s 10.0.0.1 -j ACCEPT 

答え1

あなたの質問のコマンドはiptables -A INPUT -i wlan0 -p tcp --syn -s 10.0.0.1 -j ACCEPTロギングを指定しません。ただし、各iptablesルールiptables -L -vnには一致するパケットのパケットとバイトカウンタが含まれているため、このコマンドを実行した後にルールが作成されたか、最後にリセットされた後に送信元IPアドレス10.0.0.1を介して着信トラフィックの数を実行および確認できます。 。インターフェイスに到着するSYNパケットのwlan0数(最新のエントリ)

iptables 宛先を使用する場合、一致-j LOGするパケットがカーネルログに書き込まれます。次のコマンドを使用して、最新のカーネルログメッセージを表示できますdmesg。通常、カーネルログメッセージは、Linuxディストリビューションで使用されるロギングシステムによっても記録されます。

クラシックスタイルのロギングを使用すると、通常(RHELスタイルのsyslogの設定)または(Debianスタイルのsyslogの設定)syslogでカーネルログメッセージを見ることができると予想されます。/var/log/messages/var/log/kern.log

デフォルトのロギングシステムとして使用されるsystemd-journaldディストリビューションでは、journalctl _TRANSPORT=kernel現在保存されているすべてのカーネルログメッセージを出力する必要がありますjournald

--log-prefixオプションで、withオプションを使用して最大29文字のカスタムメッセージプレフィックスを指定できますiptables ... -j LOG。ログメッセージはかなり長い行です\

<timestamp> <hostname> kernel: [optional-prefix]IN=<incoming-interface> OUT=<outgoing-interface> \ 
    MAC=<destination MAC address>:<source MAC address>:<ethertype/length> \
    SRC=<source IP address> DST=<destination IP address> LEN=<packet length> \
    TOS=<type-of-service value> PREC=<precedence value> TTL=<packet time-to-live value> \
    ID=<ID field value/fragment ID> PROTO=<protocol> <protocol-specific information...>

IN=とフィールドがOUT=あるが適用できない場合は空です。INPUTフィルタチェーンに書き込まれたパケットには指定されたIN=インターフェイスのみがあり、それぞれOUTPUTチェーンにのみありますOUT=。チェーンに書き込まれたパケットには両方のFORWARDフィールドが入力されます。

たとえば、着信 TCP SYN パケットを記録するログ行は-j LOG --log-prefix "custom-prefix:"次のとおりです。

Dec 08 12:00:00 hostname.example kernel: custom-prefix:IN=eth0 OUT= \
    MAC=11:22:33:44:55:66:aa:bb:cc:dd:ee:ff:08:00 SRC=192.0.2.2 DST=192.168.0.1 LEN=40 TOS=0x00 \
    PREC=0x00 TTL=232 ID=12345 PROTO=TCP SPT=54321 DPT=22 WINDOW=1023 RES=0x00 SYN URGP=0

iptablesログを他のカーネルログメッセージから切り離すには、ulogdバージョン2.x以降を設定してから使用できますiptables ... -j NFLOG。非常に古いカーネルではまだこのメッセージが表示されることがありますが、-j ULOGこれは廃止されました。今古代の歴史でなければなりません。 。

関連情報