Windowsをデフォルト設定のまま動かすと,複数のポートがオープンする。自動的に複数のサービスが起動し,面倒な設定なしにさまざまなサービスを利用できる。しかしこれを放置しておくと,攻撃者の格好のターゲットになり得る。セキュリティ対策の基本は,必要なサービスと不要なサービスをきちんと見極め,不要なサービスを停止することだ。このためにも,Windowsがデフォルトでオープンしている代表的ポートの役割と危険性を知り,適切に設定しなくてはならない。

 インターネット経由で,サーバのハード・ディスクの中身が丸見えになっている。しかも,いとも簡単にデータを改ざんし,削除できる――。こんなマヌケな設定のサーバはあるはずがないと思うだろう。ハード・ディスクの中身を意図的に外部に公開するような極端な設定をしていなければ,このようなことは起こらないように思える。

 しかしWindowsでは,管理者が明示的にサービスを起動したり,ポートをオープンしなくても,このようなことが起こり得る。

図1●netコマンドを使えば共有リソースを割り当てられる。
「C$」はCドライブの共有名

 Windowsの場合,ファイル共有サービスを提供するTCPの139番ポートをデフォルトでオープンしている。ファイル共有サービスをデフォルトで起動し,待ち受け状態にしているのだ。このため,攻撃者に共有リソースをアクセスされる危険性が常につきまとう。共有リソースは,netコマンドで簡単に割り当てることができる(図1)。Cドライブは管理者権限がないと共有できないが,何の意識もせずにGuestアカウントを有効にしてCドライブにアクセス可能にしていると,いとも簡単にハード・ディスクを荒らされてしまう。今後,ファイル共有サービスを突く深刻なセキュリティ・ホールが見つからないとも限らない。

 セキュリティ対策の基本は,不要なサービスを停止することだ。サービス自体を起動していなければ,外部から接続が要求されても応答しない。これを実施するために,パソコンの管理者は必要なサービスがどれで,実際に今どのサービスを稼働しているのかをきちんと把握する必要がある。

 しかしWindowsでは,さまざまなサービスがデフォルトで起動し,その役割が簡単にはわからない場合が多い。多くの管理者はポートが開いていることの危険性を実感できず,サービスの役割や必要性を認識しないままインターネットにつないでしまう。

注意すべき五つのポート

 では実際に,Windowsがデフォルトでオープンしているポートにはどのようなものがあるのだろうか。Windowsをインストールし,デフォルト状態でオープンしているポートを調べてみた。調査には,フリーのポート・スキャン・ツール「Nmap」(http://www.insecure.org/nmap/)を利用した。

 結果が表1[拡大表示]と表2[拡大表示]である。ほとんどのWindowsでオープンするのが,135と137,138,139の各ポートだ。これに加え,2000,XP,.NET Serverでは445もオープンする。Windowsがデフォルトでオープンするウェルノウン・ポートとして知られているのは,この5種類である。

表1●サーバ系Windowsがオープンしている代表的なポート
 
表2●クライアント系Windowsがオープンしている代表的なポート

 果たして,これらは本当に必要なサービスなのだろうか。それを判断するためには,それぞれの役割をきちんと把握していなければならない。デフォルトで開いているからと言って安易にそのままにしておくと,気づかぬうちに不正なアクセスを受けてしまう。不必要なサービスは,できるだけ停止するべきだ。どうしても止められないサービスは,フィルタリング・ソフトを使って確実にパケットをブロックしなければならない。

 ここでは,ほとんどのWindowsがデフォルトでオープンする代表的な5種類のポート,135,137,138,139,445の役割を整理する。これを把握すれば,ポートを開けておくことでどのような危険があるのかを推測でき,対策を立てやすくなるだろう。

ツールで実証されたポート135の危険性

 危険だと言われながらも用途がわかりにくく,脅威を実感しにくいポートの代表が135番だ。しかし2002年7月,その危険性を確認できるツールが登場した。「IE'en(アイーン)」だ。

 このツールは,セキュリティ関連の技術情報やツール類を提供する「SecurityFriday.com」(http://www.securityfriday.com)がWeb上で公開した。目的は,ポート135の危険性をわかりやすい形で実証し,セキュリティ設定の強化を呼びかけることだ。ただしこのツールの威力が大きいために,トレンドマイクロがこのツールのパターンをウイルス定義ファイルに追加した。同社のウイルス検知ソフトをインストールしたパソコンでIE'enをダウンロードすると,ウイルスとされる可能性がある。注意が必要だ。

SSLの中身が見える

 IE'enはInternet Explorer(IE)を遠隔操作するツールである。ネットワークでつながった他のパソコン上で起動しているIEから情報を取得したり,そのIE自体を操作できる。具体的には,起動しているIEのウインドウの一覧や,各ウインドウが表示するWebサイトのURLやCookie,検索サイトで入力した検索語などが取れてしまう。

 このツールが見せつける一番の恐さは,SSLで保護されるはずのデータが暗号化されていない状態で見えることである。暗号化前,または復号化後のデータを取得できる。IE'enを使えば,例えばネット・バンキングなどで入力した銀行のキャッシュ・カードの暗証番号などもそのまま見えてしまう。

 IE'enは,Windows NT4.0/2000/XPが標準で搭載する分散オブジェクト技術DCOM(Distributed Component Object Model)を利用している。DCOMを使えば,他のパソコン上のDCOMアプリケーションを遠隔操作できる。他のパソコンが持つ関数を呼び出す仕組みRPC(Remote Procedure Call)を利用する。このRPCが,ポート135を使っている。

 RPCを利用して通信する場合,相手のパソコンの135番ポートに対して,何番のポートを使って通信すればよいかを問い合わせる。すると相手のパソコンから,ポート番号が通知される。実際の通信は,このポート番号で実行する。ポート135は実際のRPC通信で使うポートを動的に決めるポート・マッピングの役割を果たす。

 DCOMで作られたアプリケーションなら,どれもIEと同じように操作できる可能性がある。例えばExcelで作業中の他人のパソコンに接続し,セルに入っている値を取得したり,値自体を書き換えることも不可能ではない。

 ただしこの方法で他人のパソコンを操るには,そのパソコンのIPアドレスとログイン名,パスワードを知っている必要がある。このため,インターネット経由で第三者からの攻撃を受ける可能性は低い。危険性が高いのは社内環境だろう。特にクライアントが危ない。他人のIPアドレスやログイン名は簡単にわかるし,パスワードの管理が甘い場合も多い。学校やインターネット・カフェなど,同じ設定のパソコンが複数ある場合も注意が必要だ。

社内環境ではDCOMを無効に

図2●RPCのサービス自体を止める方法。
Windowsが正常に起動しない可能性が高いため,十分に注意すべき

 この危険を回避するための最善策は,RPCのサービス自体を停止することだ。「コントロールパネル」の「管理ツール」から「サービス」を選び,「Remote Procedure Call」のプロパティを開く(図2[拡大表示])。ここで,「スタートアップの種類」を「無効」にすれば,次回起動時からRPCは立ち上がらない(有効にするには,レジストリ・エディタで「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs」の「Start」の値を0x04から0x02に変更して再起動する)。ただしこの設定をすると,Windowsの動作に大きな影響が出る。例えばWindows XP Professionalなら,ログインしてからデスクトップ画面が表示されるまでに,非常に長い時間待たされるようになる。WindowsのサービスはRPCに依存するものが多く,これらが正常に起動しなくなるのだ。これでは弊害が大きいため,RPCのサービスは基本的には止められないと考えた方がよい。

 次に考えられる対策はパケット・フィルタリングだ。しかし,これもWindowsの動作にさまざまな影響が出る。例えば,クライアントで135番ポートをブロックすると,Outlookを使ってExchange Serverに接続できなくなる。分散トランザクションの管理をするMSDTC,アプリケーション間のメッセージのやり取りを司るMSMQ,ネットワークにつながったパソコンに動的にアドレスを割り当てるDHCPなどのサービスも,このポートを利用している。

 Windowsのネットワークに詳しい高橋基信氏は,「WindowsのサービスにはRPCを利用するものが多い。また,Windowsのネットワークは,クライアントとサーバの間にファイアウォールが存在する状況を想定して作られていない。イントラネット環境でフィルタリングする場合は,十分に検証してからにすべきだ」と語る。つまり社内環境では,クライアントだけでなく,サーバでも135番ポートをブロックするのは難しいだろう。サーバの場合,Active Directoryやドメインが同期を取るために135番ポートを利用している。

図3●dcomcnfg.exeを使ってDCOMを無効にする方法。
「このコンピュータ上で分散COMを使う」というチェックをはずす

 その代わり,DCOMだけを無効にする方法がある。Windows NT/2000/XPが標準で備える「dcomcnfg.exe」というツールを利用するのだ。コマンド・プロンプトからこのツールを実行し,表示されたウインドウの「規定のプロパティ」タブを開いて「このコンピュータ上で分散COMを使う」というチェックを外すだけだ(図3[拡大表示])。社内でDCOMを使用しておらず,かつ別のコンピュータから自分のパソコンのCOMを操られたくない場合は,この設定をしておくべきだろう。

 クライアントなら,リモートからのパソコンへのログオンを禁止する方法もある。「コントロールパネル」→「管理ツール」→「ローカルセキュリティポリシー」→「ネットワーク経由でコンピュータにアクセスを拒否する」で,アクセスを拒否する相手を指定する。すべてのアクセスを拒否したければ,「Everyone」と指定すればよい。

公開サーバは135をブロック

 インターネットに公開しているサーバで,RPCを使うことはあまりないだろう。前述の通り,社内環境よりも危険性は低いが,DCOMを使った特殊なアプリケーションを動作させない限りは(必要なサービスでなければ),135番をブロックすべきだ。例えば,Webサーバやメール,DNSサーバとしてだけ機能させるなら,135番ポートをブロックしても問題はない。

 ただし,インターネットを介してDCOMアプリケーションを利用する場合などは,ブロックできない。パスワードの管理を徹底するなどの対処が必要である。

(八木 玲子)