tcpdump によるパケット監視

【目次】

tcpdump とは

tcpdumpは、Unix系オペレーティングシステムで使用されるコマンドラインベースのパケットキャプチャツールである。ネットワークインターフェース(パソコンとネットワークをつなぐ出入口にあたる装置や仮想的な機構)を通過するパケット(ネットワーク上をやり取りされるデータの小さなかたまり)をリアルタイムで取得・表示し、ネットワークのトラブルシューティングやセキュリティ監査に用いられる。

tcpdumpを使用することで、以下のことが可能になる。

注意事項

tcpdumpの実行にはroot権限(システムの管理者権限)が必要である。また、他者の通信を許可なく傍受することは法律で禁止されているため、自身が管理するネットワークおよび機器でのみ使用すること。以下の例ではコマンド行頭の # は、root権限で実行することを示す慣習的な記号である(入力する文字ではない)。

基本的な使用例

以下に、tcpdump の基本的な使用例を示す。コマンド中の -X オプションは、各パケットの内容(リンク層ヘッダーを除く)を16進数とASCII文字の両方で表示する。

例1:すべてのパケットを監視する

フィルタ(監視対象を絞り込む条件)を指定しない場合、インターフェースを通過するすべてのパケットが対象になる。

# tcpdump -X

例2:特定のホスト(localhost)に関係するパケットを監視する

-i lo0 でループバックインターフェース(自分自身への通信に使用する仮想的なネットワークインターフェース)を指定し、host localhost で対象ホストを限定する。インターフェース名 lo0 はmacOSなどのBSD系での名称であり、Linuxでは lo を指定する。

# tcpdump -X -i lo0 host localhost

例3:特定のポート(ポート22)に関係するパケットを監視する

port 22 で対象ポートを限定する。ポート22はSSH通信(暗号化された遠隔ログイン)で使用されるため、SSH接続のパケットを確認する際に有用である。

# tcpdump -X -i lo0 port 22

例4:複数条件を組み合わせてパケットを監視する

複数の条件を組み合わせる場合は、and 演算子を使用する。以下の例では、localhostかつポート22に関係するパケットのみを対象とする。

# tcpdump -X -i lo0 host localhost and port 22
関連資料: ユーザ認証の盗聴