はじめに
この実験(Lab)では、強力なネットワークプロトコルアナライザである Wireshark のインストールと設定方法を学びます。Wireshark を使用すると、ネットワークトラフィックをリアルタイムで検査でき、ネットワークのトラブルシューティングやセキュリティ調査に不可欠です。
この実験(Lab)を終えるまでに、システム上のネットワークパケットをキャプチャして分析できるようになり、この不可欠なツールを実際に体験できます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験(Lab)では、強力なネットワークプロトコルアナライザである Wireshark のインストールと設定方法を学びます。Wireshark を使用すると、ネットワークトラフィックをリアルタイムで検査でき、ネットワークのトラブルシューティングやセキュリティ調査に不可欠です。
この実験(Lab)を終えるまでに、システム上のネットワークパケットをキャプチャして分析できるようになり、この不可欠なツールを実際に体験できます。
このステップでは、Ubuntu システムに Wireshark をインストールします。Wireshark は、ネットワークトラフィックをキャプチャして分析できる強力なネットワークプロトコルアナライザです。ネットワークセキュリティとトラフィック分析に関心のある人にとって不可欠なツールです。幸いなことに、Wireshark は Ubuntu のリポジトリで利用できます。つまり、Ubuntu が提供するパッケージ管理システムを使用して簡単にインストールできます。
まず、パッケージリポジトリの情報を更新しましょう。パッケージリポジトリは、Ubuntu システムで利用可能なすべてのソフトウェアのカタログのようなものです。更新することで、最新のソフトウェアバージョンにアクセスできるようになります。これを行うには、ターミナルを開く必要があります。タスクバーのターミナルアイコンをクリックするか、Ctrl+Alt+T
を押してターミナルを開くことができます。ターミナルが開いたら、次のコマンドを入力します。
sudo apt update
sudo
コマンドは、管理者権限でコマンドを実行するために使用されます。apt
は Ubuntu のパッケージ管理ツールであり、update
はパッケージリポジトリの情報を更新するコマンドです。このコマンドを実行すると、次のような出力が表示されます。
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,234 kB]
...
Reading package lists... Done
この出力は、システムがリポジトリから利用可能なパッケージに関する最新情報を取得していることを示しています。
パッケージリポジトリが更新されたので、apt
パッケージマネージャーを使用して Wireshark をインストールできます。ターミナルで次のコマンドを実行します。
sudo apt install wireshark -y
install
コマンドは、apt
に指定されたパッケージ(この場合は wireshark
)をインストールするように指示します。-y
オプションは、インストールプロセス中にすべてのプロンプトに自動的に「yes」と答えるために使用されます。
インストールプロセス中に、スーパーユーザー以外のユーザーにパケットのキャプチャを許可するかどうかを尋ねる構成ダイアログが表示されます。スーパーユーザー以外のユーザーにパケットのキャプチャを許可すると、常に管理者権限を使用せずに Wireshark を実行する場合に便利です。矢印キーを使用して「Yes」(または y
を押す)を選択し、Enter キーを押して選択を確定します。
注: このプロンプトを見逃した場合、または後でこの設定を変更する必要がある場合は、次のコマンドを使用して Wireshark を再構成できます。
sudo dpkg-reconfigure wireshark-common
dpkg-reconfigure
コマンドは、すでにインストールされているパッケージを再構成するために使用されます。
インストールが完了すると、インストールが成功したことを示す出力が表示されます。Wireshark が正しくインストールされたことを確認するために、そのバージョンを確認できます。ターミナルで次のコマンドを実行します。
wireshark --version
このコマンドは、Wireshark にバージョン情報を表示するように指示します。次のような出力が表示されます。
Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)
Copyright 1998-2022 Gerald Combs <[email protected]> and contributors.
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiled (64-bit) with Qt 5.15.3, with libpcap, with GLib 2.72.0, with zlib 1.2.11,
with SMI 0.4.8, with c-ares 1.18.1, with Lua 5.2.4, with GnuTLS 3.7.3 and PKCS #11
support, with Gcrypt 1.9.4, with MIT Kerberos, with MaxMind DB resolver,
with nghttp2 1.43.0, with brotli, with LZ4, with Zstandard, with Snappy,
with libxml2 2.9.13, with libssh 0.9.6, with NGHTTP3 0.7.0, with NGTCP2 0.8.0.
素晴らしい!Wireshark がシステムにインストールされました。
このステップでは、Wireshark がネットワークパケットをキャプチャするために必要な権限を設定します。初心者の方は、なぜこれを行う必要があるのか疑問に思うかもしれません。デフォルトでは、パケットキャプチャには root 権限が必要です。これは、ネットワークパケットのキャプチャが機密情報を漏洩させる可能性があるため、セキュリティ対策として行われています。ただし、Wireshark を root として実行することは、セキュリティの観点からは良い考えではありません。Wireshark に脆弱性がある場合、攻撃者が root として実行されている Wireshark を利用してシステム全体へのアクセス権を取得する可能性があります。そのため、通常のユーザーアカウントが安全にパケットをキャプチャできるように Wireshark を設定します。
まず、システムに wireshark
グループが存在するかどうかを確認する必要があります。wireshark
グループは、パケットキャプチャの権限を管理するために使用する特別なグループです。このグループが存在するかどうかを確認するには、getent
コマンドを使用します。getent
は、さまざまなシステムデータベース(この場合はグループデータベースなど)からエントリを取得するユーティリティです。ターミナルで次のコマンドを実行します。
getent group wireshark
何も出力されない場合は、グループがまだ存在しないことを意味し、作成する必要があります。groupadd
コマンドを使用して wireshark
グループを作成します。groupadd
コマンドは、システムに新しいグループを作成するために使用されます。次のコマンドを実行します。
sudo groupadd wireshark
sudo
コマンドは、管理者権限で groupadd
コマンドを実行するために使用されます。最近 sudo
を使用していない場合は、パスワードの入力を求められます。
次に、パケットキャプチャバイナリ(dumpcap
)に正しい権限を与える必要があります。dumpcap
は、Wireshark のために実際にパケットをキャプチャするコンポーネントです。dumpcap
バイナリのグループ所有権を wireshark
グループに変更します。これにより、dumpcap
バイナリが wireshark
グループに関連付けられ、このグループを通じてその権限を管理できます。次のコマンドを実行します。
sudo chgrp wireshark /usr/bin/dumpcap
chgrp
コマンドは、ファイルまたはディレクトリのグループ所有権を変更するために使用されます。この場合、/usr/bin/dumpcap
バイナリのグループ所有権を wireshark
グループに変更しています。
グループ所有権を変更した後、dumpcap
バイナリに必要な権限を設定します。chmod
コマンドを使用して権限を設定します。chmod
コマンドは、ファイルまたはディレクトリの権限を変更するために使用されます。次のコマンドを実行します。
sudo chmod 4755 /usr/bin/dumpcap
このコマンドは、バイナリに setuid ビットを設定します。setuid ビットを使用すると、バイナリを実行しているユーザーに関係なく、所有者(root)の権限で実行できます。4755
権限は、次のように分解できます。
4
- setuid ビットを設定します。これは、バイナリが実行されるときに、所有者(root)の権限で実行されることを意味します。7
- 所有者(root)は、読み取り、書き込み、および実行の権限を持っています。これにより、所有者はバイナリを読み取り、変更し、実行できます。5
- グループは、読み取りおよび実行の権限を持っています。これにより、wireshark
グループのメンバーはバイナリを読み取り、実行できます。5
- その他は、読み取りおよび実行の権限を持っています。これにより、システムの他のユーザーはバイナリを読み取り、実行できます。最後に、現在のユーザーを wireshark
グループに追加する必要があります。ユーザーを wireshark
グループに追加することで、ユーザーは dumpcap
バイナリを使用するために必要な権限を持つことになります。gpasswd
コマンドを使用して、ユーザーをグループに追加します。gpasswd
コマンドは、/etc/group および /etc/gshadow ファイルを管理するために使用されます。次のコマンドを実行します。
sudo gpasswd -a $USER wireshark
$USER
変数は、現在のユーザーのユーザー名を含むシェル変数です。ユーザーがグループに追加されたことを示す出力が表示されるはずです。
Adding user labex to group wireshark
これらの変更を有効にするには、ログアウトして再度ログインするか、システムを再起動する必要があります。ただし、この実験(Lab)では、更新されたグループメンバーシップで新しいシェルを起動するという、より簡単なアプローチを使用できます。newgrp
コマンドを使用して、wireshark
グループがアクティブな新しいシェルを起動します。newgrp
コマンドは、現在のグループ ID を変更するために使用されます。次のコマンドを実行します。
newgrp wireshark
このコマンドは、完全にログアウトすることなく、wireshark
グループがアクティブな新しいシェルを起動します。
ユーザーが wireshark
グループの一員になったことを確認しましょう。groups
コマンドを使用して、ユーザーが所属するすべてのグループを一覧表示します。次のコマンドを実行します。
groups
wireshark
がグループの中にリストされているはずです。
wireshark sudo ssl-cert labex public
ユーザーが wireshark
グループの一員になり、dumpcap
バイナリに正しい権限が付与されたので、Wireshark は root 権限を必要とせずにパケットをキャプチャできるようになります。
このステップでは、Wireshark を起動し、その初期インターフェースについて学びます。Wireshark はネットワークトラフィック分析のための強力なツールであり、グラフィカルユーザーインターフェース(GUI)が付属しています。この GUI を使用して、ソフトウェアを操作し、ネットワークトラフィックを分析します。
まず、LabEx VM のデスクトップ環境にいることを確認する必要があります。正しい場所にいると、画面の上部または下部にアイコンとタスクバーが表示されたデスクトップが表示されます。ここが、Wireshark を使用した作業を開始する出発点です。
Wireshark を起動するには、2 つの方法があります。最も便利な方法を選択できます。
画面の左上隅にあることが多い [アプリケーション] メニューをクリックします。次に、メニューをナビゲートして、[インターネット] または [ネットワーク] カテゴリを見つけます。適切なカテゴリに入ったら、「Wireshark」を探して選択します。これは、グラフィカルインターフェースを使用してプログラムを起動する簡単な方法です。
または、ターミナルを使用することもできます。ターミナルウィンドウを開き、次のコマンドを入力します。
wireshark
このコマンドは、システムに Wireshark アプリケーションを起動するように指示します。このコマンドを実行すると、Wireshark が起動し、そのメインウィンドウが画面に表示されます。最初に表示されるのは、「Wireshark へようこそ」画面です。この画面には、ネットワークトラフィックのキャプチャに使用できる利用可能なネットワークインターフェースのリストが表示されます。また、以前に Wireshark を使用したことがあり、いくつかのファイルが保存されている場合は、最近開いたキャプチャファイルも表示されます。
ウェルカム画面には、いくつかの重要なオプションがあります。
少し時間を取って、この初期画面を調べてください。各ネットワークインターフェースには、検出されたパケットに関するいくつかの統計情報があることに気付くでしょう。これらの統計情報は、どのインターフェースがネットワークトラフィックをアクティブに通過させているかをすばやく把握するのに役立ちます。
次に、Wireshark の主なインターフェース要素を見てみましょう。
今のところ、Wireshark を実行したままにしておきます。次のステップでは、それを使用してネットワークトラフィックをキャプチャして分析します。
このステップでは、ネットワークトラフィックをキャプチャし、Wireshark のインターフェースについて学びます。ネットワークパケットの分析方法を理解することは、ネットワークセキュリティやトラブルシューティングに関心のある人にとって非常に重要です。このセクションを終えるまでに、キャプチャの開始方法、Wireshark のインターフェースの理解、トラフィックの生成、パケットのフィルタリング、パケットの詳細の検査、およびキャプチャの停止方法を習得します。
Wireshark を開くと、ウェルカム画面が表示されます。この画面で、トラフィックをキャプチャするネットワークインターフェースを見つけることが目標です。ほとんどの場合、eth0
インターフェースを使用します。eth0
が利用できない場合は、別のアクティブなインターフェース(例:eth1
または wlan0
)を選択できます。
パケットのキャプチャを開始するには、eth0
インターフェースをダブルクリックするだけです。この操作により、そのインターフェースでのパケットのキャプチャが直ちに開始され、Wireshark のメインキャプチャウィンドウが表示されます。
または、最初にインターフェースを選択し、ツールバーにある青いサメのヒレのアイコンで表される「Start capturing packets(パケットのキャプチャを開始)」ボタンをクリックすることもできます。キャプチャの開始は、ネットワークトラフィックの分析における最初のステップであり、選択したインターフェースを流れるデータを Wireshark が収集できるようになります。
パケットキャプチャが開始されると、Wireshark のメインインターフェースが表示されます。このインターフェースは 3 つのメインペインに分かれており、それぞれ異なる目的を果たします。
Packet List Pane(パケットリストペイン)(上部): このペインには、Wireshark がキャプチャしたすべてのパケットのリストが表示されます。リスト内の各エントリには、パケットに関する基本的な情報が記載されています。
Packet Details Pane(パケット詳細ペイン)(中央): 上部のペインでパケットを選択すると、この領域には、選択したパケットに関する詳細情報が階層形式で表示されます。各セクションの横にある矢印をクリックして展開すると、パケットの構造とコンテンツに関するより詳細な情報を確認できます。
Packet Bytes Pane(パケットバイトペイン)(下部): このペインには、16 進形式と ASCII 形式の両方で生のパケットデータが表示されます。Packet Details(パケット詳細)ペインで異なるフィールドを選択すると、対応するバイトがこのペインで強調表示されます。これにより、パケットで送信されている実際のデータを確認できます。
分析する意味のあるものを用意するために、ネットワークトラフィックを生成する必要があります。Wireshark の実行中に、新しいターミナルウィンドウを開きます。ターミナルで、ping
コマンドを使用して、Google のサーバーにいくつかの ICMP エコー要求パケットを送信します。
次のコマンドを実行します。
ping -c 5 google.com
Note: Free users can not connect to the internet. Upgrade to a pro to enjoy the full experience.
-c 5
オプションは、ping
コマンドに 5 つの ICMP エコー要求パケットを送信するように指示します。このコマンドを実行すると、次のような出力が表示されます。
PING google.com (142.250.180.238) 56(84) bytes of data.
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=1 ttl=118 time=15.6 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=2 ttl=118 time=16.5 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=3 ttl=118 time=15.9 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=4 ttl=118 time=16.2 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=5 ttl=118 time=15.7 ms
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 15.629/15.986/16.520/0.324 ms
次に、Wireshark に戻ります。ping
コマンドの実行中にキャプチャされた ICMP パケットが表示されます。これらのパケットは、今後の分析に使用します。
キャプチャされたパケットの分析が完了したら、キャプチャを停止する必要があります。これを行うには、ツールバーにある赤い四角で表される「Stop capturing packets(パケットのキャプチャを停止)」ボタンをクリックします。または、「Capture(キャプチャ)」メニューに移動して「Stop(停止)」を選択することもできます。
これで、Wireshark を使用して基本的なネットワークトラフィックを正常にキャプチャして分析できました。これは、ネットワーク分析とセキュリティにおける基本的なスキルであり、この知識を基に、より複雑なネットワークシナリオを分析できます。
Wireshark は、選択したインターフェース上のすべてのトラフィックをキャプチャするため、すぐに大量のデータになり、管理が難しくなる可能性があります。フィルタは、Wireshark の強力なツールであり、特定の種類のトラフィックに焦点を当てることができます。
先ほど生成した ICMP ping パケットをフィルタリングするには、Wireshark ウィンドウの上部を見てください。フィルタ式を入力できるフィルタバーがあります。フィルタバーに次のように入力します。
icmp
フィルタ式を入力したら、Enter キーを押すか、フィルタフィールドの横にある Apply(適用)ボタン(右矢印アイコン)をクリックします。パケットリストが更新され、ICMP パケットのみが表示されます。以前に実行した ping
コマンドに対応する「Echo (ping) request(エコー(ping)要求)」メッセージと「Echo (ping) reply(エコー(ping)応答)」メッセージのペアが表示されます。フィルタリングは、関心のあるトラフィックを分離し、分析プロセスをより管理しやすくするのに役立ちます。
ICMP パケットをフィルタリングしたので、ICMP 要求パケットの 1 つを詳しく見てみましょう。パケットリストで ICMP 要求パケットの 1 つをクリックします。Packet Details(パケット詳細)ペインで、各セクションの横にある矢印をクリックして、さまざまなプロトコルレイヤーを展開できます。
この実験 (Lab) では、強力なネットワーク分析ツールである Wireshark のインストールとセットアップの方法を学びました。非 root ユーザーが安全にパケットをキャプチャできるように権限を設定し、アプリケーションを起動し、実際のネットワークトラフィックをキャプチャしました。また、インターフェースを調べ、特定のトラフィックタイプにフィルターを適用し、さまざまなプロトコルレイヤーにわたるパケットの詳細を調べました。
これらのスキルは、ネットワーク分析とトラブルシューティングのための確固たる基盤となります。Wireshark を使用すると、ネットワーク通信の検査、接続の問題の診断、プロトコルの動作の分析、およびネットワークトラフィックにおけるセキュリティ上の懸念事項の特定を行うことができます。