😺
SSH 経由でリモートマシンのネットワークキャプチャ
SSH 経由でリモートマシンのネットワークキャプチャ
wireshark には sshdump というツールがある。
このツールを使うことで GUI がない or GUI で操作しにくいマシンに対して ssh 経由でデータを送信して手元の windows マシンでキャプチャ結果を取得、確認することができる。
- リモートマシンと windows マシンは キャプチャの通信で ssh 通信を使用するので ssh 通信はキャプチャフィルタで除外する。
- sshdump は標準ではインストールされないので、追加インストールする必要がある。
- インストール後に追加でインストールすることもできる。
sshdump によるキャプチャの仕組み
タスクマネージャおよび pstree コマンドで確認したプロセスの引数およびプロセスの親子関係からすると以下のような仕組みと考える。
- sshdump 経由でリモートマシンで
tcpdump
を起動する。 - root権限が必要なので、
sudo tcpdump
でリモートマシンでキャプチャを行い、ssh 経由 (ssh port forwared) でダンプファイルを送信する。 - ssh 経由でダンプファイルを受け取る。
- dumppcap で sshdump を入力としてキャプチャ結果を受け取る。
- wireshark で dumppcap から結果を受け取り、ユーザーに結果を表示する。
設定手順全体の流れ
- windows 側に sshdump をインストールする。
- リモートマシンで ssh を有効にして tcpdump をインストールする。
- windows 側で wireshark から sshdump の設定を行う。
- windows 側で キャプチャを開始する。
準備 (wireshark インストール)
wireshark を起動する PC (ここでは windows を想定) のインストール時に sshdump を含めてインストールする。
Tools の +
をクリックして展開する。
Sshdump and Ciscodump
にチェックを入れる。
準備 (リモートマシン)
tcpdump をインストールしておく。
sudo apt install -y tcpdump
ssh server をインストールしておく。
sudo apt install -y openssh-server
ssh server を開始する。
sudo systemctl start ssh
ssh server を有効にする。(再起動時に自動起動させる)
sudo systemctl enable ssh
sshdump の設定
接続先のマシンの IPアドレスと SSH のポート番号を設定する。
前提
- 機器のIP : 192.168.11.15
- Port : 22
ユーザー名、パスワードを設定する。
前提
- ユーザー名 : user
- パスワード : pass
- このユーザーで sudo が可能
Linux 上で動作するコマンドを設定する。
-
Use sudo on the remote machine
にチェックをつける -
Remote capture command
にecho "pass" | sudo -S tcpdump -s 65535 -U -n -w -
のように設定する。- Linux 上で tcpdump を起動させるので sudo 経由で起動する。
-
sudo -S
で起動して sudo でパスワードを標準入力から受け取る。 - echo でパスワードをパイプで
sudo
に送る。 - パスワードは
"
で囲んでシェルに解釈されないようにする。 -
tcpdump
に-w
を渡すことで、結果をキャプチャファイルとして出力する。 -
tcpdump
に-U
を渡すことで、結果をバッファリングする。 -
tcpdump
に-
を渡すことで、標準出力にダンプ結果を送る。(ssh経由 で転送するため) -
-s 65535
は D.3. tcpdump: Capturing with “tcpdump” for viewing with Wireshark に説明があったので追加している。
Remote capture filter
でキャプチャフィルタを設定する。
ここでは ssh 通信を除外する設定にする。
キャプチャ開始
Start ボタンを押すなどして、キャプチャを開始する。
Discussion