実験 第2回 Windowsのファイル共有サービスをブロックする(2)
|
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 - ホストのネットワーク統計や状態を確認する」が詳しいので、参照していただきたい。
|
|||
テスト環境のLAN側PCにてnetstat -a -nコマンドを実行したところ | |||
ポート137〜139番が利用されている様子が分かる。 | |||
|
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サーバに漏れてしまう、という点を除けば、問題はないはずだ。
関連記事(PC Insider内) | |
ネットワーク・デバイス教科書:第13回 ブロードバンド・ルータのセキュリティ設定 |
関連リンク | |
netstat - ホストのネットワーク統計や状態を確認する | |
Windows TIPS:ポート445(ダイレクト・ホスティングSMBサービス)に注意 |
INDEX | ||
[実験]ビギナー管理者のためのブロードバンド・ルータ・セキュリティ講座 | ||
第1回 ルータ内蔵の設定用サーバへのアクセスを制限するには | ||
第2回 Windowsのファイル共有サービスをブロックする(1) | ||
Windowsのファイル共有サービスをブロックする(2) | ||
Windowsのファイル共有サービスをブロックする(3) | ||
「PC 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)
スパコン関連の発表が続いている。多くが「人工知能」をターゲットにしているようだ。人工知能向けのスパコンとはどのようなものなのか、最近の発表から見ていこう
|
|