Tcp Dumpツール
| tcpdumpとは、 tcpdump は真偽値の条件式に一致するネットワークインターフェース上のヘッダを表示するもの。単純にオプション無しで実行しても大量の通信内容が表示されるだけだ。tcpdump を上手く使うには、条件式をうまく使う必要があります。ネットワーク上を流れるパケットで、TCP、UDP、IP、ICMPなどの各種プロトコルに対応していますので、localhost のどのポートからどのホストのどのポートへ接続が行われたか、そのパケット内容等の詳細なデータを取ることができます。 |
|
オプション
|
説明
|
|
-F (file)
|
条件式を file から読み込む。 |
|
-i
|
モニタリングするインタフェースを指定。-i ed0 や -i ppp -i loなど。 |
|
-n
|
アドレスを名前に変換しない。これは IP アドレスだけでなく、ポート番号なども数字のまま出力する。大量のパケットを表示しようとする時、名前の変換は予想以上に出力を遅くするので普段から -n オプションをつけるようにしている。特に LAN で使用しているプライベート IP アドレスがホスト名に変換できずに極端に出力が遅くなるのを防ぐ事が出来る。 |
|
-i (interface)
|
複数のインターフェースを使用している場合に指定する。 |
|
-w (file)
|
ネットワークに流れるパケットをそのままファイルに保存する。 |
|
-r (file)
|
これは前もって -w オプションなどで作成したファイルからパケットを読み込む。 |
|
-s
|
パケットから取り出すデータの長さ。-s 1600 なら1600バイト |
|
-x
|
パケットの中身を 16 進数で表示する。 |
|
-X
|
パケットの中身を ASCII で表示する。これは大抵 16 進数も同時に表示する。暗号化されていない通信ならば、このオプションでほぼ全ての内容が見れる。 |
| 詳しくはman tcpdumpでお調べください。 | |
| tcpdumpの使い方 |
| 1.プロトコルの解析 プロトコルの解析は、リアルタイムで監視したいので、ネットワークの流れだけでなく、その内容も見たいと思います。そのようなときは -X オプションでパケットの中身を表示する。あとは見たいポート番号などを指定する。 |
| 2.ネットワークの使用状況の監視 ネットワークの使用状況の監視は、24時間モニタにへばりついているわけにもいかないので -w オプションでファイルに保存して、チェックしたい時にそのファイルを -r オプションで調べれば良い。この方法ならばパケットがそのまま保存されるので必要があれば通信内容も見る事が出来きます。 |
| 3.ファイアウォールのテスト ファイアウォールのテストはNAT などの変換が上手くいっているか、破棄すべきパケットが破棄されているかなどを調べることを指しています。このような時にLAN とWANの間二枚のインターフェースカードを持っているはずなので、コンソールを二つ開き、片方をインタフェース1の監視、もう一方をインタフェース2の監視という具合にして外と中の通信状況を監視する。 |
| 4.盗聴 ネットワークの使用状況の監視と同じです。例えば一日分のデータを -w オプションで記録しておき、後日そのファイルの中からいくつかのポートをゆっくり見ていけばパスワードなどの情報が手に入ります。これが telnet などの非暗号化通信が良く無いとされる理由です。 |
|
条件
|
|
| IP アドレス/ホスト | 192.168.1.1 |
| ネットワークアドレス | 192.168.1.0/24または255.255.255.0 |
| ポート番号 | 23 54 80 110 |
| プロトコル | tcp udp icmp |
| 通信方向 | src dst |
|
論理条件
|
|
| 否定 | ! または not |
| 結合 | && または and |
| 択一 | || または or |
| 例をいくつか紹介しますがtcpdumpツールを実行しますと以下のように流れてくるパケットが表示されます。 09:51:42.562095 localhost.miteksys-lm > localhost.echo: P 1:7(6) ack 1 win 57344 (DF) [tos 0x10] 4510 0042 5c5a 4000 4006 e049 7f00 0001 7f00 0001 05ca 0007 0248 8030 0249 a535 a018 e000 85de 0000 0101 080a 0001 5ffd 0001 5fea 0101 0b06 0000 0229 7465 7374 0d0a 09:51:42.562533 localhost.echo > localhost.miteksys-lm: P 1:23(22) ack 7 win 57344 (DF) 4500 0052 5c5b 4000 4006 e048 7f00 0001 7f00 0001 0007 05ca 0249 a535 0248 8036 a018 e000 b4ad 0000 0101 080a 0001 5ffd 0001 5ffd 0101 0b06 0000 022a 6f72 6967 696e 616c 2065 6368 6f64 3a20 7465 7374 0d0a 09:51:42.568522 localhost.miteksys-lm > localhost.echo: . ack 23 win 57322 (DF) [tos 0x10] 4510 003c 5c5c 4000 4006 e04d 7f00 0001 7f00 0001 05ca 0007 0248 8036 0249 a54b a010 dfea 7ab7 0000 0101 080a 0001 5ffd 0001 5ffd 0101 0b06 0000 0229 |
| # tcpdump -nX host 192.168.1.1 and port 54 この例では、方向を気にせず192.168.1.1の通信を監視する。 |
| # tcpdump -nX dst host 192.168.1.1 and dst port 80 192.168.1.1 の 80番ポートに入ってくる通信を監視している |
| # tcpdump -nX tcp and src and dst net 192.168.1.0/24 192.168.1.0から192.168.1.255までのLAN内の通信を監視しています。 |
| # tcpdump -nX src net not 192.168.1.0/24 and dst net 192.168.1.0/24 192.168.1.0から192.168.1.255までの入ってくるパケットを監視しています。 |
| # tcpdump -nX udp udpのパケットを監視しています。 |
| *hostとnetの違いは、hostは単一でnetはいくつかのアドレスが指定できる。 |
| *tcpdump は、使い方次第では非常に危険なツールになります。真面目な目的でモニタリングするつもりでも、他人の見てはいけないデータを誤って見てしまうこともありえます。慎重に使うようにしてください。 |