このガイドでは、Linuxでネットワークパケットを分析する方法を紹介します。 ToolsTcpdumpとWiresharkを使用します。このチュートリアルではOSとしてUbuntuを使用していますが、他のLinuxディストリビューションにも適用できます。
なぜTcpdumpが必要なのですか?
頭に浮かぶかもしれない明らかな質問は、Wiresharkでほとんどすべてを実行できるのに、なぜTcpdumpを気にするのかということです。これに対する答えは次のとおりです。Wiresharkと比較して、パケットキャプチャにTcpdumpを使用する方が便利な場合があります。たとえば、パケットをキャプチャしているターゲットマシンが、Wiresharkがインストールされていないリモートマシンである場合、またはリモートヘッドレスマシンである場合、どちらの場合も、Tcpdumpは非常に便利です。 Tcpdumpで使用できるさまざまなオプションを確認するには、マニュアルページを検索してください。
Tcpdumpとは何ですか?
Tcpdumpは、Wiresharkのコマンドライン代替手段です。これは、トラフィックをキャプチャして分析するWiresharkと同じ目的を果たします。 Tcpdumpは別のアプリケーションであり、Wiresharkコマンドラインインターフェイスと見なすべきではありません。コマンドラインインターフェイスに基づいているため、Wiresharkほど簡単に処理することはできません。新規ユーザーは、使い始めたときに最初は気が遠くなるかもしれませんし、覚えにくいコマンドや構文をたくさん見つけることができます。
このチュートリアルの概要
このガイドの主な目的に移りましょう。このガイドでは、TcpdumpをWiresharkと対話する方法を説明します。ここでは、このガイドで行う作業を指摘します:
- SSHを使用したリモートマシン(ホスト2)との接続。
- Tcpdumpを使用してトラフィックをキャプチャし、キャプチャを保存します。
- Wiresharkがインストールされているオンサイトマシン(ホスト1)にキャプチャファイルを送信します。
- キャプチャされたTcpdumpセッションを分析するためのWiresharkの使用。
飛行前チェック
このチュートリアルでは、2台のUbuntu20.04マシンを使用しています。自分で設定する必要があります。 IP構成は次のとおりです。
ホスト1(オンサイトマシン):192.168.186.150
ホスト2(リモートマシン):192.168.186.201
このガイドに記載されている手順は、次の要件が満たされているすべてのLinuxシステムで機能することを前提としています。
- WiresharkがインストールされSSHが構成されたオンサイトホスト(ホスト1)。
- オンサイトホスト(ホスト1)からリモートホスト(ホスト2)へのSSHアクセス。
- リモートホスト(ホスト2)で構成されたTcpdumpとSSH。
- Tcpdumpを実行するためのホスト2およびホスト1の「sudo」ユーザーアカウント(Wiresharkの構成方法によって異なります)。
始めましょう…
さらに先に進むには、SSHアクセスプロトコルを使用して、オンサイトマシン(ホスト1)からリモートマシン(ホスト2)に接続します。 2台のマシン間にSSH接続をすでに設定しています。したがって、ホスト1端末から以下のコマンドを使用してホスト2に接続します。
$ ssh‘user_name’ @’IP_of_Host2’
ここで、「user_name」を接続先のホスト2のユーザー名に置き換え、「IP_of_Host2」はホスト2のIPアドレスです。以下の図を参照してください。
>
次に、Tcpdumpがキャプチャできるリモートマシンで使用可能なインターフェイスを確認します。これには、次のコマンドを使用します:
$ tcpdump --list-interfaces
出力例:
1.enp0s3 [Up、Running]
2.lo [Up、Running、Loopback]
3.any(すべてのインターフェースでキャプチャする疑似デバイス)[Up、Running]
4。 eno1 [Up]
5.bluetooth-monitor(Bluetooth Linux Monitor)[none]
6.nflog(Linux netfilter log(NFLOG)interface)[none]
7.nfqueue(Linux netfilterキュー(NFQUEUE)インターフェース)[なし]
8.bluetooth0(Bluetoothアダプター番号0)[なし]
ご覧のとおり、インターフェース「enpos3」が稼働しています。それでは、それをターゲットインターフェイスとして設定し、ここでtcpdumpコマンドを実行してみましょう。十分なパケットをキャプチャしたと感じたら、「Ctrl+c」を押してパケットキャプチャを終了します。コマンドは次のとおりです。
$ sudo tcpdump -s 65535 -i enp0s3 -w my_remote_capture.pcap
上記のコマンドでは、Tcpdumpで次のオプションを使用しています。
- -s:古いバージョンのTcpdumpカットオフパケットは68バイトまたは96バイトです。 「-s」オプションは、完全な長さのパケットをキャプチャするために使用されます。
- -i:リッスンするインターフェースを選択します。
- -w:キャプチャされた生のパケットを端末に表示するのではなく、ファイルに保存します。
キャプチャされたトラフィックは、「my_remote_capture.pcap」という名前のファイルに保存されます。次に、Wiresharkで分析するために、このファイルをホスト1に転送します。ファイルの転送には、「scp」コマンドを使用しています。ここでも、2台のマシン間で動作するように「scp」を構成しました。コマンド構文は次のとおりです。
$ scp my_remote_capture.pcap'ユーザー名'@'IP_of_remote_machine':
ここで、「username」はホスト1のユーザーの名前であり、「IP_of_remote_machine」はホスト1のIPでもあります。
オンサイトマシン(ホスト1)で、ファイルを受信したかどうかを確認します。この例では、ファイルを正常に受信し、以下に示すようにWiresharkを使用してファイルを開きます。
これがホスト1からのキャプチャファイルのスクリーンショットです:
キャプチャファイルの分析
上記のファイルに表示フィルターを適用してみましょう。 SSHを使用してホスト2に接続したため、SSHプロトコルの痕跡がいくつかあるはずです。表示フィルターに対応するテキストフィールドに「ssh」と入力します:
上の画像では、「SSH」プロトコルのパケットのみを確認できます。
まとめ…
おめでとうございます。ついに、マシンでリモートキャプチャを実行する方法を示しました。 TcpdumpをWiresharkと組み合わせる方法を見てきました。