■Windows Server 2003 SP1は,リモート・アクセス・クライアントの検疫機能を標準で備える。社内LANへの接続要件を満たしていないクライアントからのリモート・アクセスを制限できる。
■パスワードで認証した直後は,クライアントからアクセスできるネットワークが制限される。接続要件に合致していることを確認して制限を解除するためのスクリプトを独自に作成し,あらかじめクライアントに配布しておく必要がある。
■Windows Server 2003リソース・キットで既に提供されている機能だが,SP1に含められることになった。これによって,マイクロソフトのサポートが受けられるようになる。

(山口 哲弘)


 ネットワークのセキュリティ確保は非常に重要な問題だ。多くのユーザーは,ファイアウオールなどで保護したり,LANに接続するクライアントを厳重に管理したりして,社内LANの安全確保に努力していることだろう。だが,無防備なPCからのリモート・アクセスを許してしまうと,それが原因となって社内LAN全体が危険にさらされる場合がある。リモート・アクセスを許可するか否かは,今まではユーザー名とパスワードのみでしか判別しておらず,クライアントの設定を基にした制御ができなかったからだ。

 Windows Server 2003 Service Pack 1(SP1)が備える「リモート・アクセス検疫サービス」は,VPN(仮想プライベート・ネットワーク)やダイヤルアップによって社外からリモート・アクセスしてきたクライアントを検疫する機能である。あらかじめ社内LANに接続するのに必要な要件を定義しておき,その要件を満たしていないクライアントからアクセスされたときに,それを拒否したり,社内ネットワークとは別の制限付きネットワークにつないで要件を満たすのに必要なソフトウエアをインストールさせたりできる。元々Windows Server 2003リソース・キットで提供されていた機能だが,Windows Server 2003 SP1に含まれることになり,SP1の正式出荷後はマイクロソフトのサポートが受けられるようになる。

 社内LANへの接続要件は,最新のセキュリティ更新プログラム(パッチ)を適用しているか,ウイルス対策ソフトの定義ファイルを最新のものにしているか,パスワードで保護されたスクリーン・セーバーを有効にしているか,Windowsファイアウオールを有効にしているか——など自由に決められる。ただしそのためには,ユーザー(ネットワーク管理者)が独自にそれらの要件を調べるプログラム(スクリプト)を作る必要がある。本連載の第2回は,このリモート・アクセス検疫サービスについて,具体的なLAN構成を例にスクリプトを含めて説明する。


△ 図をクリックすると拡大されます
図1●想定したVPN環境
Active Directoryドメインを4台のサーバーで構成
 ここでは,図1のようなLANを例に挙げて説明する。ネットワーク構成は次の通りである。

 Windows Server 2003,Enterprise Editionが稼働するサーバーをActive Directoryドメインのドメイン・コントローラとし,社内LANに見立てたネットワークには全部で4台のサーバーがある。ドメイン名は「example.com」である。

 ホスト名「DC1」がドメイン・コントローラである。IPアドレスは「172.16.0.1」。Active Directoryのドメインに必要なDNSサーバーに加えて,DHCPサーバーと,リモート・アクセスの認証に使うインターネット認証サービス(RADIUSサーバー)も動かしている。ちなみにインターネット認証サービスを使わなくても,リモート・アクセスの検疫制御は可能である。

 ホスト名「CA1」は,Windows Server 2003,Enterprise Editionが稼働しているメンバー・サーバーだ。IPアドレスは「172.16.0.4」である。Internet Information Services(IIS)と証明書サービスを動かし,共有フォルダを作る。証明書サービスは,リモート・アクセス・クライアントがL2TP(レイヤー2トンネリング・プロトコル)で接続するのに必要な証明書を発行するために動かす。

 このサーバーは,リモート・アクセス・クライアントが社内LANへの接続要件を満たしていないときに,最新のセキュリティ更新プログラム(パッチ)など必要なソフトの取得先にする。すなわち,接続要件を満たしていなくても,リモート・アクセス・クライアントはこのサーバーにアクセスできるようにする。

 ホスト名「IIS1」は,Windows Server 2003,Standard Editionが稼働しているメンバー・サーバーである。IPアドレスは「172.16.0.3」だ。IISを動かすとともに,共有フォルダを作る。このサーバーには,接続要件を満たしたクライアントしかアクセスできない。

 以上の3つのサーバーには,Windows Server 2003 SP1は必ずしも必要ではない。

 ホスト名「VPN1」は,Windows Server 2003,Standard Editionが稼働しているメンバー・サーバーである。2枚のネットワーク・インターフェース・カード(NIC)を実装し,Windows Server 2003が標準で備えているルーティングとリモートアクセスによって,VPNサーバーとして構成する。ここでは認証にRADIUSサーバーを使う設定にしてあるが,Windows認証でもリモート・アクセス検疫サービスを利用できる。この場合はドメインのユーザー・アカウントが使われる。また,ワークグループ構成でも可能で,そのときはローカルのユーザー・アカウントを使って認証することになる。

 VPN1サーバーでは,Windows Server 2003 SP1のリモート・アクセス検疫サービスを動かす。社内LAN側のIPアドレスは「172.16.0.2」,インターネット(に見立てたネットワーク)側のIPアドレスは「10.0.0.2」である。

 ホスト名「CLIENT1」は,インターネット(に見立てたネットワーク)からリモート・アクセスしてくるクライアントである。ここではService Pack 2を適用したWindows XP Professionalが稼働するマシンを用意した。

リモート・アクセスの検疫制御をインストール
 実際に,上記のVPN1サーバーにリモート・アクセス検疫サービスを設定する前に,その仕組みを説明しよう。

 一般にVPNサーバーは,外部からアクセスしてきたリモート・アクセス・クライアントを,パスワードによって認証する。認証するとクライアントにIPアドレスを与えるが,リモート・アクセス検疫サービスが有効になっていると,クライアントはこの時点ではまだ社内LANのすべてのリソースにはアクセスできない。あらかじめサーバーに設定してある検疫に必要なデータ(パケット)だけが通信可能である。

 このときに通信可能にするデータに関しては,ネットワーク管理者が設定する(設定方法は後述)。そのため,検疫モードでもクライアントからアクセス可能なサーバーを設定したり,通信を特定のプロトコルに限定したり,検疫モードではアクセスできないサーバーを作ったりすることが自由にできる。


△ 図をクリックすると拡大されます
図2●[プログラムの追加と削除]でリモート・アクセス検疫サービスをインストールする

△ 図をクリックすると拡大されます
図3●リモート・アクセス検疫サービスはサービスとして登録される

 リモート・アクセス検疫サービスを有効にしたときは,パスワード認証後にクライアントで,ネットワーク管理者が独自に作ったスクリプトを動かす。このスクリプトで,社内LANへの接続要件を調べる。要件を満たしていることが確認できたら,そのスクリプトの最後でサーバーに通知メッセージを送って,検疫モードを解除する。この状態になって,リモート・アクセス・クライアントは,社内LANのすべてのサーバーにアクセスできるようになる。Windows Server 2003 SP1には,通知メッセージを送るクライアント用のコマンドとしてrqc.exeが,そのメッセージを待ち受けるサーバー向けにrqs.exeが用意されている。

 では,VPN1サーバーに,リモート・アクセス検疫サービスをインストールしよう。Windows Server 2003 SP1を適用しただけではインストールされないので,コントロール・パネルの[プログラムの追加と削除]−[Windowsコンポーネントの追加と削除]を使ってインストールする(図2)。インストールが完了したら,[Remote Access Quarantine Agent](rqs.exe)がサービスとして登録されているはずだ(図3)。ただし,まだ動作していない状態である。サービスを開始して,リモート・アクセス検疫サービスのサーバー側モジュールを動かす必要がある。管理ツールの[サービス]を使い,[ Remote Access Quarantine Agent]サービスのプロパティ設定画面で,[スタートアップの種類]を[自動]に設定しておけば,OSの起動と同時にサービスが開始される(図4)。


△ 図をクリックすると拡大されます
図4●サービスのプロパティ設定画面で,リモート・アクセス検疫サービスを動かす

△ 図をクリックすると拡大されます
図5●rqs.exeのためのレジストリを設定する

 そして,2つのレジストリ・キーを設定しておく(図5)。1つは,リモート・アクセス・クライアントから検疫モードを解除するための通知メッセージを送信する際に使用するカギである。これがサーバーの値と一致しないと,検疫モードを解除できない。この値が登録されているレジストリ・キーは,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\rqs\Allowed-Setで,デフォルトの値は「RASQuarantineConfigPassed」である。ここでは,「WindowsPro」に設定し直した。

 なお,このレジストリ・キーの種類はREG_MULTI_SZで,複数の文字列を設定できる。複数の文字列を設定してある場合,リモート・アクセス・クライアントから検疫モード解除の通知メッセージを送るときには,このレジストリ・キーに設定した複数の文字列のどれか1つに一致していればよい。

 もう1つのレジストリ・キーは,イベント・ログに,検疫サービスに関するログを残すためのものである。標準では,検疫に失敗したときなど,警告またはエラーだけしかログに記録しない。検疫に成功したときでも,リモート・アクセスがあったことをログに残しておくには,種類がREG_DWORDのHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\rqs\DebuggerTraceキーを作り,値を「4」に設定する。

 なお,上記2つのレジストリ・キーはベータ版の段階のもので,Windows Server 2003 SP1の製品版では変更される可能性がある。