Q

社内でワームが広がることを避けるため,部門間にもファイアウオールを設置することにしました。

 しかし,社内ではActive Directoryの認証やWindowsのファイル共有など,インターネットと通信する場合と異なる通信が広く使われています。ファイアウオールでは,どのようなポートを通すように設定すればよいのでしょうか?

A

Active Directoryを使ったユーザー認証には,いくつかのステップがあります(図7)。

図7●Windowsがサーバーとの通信によく使うプロトコルとポート
社内にファイアウオールを設置する場合は,これらのポートを開けるようにしないと認証やファイル共有ができなくなる。

 まず,ユーザーが使っているクライアントは,認証を受けるドメイン・コントローラ(DC)に関する情報を受け取るためにDNSサーバーに接続します。

 このときに使うのはTCP接続とUDP接続のポート53番です。

 次に,クライアントはLDAP(ライトウェイト・ディレクトリ・アクセス・プロトコル)のPingを使って,指示されたDCへの接続を確認します。

 このときに使用しているのが,UDP接続のポート389番です。

 接続が確認されると,KerberosとSMB*のプロトコルを使ってユーザーの認証を受けます。このときに使うのが,KerberosはTCP接続とUDP接続のポート88番,SMBはTCP接続とUDP接続のポート445番です。

 つまり,Active Directoryでユーザーを認証するためには,DNSサーバーと適切なDCが存在するセグメントとの間に存在するファイアウオールで,これらのポートを使った通信ができるようにしておく必要があります。

古いOSを使っている場合は要注意
 もちろん,クライアントがユーザー認証以外の機能を利用している場合は,それらに関するポートも開いておく必要があります。

 例えば,Windowsサーバーで最も使われるのがファイル/プリンタ共有でしょう。この場合,サーバーとクライアントの両方がWindows 2000以降になっていれば,DCへのSMB認証と同じTCP接続とUDP接続のポート445番のみの通信ができるようにするだけで大丈夫です。

 ただし,Windows NTやMe,9xといった古いOSが混在している場合は注意が必要です。Windows 2000以降ではCIFSと呼ぶ新しいプロトコルを使ってポート445番のみでファイル/プリンタの共有が可能ですが,古いOSではこのCIFSをサポートしていません。この場合は,以前から使っているポート137/138/139番について通信できるようにする必要があります。

 また,Windowsサーバー標準のターミナル・サービスを使っている場合は,TCP接続のポート3389番を開いておくことも覚えておくとよいでしょう。

John Savill's FAQ for Windows