編集 :数年後も引き続き賛成票を獲得しています。 iptables
を使用したこの回答に行かないでください。 私の意見では、ここがはるかに優れています。
tcpdump port 443 and '(tcp-syn|tcp-ack)!=0'
または tcp-syn
のみ 、または tcp-ack
のみ (私の推測ではそれだと思います)、必要なものによって異なります。
これには Linux カーネルの iptables サポートを使用できます。 利点は、適度に役立つために追加のソフトウェアを必要としないことです。欠点は、セットアップに root 権限が必要なことです (ただし、特権ポートであるポート 443 について話していることを考えると、ほとんどのソリューションで root 権限が必要になる可能性があります)。
次のような iptables ルールを追加します。
sudo iptables -I INPUT -p tcp --dport 443 --syn -j LOG --log-prefix "HTTPS SYN: "
(-I INPUT
を調整します 一部はお好みでどうぞ。)
ルールがトリガーされると、syslog エントリがカーネルによって発行されます。たとえば、入力ルールの場合、ログ エントリは次のようになります。
<ブロック引用>12 月 5 日 09:10:56 ホスト名カーネル:[1023963.185332] HTTPS SYN:IN=ifX OUT=MAC=80:80:80:80:80:80:80:80:80:80:80:80:08:00 SRC=A.B.C.D DST=W.X.Y.Z LEN=52 TOS=0x00 PREC=0x20 TTL=119 ID=11901 DF PROTO=TCP SPT=37287 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0
次に、ありふれたログ監視ツールを使用して、この情報で何か役立つことを行うことができます。 syslog の実装でサポートされている場合は、これらを別のログ ファイルに出力することもできます。これにより、追加のソフトウェアを使用せずに、接続データを秒のタイムスタンプ付きのファイルに書き込むという要件を効果的に満たすことができます。
LOG
に注意してください target は非終了ターゲットです。つまり、それに続くルールは引き続き評価され、パケットは LOG ルール自体によって拒否または受け入れられません。これで LOG
になります ターゲットは、ファイアウォール ルールのデバッグにも役立ちます。
ログのフラッディングを避けるために、limit
の使用を検討してください。 これに関連するモジュール。詳細については、iptables(8) のマニュアル ページを参照してください。
マイクロ秒の分解能
デフォルトでは、tcpdump ユーティリティはマイクロ秒単位の解像度で時間を報告します。例:
$ sudo tcpdump -i any port 443
次のような出力が表示されます:
<ブロック引用>
12:08:14.028945 IP localhost.33255> localhost.https:フラグ [S]、seq 1828376761、win 43690、オプション [mss 65495、sackOK、TS val 108010971 ecr 0、nop、wscale 7]、長さ 0
12:08:14.028959 IP localhost.https> localhost.33255:フラグ [R.]、seq 0、ack 1828376762、win 0、length 0
tcpdump オプションの完全なリストについては tcpdump(8) を、使用できるフィルタの完全な構文については pcap-filter(7) を参照してください。