パケットキャプチャは、選択した観測点から見えるトラフィックを記録します。プロトコルのやり取りや時間を明らかにできますが、認証情報、個人データ、無関係な利用者の通信まで収集する可能性があります。許可を得て、範囲を最小限にし、ファイルを保護し、保存方針に従ってください。
トラブルシューティング · レッスン 5
パケット解析
範囲とフィルターを限定したパケットトレースを取得し、tcpdump で安全に解析する方法を学びます。
観測点を選ぶ
問題の通信フローが実際に通るインターフェースとネットワーク名前空間でキャプチャします。ブリッジ、コンテナ、VPN、ボンド、VLAN、オフロードによって、一つのインターフェースから見える内容は変わります。キャプチャ前に ip route get と ip link で候補を特定してください。
キャプチャするインターフェースの選択が重要なのはなぜですか?
範囲を限定して通信フローを取得する
名前解決をせず、対象ホストと TCP ポートを限定して、最大 100 パケットを取得します。
$ sudo tcpdump -i enp1s0 -n -c 100 -w incident.pcap \
'host 192.0.2.25 and tcp port 443'
-i はインターフェース、-n は数値表示、-c はパケット数の上限、-w は pcap データの保存先を指定し、最後の式がキャプチャフィルターです。通信が発生しない可能性がある場合は、外部から時間制限も設定してください。
-c 100 は何をしますか?
取得したパケットを読む
保存済みファイルを変更せずに解析します。
$ tcpdump -n -tttt -r incident.pcap
プロトコルに従い、タイムスタンプ、プロトコル、送信元、宛先、フラグ、シーケンスまたは確認応答のデータ、長さを読み取ります。キャプチャのタイムスタンプが示すのはこのホストでの観測時刻であり、別の場所で実際に送信された正確な時刻とは限りません。複数システムのキャプチャを照合するには時計の同期が重要です。
保存済み pcap ファイルからパケットを読むオプションはどれですか?
パケットの不在と暗号化を解釈する
パケットを取得できない原因には、誤ったインターフェースや名前空間、キャプチャ時の損失、狭すぎるフィルター、オフロードの影響、別経路へのルーティング、実際に通信がないことなどがあります。tcpdump が報告する受信数と破棄数を確認し、既知のイベントを再現してください。
TLS などの暗号化は通常、アプリケーションペイロードを隠しますが、エンドポイント、時刻、サイズ、TCP の動作、ハンドシェイクの一部といった有用なメタデータは残ります。許可のない復号を試みたり、秘密鍵を安易に収集したりしてはいけません。
フィルター結果が空のキャプチャから、何が証明できますか?
証拠を保護して共有する
pcap は厳しい権限で保存し、コマンド、ホスト、インターフェース、タイムゾーン、フィルター、障害の時間帯を記録します。完全性が重要なら証拠のハッシュも取得します。共有前に、必要なフィールドを保持できるツールと手順でデータを最小化または匿名化してください。パケットのペイロードだけでなく、メタデータからも利用者やシステムが特定される場合があります。
障害調査の pcap は、どのように扱うべきですか?
レッスン完了
パケット解析 を完了しました
これで、不必要に広範囲または危険にせず、有用なパケットキャプチャを作成できます。
正しいインターフェースとネットワーク名前空間を選ぶ。
フィルター、パケット数、時間でキャプチャ範囲を制限する。
生パケットを保存し、ファイルを読み取り専用で解析する。
不在と暗号化ペイロードを、その限界を踏まえて解釈する。
キャプチャの機密性、完全性、来歴を保護する。