リアルタイムでトラフィックを表示するWireshark

時々、Linuxサーバーにアクセスして、現在のトラフィックをリアルタイムで表示できるようにする必要がありました。 その前にどうしましたか? Tcpdumpはターゲットサーバーにインストールされ、その排気はファイルに書き込まれました。 次に、scpを介してファイルがWindowsのローカルコンピューターに到達し、Wiresharkで開かれました。



ある時点で、より便利なソリューションが必要であり、インターネット上のサーバーで(リモートで)tcpdumpとともにWindowsで(ローカルに)Wiresharkを実行する機会を見つけ、この実装を少し提出して、それをあなたと共有することにしました。



作業束(私がチェックした)は、次のもので構成されています。



tcpdump: version 4.9.2 wireshark: version 2.4.4 (v2.4.4-0-g90a7be11a4) plink: release 0.67 Windows 7 64 Bit 
      
      





私には、これらのプログラムはほとんどのバージョンで現在と同じように動作するようですが、動作する構成について言及する価値があると思います。



Windowsを使用して、サーバーとデスクトップに必要なソフトウェアと設定をインストールします。



Linux(私はdebianを持っています)



 #    apt-get install sudo tcpdump -y #           SSH adduser trafficmonitor #    su trafficmonitor #   ssh-keygen (        .ssh) ssh-keygen #          scp/winscp mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys #      chmod 755 ~/.ssh && chmod 644 ~/.ssh/authorized_keys #   sudoers... nano /etc/sudoers # ...   trafficmonitor    sudo  : trafficmonitor ALL=NOPASSWD: /usr/sbin/tcpdump trafficmonitor ALL=NOPASSWD: /sbin/ip addr show #  ssh (  ,             ,              ) service ssh restart
      
      





これで、Linux側が完了しました。





さらにWindowsの場合、 パテをインストールする必要があります(また、必ずplinkが必要です)。また、 wireshark自体もインストールする必要があります。



オープンパテ







新しいtrafficmonitorセッションを作成し、ホスト名を空白のままにします







認証設定に入り、以前に拡張されたキーを追加します(puttygenを通過することを忘れないでください。







メインウィンドウでセッションを保存します。



承認を使用してsocks5プロキシを介してこの機能を構成する必要もあったことを明確にしたいので、その方法を示しますが、このために別のセッションが必要ですputty( trafficmonitor_via_proxy ):







キーも処方します







そして、プロキシを構成します(私の場合、タイプ、IPポート、ユーザー名パスワード)







保存します。



実際、Puttyは準備ができていますが、そこからplinkのためにこれらの保存されたセッションをプルします。



cmd次第です。



 @echo off :: ip/hostname  linux- set /P ip="Input IP or hostname: " :: TCP-   SSH set /P port="Input SSH port(default 22): " IF "%port%"=="" ( SET port=22 echo "SSH port is TCP/22..." ) ELSE (echo "SSH port is TCP/%port%...") ::       SSH ,    ,        set /P ssh="Show SSH traffic?(y/N): " IF "%ssh%"=="y" (echo "SSH will be showed...") ELSE ( SET visible_ssh='not port 22' echo "SSH won't be showed..." ) ::        socks5 set /p socks="Use SOCKS5?(y/N): " IF "%socks%"=="y" ( echo "SOCKS5 will be used..." SET params=-load trafficmonitor_via_proxy ) ELSE ( echo "Direct connection will be used..." SET params=-load trafficmonitor ) ::     ,       (         ) plink %params% trafficmonitor@%ip% -P %port% "sudo ip addr show" @echo. set /P int="Select interface(eth0,lo...) " ::   wireshark   pipe  tcpdump      plink %params% trafficmonitor@%ip% -P %port% "sudo tcpdump -i %int% -U -s0 -w - %visible_ssh%" | "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
      
      





おわりに



これで、このcmdを実行した後、不要な赤テープなしで、サーバー上のトラフィックを直接監視できます。 便宜上、cmdファイルを調整して、パテ設定から既存のセッションを取得することもできます。



たとえば、このスクリプトの動作は次のようになります。



1.質問に答えます







2.インターフェイスを選択します











3.お楽しみください







Wiresharkのフローはフィルタリングできますが、停止することはできません。再開できません。 そのため、関心のあるトラフィックをpcapファイルに保存することも便利です。

それだけです。ありがとうございます。



UPD1。 サーバーが複数ある場合、各手順では、trafficmonitorユーザーを追加し、以前の公開キーid_rsa.pub(authorized_keys)をホームディレクトリに〜/ .ssh /パスに沿って配置する必要があります。 また、sudoersのエントリの可用性にも注意してください



All Articles