実験
ビギナー管理者のためのブロードバンド・ルータ・セキュリティ講座
第2回 Windowsのファイル共有サービスをブロックする(2)
デジタルアドバンテージ
2002/03/07
|

|
Windowsのファイル共有に用いられるNetBIOSとは?
LANからWANへのファイル・アクセスを防ぐには、Windowsのファイル・アクセスのパケットを特定し、ブロードバンド・ルータでフィルタして遮断すればよい。そのために、ごく簡単にWindowsのファイル・アクセスに使われるプロトコルやソフトウェア・インターフェイスを説明しよう。
Windowsのファイル・アクセスには、「SMB(Server Message Block)」と呼ばれるアプリケーション層のプロトコルが利用されており、その下位のトランスポート層のサービスを呼び出すためにNetBIOSと呼ばれるインターフェイスが使われている。現在、SMBが使うトランスポート層としてはTCP/IPが一般的で、NetBIOSをTCP/IP上に実装した「NBT(NetBIOS Over TCP/IP)」というプロトコルが一般的に使用されている。
NBTでは、下の表のようにポート番号として137〜139番を使用するので、簡単にいえば、これらのポート番号を持つパケットをフィルタで閉じれば、ファイル・アクセスを遮断できることになる。
プロトコル |
ポート番号 |
サービス名 |
概要 |
TCP/UDP |
137 |
netbios-ns |
NetBIOS名(マシン名)からIPアドレスを導き出す「名前解決」に使用される。「NetBIOS名前サービス」とも呼ばれる |
TCP/UDP |
138 |
netbios-dgm |
ネットワーク・コンピュータの一覧を得る「ブラウジング」に使用される。「NetBIOSデータグラム・サービス」とも呼ばれる |
TCP |
139 |
netbios-ssn |
ファイル/プリンタ共有に使用される。「NetBIOSセッション・サービス」とも呼ばれる |
 |
NBTで使われるTCP/UDPのポートとそのサービス名 |
サービス名とは、Windowsのnetstatコマンドで表示される各ポートの名称のこと。 |
実は、ファイルやフォルダへのアクセスなど、いわば狭義の「ファイル共有サービス」に使われるのはTCPのポート139番(netbios-ssn)だけであり、これを遮断すればファイル・アクセスは行えない。とはいえ、ポート137〜138番(netbios-ns、netbios-dgm)を利用するパケットがWAN側に漏出すると、LAN側のNetBIOS関連情報(WindowsマシンのNetBIOS名やIPアドレスなど)が漏えいする可能性があるし、そもそもWAN側には必要ない無駄な情報なので、これらのポートは閉じておくべきだ。
これらのポートが利用されている様子は、Windowsマシン間でファイル・アクセスを行っている状況で、netstatコマンドを実行すると表示される。netstatコマンドの使い方は、Master of IP Networksの「netstat - ホストのネットワーク統計や状態を確認する」が詳しいので、参照していただきたい。
C:\>netstat -a -n
Active Connections
Proto Local Address Foreign Address State
TCP 192.168.1.102:1026 0.0.0.0:0 LISTENING
TCP 192.168.1.102:1026 10.1.1.101:139 ESTABLISHED 
TCP 192.168.1.102:137 0.0.0.0:0 LISTENING
TCP 192.168.1.102:138 0.0.0.0:0 LISTENING
TCP 192.168.1.102:139 0.0.0.0:0 LISTENING
UDP 192.168.1.102:137 *:*
UDP 192.168.1.102:138 *:* |
|
テスト環境のLAN側PCにてnetstat -a -nコマンドを実行したところ |
ポート137〜139番が利用されている様子が分かる。 |
|
 |
LAN側PC(192.168.1.102)とWAN側PC(10.1.1.101)の間で、TCPのポート139番(netbios-ssn)の接続が確立されて(ESTABLISHED)いることが分かる |
|
NetBIOS以外に閉じるべきポート
閉じるべきポートは、実はまだある。Windows 2000/XPでは、NetBIOSを使わずにファイル・アクセスを実現する「ダイレクト・ホスティングSMBサービス」というサービスが実装されているからだ。これは、DNSなどを利用して名前解決を行った後、TCP/UDPのポート445番を通じて相手のPCと直接通信し、ファイル・アクセスを実現する(このプロトコルの詳細は、Windows Insiderの「Windows TIPS:ポート445(ダイレクト・ホスティングSMBサービス)に注意」が詳しいので、参照していただきたい)。
Windows 9x/Me/NTはNetBIOSを利用するが、Windows 2000/XPはNetBIOSだけではなく、このダイレクト・ホスティングSMBも利用する。従ってNetBIOSと同時に、ダイレクト・ホスティングSMBが使うポート445番も閉じるべきだ。
もう1つ、ファイル共有とは直接の関係はないが、閉じておくべきポートとしてTCP/UDPのポート135番も追加しておこう。これはWindowsのRPC(リモート・プロシジャ・コール:リモートのコンピュータ上で何か処理を実行するためのプロトコル)に利用されるポートで、WINSサーバやDHCPサーバを管理したり、ドメイン間で信頼関係を構築したり、といった用途に用いられる。こうしたWindows独自のサービス/機能をインターネット越しに利用するつもりがなければ(通常はVPNや専用線などセキュリティを確保した回線を使う)、このポート135番も閉じておくべきだ。
プロトコル |
ポート番号 |
サービス名 |
概要 |
TCP/UDP |
135 |
epmap |
WindowsのRPC(リモート・プロシジャ・コール)に使われる |
TCP/UDP |
445 |
microsoft-ds |
ダイレクト・ホスティングSMBによるファイル共有サービスに使われる |
 |
そのほかに閉じるべきWindows関連のTCP/UDPのポート |
遮断すべきパケットの種類からフィルタの内容を決める
遮断すべきパケットがおおよそ特定できたので、実際にパケット・フィルタリングの設定をブロードバンド・ルータで実行してみよう。基本的なフィルタの設定方針は下の表のとおりだ。
|
処理内容 |
通過方向 |
ポート番号(送信元) |
ポート番号(送信先) |
プロトコル |
フィルタその1 |
遮断 |
LAN→WAN |
− |
135 |
TCP |
フィルタその2 |
遮断 |
LAN→WAN |
− |
135 |
UDP |
フィルタその3 |
遮断 |
LAN→WAN |
− |
137 |
TCP |
フィルタその4 |
遮断 |
LAN→WAN |
− |
137 |
UDP |
フィルタその5 |
遮断 |
LAN→WAN |
137 |
− |
TCP |
フィルタその6 |
遮断 |
LAN→WAN |
137 |
− |
UDP |
フィルタその7 |
遮断 |
LAN→WAN |
− |
138 |
TCP |
フィルタその8 |
遮断 |
LAN→WAN |
− |
138 |
UDP |
フィルタその9 |
遮断 |
LAN→WAN |
− |
139 |
TCP |
フィルタその10 |
遮断 |
LAN→WAN |
− |
445 |
TCP |
フィルタその11 |
遮断 |
LAN→WAN |
− |
445 |
UDP |
 |
パケット・フィルタリングの設定 |
ここではIPアドレスを指定する必要がないので、表からは省いている。またWAN→LANの向きのフィルタ設定は、前述のようにIPマスカレードで遮断されるので、特に記していない(実際には、上記のフィルタ設定すべてをWAN→LANの通過方向にも適用すれば、この方向のパケットもフィルタリングされる)。フィルタの数が11個もあるのは、TCPとUDPを個別に記しているからだ。実際のところ、上記のどのポートも、TCPとUDPの両方とも遮断してよいので、ルータで設定可能ならTCPとUDPの指定を1つにまとめるとフィルタの数を減らせる。 |
注目してほしいのは、フィルタするポート番号は「送信先(ここではWAN側PC)」の方という点だ。これは、送信先すなわちインターネット側のホストにおけるNetBIOSなどのポートに対して、パケットが送信されるのを防ぐためでもある。逆にいえば、送信先ではなく送信元(ここではLAN側PC)のポートでフィルタしても、当該パケットは完全には阻止しきれない(漏れるパケットがある)はずだ。
また、137番だけは送信先ポートと送信元ポートの両方ともフィルタしている。これは、NetBIOS名の名前解決にDNSを使用するようにWindowsが設定されていると、送信元ポートが137番、送信先ポートが53番というDNSサーバへの名前解決要求パケットが生じるからだ。この場合、LAN内でしか使わないNetBIOS名がインターネット側(通常はISP)のDNSサーバに登録されているはずがないので、この名前解決は必ず失敗する。つまり無駄なパケットなので、可能ならフィルタで遮断すべきだろう。ただ、このパケットを遮断できなくても、LAN側にあるファイル・サーバなどのNetBIOS名がDNSサーバに漏れてしまう、という点を除けば、問題はないはずだ。
System Insider フォーラム 新着記事
- Intelと互換プロセッサとの戦いの歴史を振り返る (2017/6/28)
Intelのx86が誕生して約40年たつという。x86プロセッサは、互換プロセッサとの戦いでもあった。その歴史を簡単に振り返ってみよう
- 第204回 人工知能がFPGAに恋する理由 (2017/5/25)
最近、人工知能(AI)のアクセラレータとしてFPGAを活用する動きがある。なぜCPUやGPUに加えて、FPGAが人工知能に活用されるのだろうか。その理由は?
- IoT実用化への号砲は鳴った (2017/4/27)
スタートの号砲が鳴ったようだ。多くのベンダーからIoTを使った実証実験の発表が相次いでいる。あと半年もすれば、実用化へのゴールも見えてくるのだろうか?
- スパコンの新しい潮流は人工知能にあり? (2017/3/29)
スパコン関連の発表が続いている。多くが「人工知能」をターゲットにしているようだ。人工知能向けのスパコンとはどのようなものなのか、最近の発表から見ていこう
System Insider 記事ランキング
本日
月間