[Network] | |||||||||||||||
netstatでリッスンしているプロセスを特定する
|
|||||||||||||||
|
解説 |
TCP/IPを使ったネットワーク・サービスでは、ある特定のポートでリッスン(待ち受け)することにより、クライアントからの要求を受け付けるようになっている。だがどのサービスが実際にどのポートを使ってリッスンしているのかを知るのは簡単ではない。単純なサービスでは問題ないが、サービスによっては使用するポートが固定的ではなかったり、サービスやプログラムごとのポートの使用状況などに関する情報が必ずしも公開されていなかったりするからだ。ポート番号とサービスの対応関係が分からないと、ファイアウォールを始めとするネットワークの設定などができないし、ウイルス(によって設置されたバックドア)か正規のサービスかを区別することも不可能である。
ここでは、Windows系のOSにおいて、リッスンしているプログラムやサービスを特定するためのいくつかの方法について解説する。このためには、一般的には次のような方法が考えられる。
- netstat コマンドでリッスンしているプロトコルとそのポート番号を調査する
- (Windows XP/Windows Server 2003の場合)netstat に-oオプションを付けて、プロセスIDを特定する
- (Windows XP SP2の場合)netstat に-b、-vオプションを付けて、プロセス名を特定する
- /etc/servicesファイルでサービス名を調査する
- RFCのAssigned Numbersリストでサービス名を調査する
- マイクロソフト社のサポート技術情報データベースなどでサービスを調査する
- ネットワーク・モニタなどで通信の内容を調べてプロトコルを推定する
- プロセスやサービスを1つずつ停止させながら、リッスンしているポートを調査する
netstat コマンドでリッスンしているプロトコルとそのポート番号を調査する
TCPやUDPでリッスンしているポート(サーバ側で、待ち受けしている方のポートのこと)を調査するには、まず最初に、「TIPS―netstatコマンドを使いこなす」で述べたとおり、netstatというコマンドを使う。「-a」オプションを付けてnetstatを実行すると、現在アクティブなコネクションとリッスンしているポートなどが表示されるので、これでどのようなプロトコルが使われているかが分かるだろう。
C:\>netstat -an……Windows XP上で実行した例 |
ポート番号はここで示したように、実際には1〜65535の数値であるが(「-n」オプションを付けると数値で表示される)、代表的なものについてはservicesファイルを参照して、分かりやすいサービス名に変換して表示される。servicesファイルとは、ポート番号と具体的なサービス名の対応を記述したファイルであり、Windows系OSでは、%windir%\system32\drivers\etc\servicesに格納されている。
ただしこのservicesファイルの内容は、必ずしもWindows OSで使われているサービス名やポート番号を正確に表しているわけではない。これは非常に汎用的なファイルであり、UNIXやLinuxシステムなどでも同じものが使われているので、ときにはまったく別のサービス名が表示されたりする(もともとWindowsでは用意されていないようなサービス名も表示される)。またプロトコルによっては、ダイナミックにリッスンするポートを変更するものがあるが、その場合は別のサービス名であるかのように表示されてしまう。
また、これはWindows OSのnetstatコマンドの問題であるが、「TIPS―netstatコマンドを使いこなす」の最後で述べたように、実際にはリッスンしていないにもかかわらず、リッスンしているかのように表示されるポートがいくつかある。例えば先の例でいえば、TCPの1081番というポート番号がリッスン状態になっているが、外部からこのポートへ接続しようとしても拒否されてしまい、接続することはできない(すぐに拒否応答が返ってくる)。これは、「192.168.0.111:1081←→192.168.0.51:445」というコネクションの影響で、「192.168.0.111:1081」というポートがリッスンであるかのように表示されているのである。
このように、netstatだけでは実際にどのサービスやアプリケーションがポートを使っているかを完全に特定することができない。正確なポートの使用状況を知るためには、さらにいくつかの調査が必要になる。
RFCのAssigned Numbersリストでサービス名を調査する
servicesファイルに記述されているサービス名はかなり限定的であり、Windows 2000やWindows XPに付属のものでは、約120種類のサービスが記述されているだけである(UDPとTCPで同じ番号を使っていても、別のサービスとして数えているので、実際にはこの半分程度のプロトコルしか記述されていない)。もう少し詳細なプロトコル番号の一覧については、例えばRFCの「Assigned Numbersリスト」を参照する必要がある。RFCは、インターネットに関する各種の技術文書などをまとめたもので、「Assigned Numbers」は、特定のサービスやプロトコルに割り当てられた具体的な番号の一覧をまとめた文書である。このような場合に使われる文書としては、いままではRFC1700があったが、これはすでに8年も前のものである。現在では「www.iana.org」でオンラインデータベース化されている(RFC3232)。ただし最新のプロトコルについてはまだ収録されてなかったりするので、このリストを信用しすぎると、「このマシンには、〜というソフトウェアが入っているらしいがどうやって止めればいいのだろうか」などと、少々見当はずれな疑問を抱いて、時間を無駄にしてしまうかもしれない。
Windows XP/Windows Server 2003の場合―netstat に-oオプションを付けて、プロセス名を特定する
ある特定のポートをリッスンしているプログラムやサービスを見つける見付けるには、Windows XPやWindows Server 2003ならばnetstat -oコマンドで、そのポートを使用しているプロセスを調べるのが確実である(このオプションはWindows 2000では利用できない)。
C:\>netstat -oan …Windows Server 2003で実行 |
一番右端のPID欄に表示されているのが、プロセスIDである。PIDが分かれば、次はタスク・マネージャやtasklist.exeコマンド(このコマンドもWindows XPおよびWindows Server 2003でのみ利用可能)で、実際のプロセス名を特定することができる。
svchostが多数実行されているタスク・マネージャの画面 | |||
タスク・マネージャで確認すると、svchost.exeというプロセスが多数動作しており、場合によってはCPU負荷が高くなっていたり、メモリを大量に消費していることがある。svchost.exeはサービスを起動するための元となるプロセスであり、OSのバージョンなどにもよるが、このように複数実行されているのが普通である。これはWindows XP Professionalにおけるタスク・マネージャの例。 | |||
|
C:\>tasklist …Windows Server 2003で実行 |
これにより、例えば1500はinetinfo.exe(IISサービスのプロセス)、4はSystemプロセスということが分かる。
ただしこの例からも分かるが、実際のWindowsシステム上でこれを実行しても、「System」プロセスや「svchost.exe」プロセスが所有者となっているポートが多く表示される。これらはシステム起動時に実行を開始するサービスであり、ほとんどのサービスの親となる重要なサービスである。これだけの情報では、あるポートが具体的にどのサービスによってオープンされたものかを簡単に知ることはできない。
これらのサービスに関するプロセスを調べるには、tasklistに/svcオプションを付けるとよい。これは、各プロセスごとに関連付けられているサービス名を表示させるオプションである。
C:\>tasklist /svc …Windows Server 2003で実行 |
これを見ると、lsass.exeというプロセスはHTTPFilterやkdcなどのサービスを提供しており、svchost.exeというプロセスはRpcSsやDhcp、Dnscache、LmHostsなどのサービスを提供しているということが分かる。これらのサービス名が実際に何を表しているかについては、別稿の「TIPS―svchost.exeプロセスとは?」を参照していただきたい。
サポート技術情報データベースやネットワーク・モニタなどでサービスを調査する
使用しているポート番号などが分かれば、次はマイクロソフト社の「サポート オンラインのページ」で、ポート番号などをキーにして具体的なサービス名を調べるとよいだろう。
また、(少々スキルが要求されるが)実際にネットワーク・モニタ(プロトコル・アナライザ)などを使って、プロトコルの詳細を調査して見当を付けるという方法もある。ネットワーク・モニタの使い方については、別稿の「Windowsネットワーク・プロトコルの理解と検証―プロトコル・アナライザを使ってネットワーク・トラフィックを解析する」や「TIPS―netcapコマンドでネットワーク・パケットをキャプチャする」などを参照していただきたい。
プロセスやサービスを1つずつ停止させながら、リッスンしているポートを調査する
以上の方法のほかに、サービスを1つずつ停止させながら、利用されているポートを調査するという方法もある。svchost.exeやSystemプロセスが所有者となっているポートは、実際にはシステムのサービスとして実行されているものが多い。そのため、サービスを順番に1つずつ止めながらnetstat -anコマンドを実行すると、リッスン状態であったポートがnetstatのリストから消えることがある。するとそのサービスが実際のポートの所有者であることが分かる。特にtasklist.exeコマンドが使えないWindows 2000では、このような方法も有効であろう。
例えば最初のWindows XPのnetstatの例で、TCPのポート5000番をリッスンしているサービスを特定してみよう。まず最初にnetstat -anを実行してその結果をどこかに保存しておく(もしくは複数のコマンド・プロンプトを立ち上げて、順次コマンドを実行してもよいだろう)。次に、管理ツールの「サービス」ツールで、一番上にあるサービスを1つ停止させてみる。そしてnetstat -anをまた実行し、先ほどの結果と比べてみる。こうやって順番にサービスを停止させながら、状態の変化を観察する。いくつか停止不可能なサービスがあるかもしれないが、あまり気にせず、取りあえず先へ進もう。
こうやって作業を進め、「SSDP Discovery Service」まで停止させると、TCPの5000番ポートのリッスン状態が消えることが分かるはずだ。「SSDP Discovery Service」サービスの説明には、「ホーム ネットワークの UPnP デバイスの検出を有効にします。」と書かれている。つまり、これはUPnPサービスで使われているポートであるということが分かる。ここまで分かればあとは簡単だろう。UPnPやSSDPのサポート技術情報などを調べればよい。そうするとこのサービスでは、TCPの5000番のほかに、UDPの1900番も使用していることが分かるだろう。
Windows XP SP2の場合―netstatの-b、-vオプションで実行ファイルを調査する
Windows XP SP2のnetstatコマンドでは、新たに「-b」と「-v」オプションが導入された。-oオプションではプロセスID(PID)のみが表示されたが、-bオプションを付けると、その通信を行っている実行ファイル名(もしくはサービス)が表示される。これにより、プロセスやサービスを特定するのが容易になっている。
C:\>netstat -nb |
-bオプションに加えて-vオプションも指定すると(両方同時に指定すること)、実行ファイル名だけでなく、その通信に関連している(呼び出している)コンポーネントのファイル名(DLLファイル名など)も表示される。
C:\>netstat -anbv |
関連記事(Windows Server Insider) | ||
TIPS―svchost.exeプロセスとは? | ||
TIPS―ポートのリッスン状態を調査する | ||
TIPS―netstatコマンドを使いこなす | ||
TIPS―IPアドレスからホスト名を見つける方法 | ||
TIPS―ホスト名からIPアドレスを見つける方法 | ||
|
更新履歴 | ||
|
「Windows TIPS」 |
TechTargetジャパン
- 更新を適用せずにシャットダウンできる項目を追加する (2012/8/17)
更新プログラムを適用せずにシャットダウンできる項目をメニューに追加する。急いでいるときでも[スタート]メニューから更新を適用せずシャットダウンできる - SQL Serverの管理ツールとサービスの設定 (2012/8/16)
ビギナー向けSQL Server管理入門。今回はSQL Serverの管理ツールの概要と、サービスや通信ポートの設定について解説 - クラスタサイズを変更してWindowsをインストールする (2012/8/10)
Windows OSをインストールすると、デフォルトのクラスタサイズは4Kbytesになるが、より大きなサイズにしたい場合は、手動で事前にフォーマットすればよい - 乗り遅れた人のためのDropbox入門 (2012/8/9)
USBメモリでファイルを持ち歩くのはもう古い。複数のPC/端末間でファイルを同期できる無料サービス「Dropbox」の方が便利だ。そのメリットを解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
「ITmedia マーケティング」新着記事
節約が必要な背景は「年収が上がると思えない(57.5%)」から〜調査データランキングTOP10
「調査のチカラ」で人気がある調査データを紹介します。「最も休日が多い職種は? 休日数...
第1回 「見込み客」が、「こっちを振り向いてくれる」瞬間を見極める
見込み客の検討プロセスを後押しし、その検討度合いを把握し、しかるべきタイミングで営...
#3 『仮設』検証で考えるプロダクトマーケティング
日本ではサービス開発の際、「いいものを作ろう」という圧力の高さゆえ、一発必中を狙っ...