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
これは廃止されました。今古代の歴史でなければなりません。 。