Tools

ウェブサーバー(Linux) 上で特定のクライアントとの通信を記録してWindowsで内容を確認する

投稿日:2020年9月7日 更新日:

1. はじめに

以下の流れについて説明します。

  1. ウェブサーバー (Linux) 上で、特定のクライアントとの通信を記録開始する
  2. クライアント側のウェブブラウザから、1のウェブサーバーで稼働しているサイトにアクセスする
  3. ウェブサーバー上で記録を終了する
  4. ウェブサーバー上で記録したファイルを、クライアント側にダウンロードする
  5. クライアント上の Wireshark でファイルを表示する

2. ウェブサーバー上で通信の記録を開始する

ウェブサーバー(Linux) 上で、特定のクライアントとの通信内容を記録するには以下のコマンドを実行します。ウェブなので、80番ポートと443ポートを対象としています。

$ sudo tcpdump -vvv -w /tmp/dump_https.pcap tcp and host {クライアントのIP} and port 80 or 443

このコマンドを実行すると、記録が開始されます。

オプション 説明
-vvv 詳細な情報を出力します。
-w 通信データを保存するファイルパスを指定します。

3. クライアントからウェブサイトにアクセスする

まず、環境変数 SSLKEYLOGFILE にログファイルのパスをセットしておきます。このファイルには SSL/TLS通信で使用された鍵情報が保存されます。後で通信ログを見る時に、この鍵情報を使って暗号化されたデータ部分を複合することができます。

そして、Windows 10 上のウェブブラウザから 先程コマンドを実行したウェブサーバーで動いているウェブサイトにアクセスします。

ウェブブラウザは、SSLKEYLOGFILE に対応している必要があります。Chrome, ChromeベースのMicrosoft Edge, Firefox のどれかであればOKです。

4. ウェブサーバー上で記録を終了する

ウェブサーバー上で tcpdump コマンドを終了します。

5. 通信ログファイルをダウンロードする

方法は何でもよいので、サーバー上に保存された通信ログファイルを、クライアント側にダウンロードします。

例えば、WSL のターミナルであれば rsync コマンドが使えます。

$ rsync -avzP -e "ssh -p 22" foo@myserver:/tmp/dump_https.pcap ~/Downloads/ 

6. 通信ログファイルの内容を表示する

ダウンロードしたファイルを Wireshark で開いて内容を表示するのですが、Wireshark で以下の設定を行っておきます。

[編集] メニュー – [設定…] – [Protocols] – [TLS] を開き、[(Pre)-Master-Secret log filename] に、環境変数 SSLKEYLOGFILE で指定していたファイルを指定します。これにより、HTTPS で通信して暗号化されたいた通信データが複合されます。

📂-Tools

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Vim

vi (vim) の終了手順について

私の vi (vim) 終了手順について書いています。

Web

エンコード、デコード、ハッシュを行うウェブページを作成しました

入力した文字列に対して、以下の変換処理を行う ウェブページ を作成しました。 各種エンコード処理 各種デコード処理 ハッシュ化 いろいろお試しください。 🔗 エンコード/デコード/ハッシュ

Firefox

Firefox にローカルプロキシを指定して WebSocket通信を仲介する際の注意点

Firefox にローカルプロキシを指定して WebSocket通信を仲介する際の注意点について説明します。

Windows

Putty でスクリーン上のやりとりをログファイルに保存する方法

目次1. はじめに2. Putty でログをとる手順3. ログファイルが既に存在していた場合の挙動設定4. おわりに 1. はじめに PuTTY とは、Windows用のターミナルエミュレータです。 …

WSL

WSL (または WSL 2) から外付けストレージ側にアクセスできない場合の対処方法

WSL (または WSL 2) で外付けストレージ側に移動できない場合の対処方法を紹介します。