Windows系OSでは、ファイル共有サービスのためにポート137〜139番を使用しているので、セキュリティのためにはこれらのポートをインターネットからアクセスできないようにフィルタリングしなければならない。Windows 2000/XPでは、さらにポート445番も使用しているので、これもブロックする必要がある。フィルタリングはOS内蔵のパケット・フィルタ機能を使うか、外部ルータでフィルタリングを行う。
対象OS:Windows 2000 Professional/Windows XP Professional/ Windows XP Home Edition/Windows 2000 Server/Windows 2000 Advanced Server
Windows 2000/XPシステムをインターネットに接続して使う場合、ファイル/プリンタ共有サービスを外部から使われたり、自分の情報が外部に不用意に漏れたりしないように、通常は何らかのセキュリティ対策を行なう必要がある。このセキュリティ対策は、Windows 2000/XPをインターネット・サーバとして使用する場合はもちろんのこと、単なるクライアントとして利用する場合でも施しておくことが望ましい。最近では、フレッツ・ISDNやCATV、xDSL、光ファイバなどを使った常時接続環境が個人でも利用できるようになり(テレホーダイを使った環境もこれに近いものがある)、個人ユーザーといえども適切なセキュリティ対策は必須である。これを怠ると、外部からシステムへ侵入され、システム内部を破壊されたり、さまざまなファイルを消去されたりする危険性がある。
従来のWindows系OS(Windows 9x/MeやWindows NTなど)では、このような場合、TCP/IPの特定の3つのポートを閉じておけば、とりあえず最低限のセキュリティは確保されているとされていた。しかしWindows 2000/XPでは、新たに別のポート445番も閉じる必要がある。これはWindows 2000/XPで新たに導入された、「ダイレクト・ホスティングSMBサービス(Direct Hosting SMB Service)」というサービスで使用されているポートである。
ネットワーク・ファイルやネットワーク・プリンタを複数のメンバで共有できるという点では同じだが、Windows 2000以前とWindows 2000/XPでは、これらの仕組みが一部変更(機能追加)されている。
■Windows 2000以前のファイル/プリンタ共有サービス
Windows系OS(Windows 9x/Me/NT/2000)では、ファイル共有やプリンタ共有などのサービスのために、「SMB(Server Message Block)」と呼ばれるプロトコルを使用している。これはアプリケーション層のサービス プロトコルであり、下位のトランスポート層のプロトコルを呼び出すためにNetBIOSというインターフェイスを使っている。現在のWindowsでは、TCP/IP上で動作するNetBIOSが広く使われており、それをNBT(NetBIOS over TCP/IP)プロトコルと呼ぶ。NBTのほかには、NetBEUI上で動作するものや(当初のNetBIOSはこれしかサポートしていなかった)、IPX/SPX(NetWareサービスで広く使われているプロトコル)上で動作するNetBIOSなどがある。しかし現在では、インターネットやTCP/IPプロトコルが広く普及した結果、NBTが主流となり、それ以外のプロトコルは必要に応じて補助的に使われるにとどまっている。
NetBIOSで使われるTCP/UDPのポート番号は3つあり、それぞれ以下の用途に使われている。
用途 | 種別 | ポート番号 |
---|---|---|
NetBIOS名前サービス | UDP | 137 |
NetBIOS名前サービス | TCP | 137 |
NetBIOSデータグラム・サービス | UDP | 138 |
NetBIOSセッション・サービス | TCP | 139 |
NetBIOSサービスと使用ポート番号 |
「名前サービス」は、ネットワーク上に存在する特定のマシンやサービスを検索するために使われる。マシン名やサービス名をキーにして、検索要求をネットワーク上にブロードキャストしたり、WINSサーバに問い合わせたりすると、そのマシン名やサービス名を持つノードが要求に対して検索応答を返す(検索するキーは16bytesの文字列であり、1byte目から15byte目にホスト名/サービス名を記述し、最後の16bytes目に検索するサービスの種類を指定する。詳細についてはマイクロソフトのサポート技術情報「NetBIOS名の 16 番目の文字」などを参照のこと)。いったん目的とするホスト/サービス名が見つかれば、その後は、データグラム・サービスやセッション・サービスを使って、目的とするサービスを利用する。
以上のような仕組みのため、SMBサービスとTCP/IPを組み合わせて利用しているネットワーク環境では、外部からの無用なアクセスを禁止したり、内部のブロードキャスト情報などが漏れたりしないように、これらのポート(TCPやUDPのポート137番〜139番)をブロックしておくのが常識となっている。これらのポートに対して何も対策を施していないと、例えばCATVインターネットで接続されているほかのユーザーのワークグループ名やマシン名が外部から見えたりする。さらにもしGuestアカウントが有効になっていて、かつそのパスワードが空であったりすると、外部のユーザーが簡単にファイルの内容を読み出したり、その内容を書き換えたりすることができてしまうだろう。
以上のようなセキュリティ上の問題を防ぐため、例えばISDNダイヤルアップルータなどでは、TCP/UDPの137番〜139番をブロックするように、デフォルトで設定されていることが多い。
■Windows 2000以降のファイル/プリンタ共有サービス
Windows 2000/XPでは以上のほかに、新たに「ダイレクト・ホスティングSMBサービス」というサービスが導入されている。これは「NetBIOS less(NetBIOSが不要な)」なSMBプロトコルの実装であり、NetBIOSインターフェイスに頼らずに2つのホスト間で直接通信を行なって、ファイルやプリンタの共有を行なうためのサービスである(マイクロソフトのサポート技術情報「TCP/IP を介する SMB のダイレクトホスト」参照)。より正確にいうと、これはCIFS(Common Internet File System)という、Windows 2000/XPのネイティブなファイル/プリンタ共有サービスのためのプロトコルである。CIFSは従来のSMBを拡張したプロトコルであり、インターネット(TCP/IPネットワーク)上でSMBサービスと同様の、ファイルやプリンタの共有を行なうためのプロトコルである。CIFSの仕様などについては、米Microsoftの「CIFS/SMB Protocol Overview」のページや、「Common Internet File System File Access Protocol」ページからダウンロードできるテクニカル・ドキュメントを参照していただきたい(このプロトコルは仕様はオープンであるが、実際にインプリメントするためには、現在ではMicrosoftとライセンス契約を結ぶ必要がある。ただしロイヤリティは無料)。
従来のNBTを使ったサービスでは、まず「NetBIOS名前サービス」を使って通信相手を見つけ、その後「NetBIOSデータグラム・サービス」や「NetBIOSセッション・サービス」を使って相手と通信する、という2つの段階を踏んでいた。これに対して新しい方法では、相手のノードに対して直接コネクションをオープンし、それを使ってサービスを受けることができる。例えば「winserver.d-advantage.com」というファイル・サーバの共有フォルダを開く場合、まずこの名前から(DNSサービスなどを使って)IPアドレスを求め、そのIPアドレスのサーバ上で動作している「ダイレクト・ホスティングSMBサービス」に対して直接TCP接続をオープンしようとする。使用するポート番号はTCPの445番であり、Windows 2000/XPのファイル/プリンタ共有サービスは、このポートでサービス要求をリッスン(待ち受け)している。TCPのポート445番は、サービス名を定義しているservicesファイル(%WINDIR%\System32\drivers\etc\services)によると、「microsoft-ds(Microsoft Directory Service)」という名前のサービスとなっているが、前述したように、実際にはCIFSプロトコル(SMB over TCP/IP)で利用されている。
用途 | 種別 | ポート番号 |
---|---|---|
ダイレクト・ホスティングSMBサービス | TCP/UDP | 445 |
ダイレクト・ホスティングSMBサービスの使用ポート番号 |
このポートは、TCPとUDPの両方で使われている。
「ダイレクト・ホスティングSMBサービス」では、事前にブロードキャストなどでNetBIOSノードの名前解決をしたりしないし、必要なコネクションも1つだけですむので、効率がよく、ファイアウォール設定やルーティングの管理も行ないやすくなっている。またクライアント側のNetBIOS名の解決方法の設定(ブロードキャストにするか、WINSにするか、LMHOSTSファイルを利用するかなどを選択し、そのための各種設定を行なう必要がある)の手間が(若干ではあるが)解消される。単にサーバの名前からIPアドレスさえ求められればよいからだ。一般的には、DNSサービスにファイル/プリント・サーバのIPアドレス情報を登録しておくことになるだろう。これは特に、インターネットやWAN、VPN回線などを介してサーバを使うような場合に有用である。ただしプロトコル的に見ると、これは従来のファイル・プリント・サービス用のSMBプロトコルをラップ(包み込む)しただけの、非常に単純なものである。セキュリティ対策などは特に施されていないので(通信されるパケットの内容が暗号化されたりしないので)、必要ならば、より下位のレベル(IP層レベルなど)で暗号化などを行なわなければならない。
ところでこのプロトコルがサポートされているのは、今のところWindows 2000/XPだけなので、Windows NTや9x/Meなどの従来のOSが動作しているマシンと通信することができない。そこでWindows 2000/XPでは、ファイル/プリンタ共有サービスを利用する場合、従来のNetBIOSインターフェイスを使ってサーバとの接続を試みると同時に、「ダイレクト・ホスティングSMBサービス」も呼び出すように実装されている。そのため、ユーザーから見るとプロトコルの違いを特に意識することなく、従来のWindows NTやWindows 9x/Meなどのノードとも通信することができるように実装されている。
このような過去との互換性を重視した動作は、ほとんどの場合は便利に機能するが、場合によっては危険な面も持っている。すでに述べたように、従来のNetBIOSのポート(137〜139番)はたいていの環境(特にインターネットに接続されているようなサーバ)ではすでに禁止しているだろうが、この445番のポートについては何もしていなかったり、禁止するのを忘れていたりするかもしれない。この場合、通常のSMBプロトコルと同様に、パスワードが空のままGuestアカウントが有効になっていると、外部のWindows 2000/XPマシンから簡単にファイルにアクセスされたりするので注意が必要である。NetBIOSポートと同様に、このポートについても同様のセキュリティ対策を施しておく必要がある。
■パケット・フィルタ/ファイアウォールによるポートのブロック
外部ルータなどを使わず、Windows 2000/XP自体でこのポートをブロックするには、OSが持っているパケット・フィルタ機能を利用すればよい。
Windows 2000では、「Windows TIPS:インターネット常時接続時の基本セキュリティ設定」を参考にして、インターネット側のネットワーク・インターフェイスで、RRAS(Routing and Remote Access)サービスによるパケット・フィルタを設定すればよいだろう。
Windows XPでは、「Windows TIPS:Windows XPのファイアウォール機能を活用する」を参考にして、OS内蔵のファイアウォール機能を設定しておけばよい。
なおWindows 2000/XPでは、NBTプロトコルを禁止することはできるが、このダイレクト・ホスティングSMBサービス・プロトコルだけを単独で禁止することはできないようである(マイクロソフトのサポート技術情報「TCP/IP を介する SMB のダイレクトホスト」参照)。NBTだけを禁止するには、[ネットワークとダイヤルアップ接続]ツールから、現在使用中のネットワーク設定を選んでプロパティを表示させ、[インターネット プロトコル(TCP/IP)]の[プロパティ]−[全般]−[詳細設定]から[WINS]タブを選んで、[NetBIOS over TCP/IPを無効にする]を選ぶ。
■ルータによるポートのブロック
インターネット接続にルータなどの外部ネットワーク機器を使っている場合は、ルータの入り口でフィルタを設定しておく。具体的な設定方法は各ユーザーの環境に依存するので詳しくは述べないが、例えば、ヤマハが販売しているISDN/ブロードバンド・ルータ(RTシリーズ)では、当初は、デフォルトで次のようなフィルタが設定されており、TCPとUDPのポート137〜139番がフィルタでブロックされるようになっていた。
ip filter 1 reject * * udp,tcp 137-139 *
ip filter 2 reject * * udp,tcp * 137-139
これは、(TCPかUDPを問わず)ソース・ポートか宛先ポートが137〜139番ならば、そのパケットを通さないようにするというフィルタ設定である。これに対して、さらにポート445番もブロックするには、次のように変更すればよいだろう(ただし、現在販売されている製品や、最新のファームウェアをダウンロードしてアップデートした場合は、デフォルトではこれらのポートもブロックされるようになっている)。
ip filter 1 reject * * udp,tcp 137-139,445 *
ip filter 2 reject * * udp,tcp * 137-139,445
■更新履歴
【2002/06/15】Windows XPに関する情報を加筆・修正しました。
【2000/10/07】初版公開。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.