特集
Windows Server 2003 SP1レビュー

第2回 リモート・アクセス検疫機能

5.VPN接続と検疫スクリプト

デジタルアドバンテージ 打越 浩幸
2005/04/14

VPN接続プロファイルのインストール

 作成された接続プロファイルの実行ファイル(vpnconn.exe)をクライアント・コンピュータ上で実行すると、自動的に新しい接続用の設定ファイルがシステムにコピー、展開される。例えばWindows XP上では次のようになる。

Windows XP上にインストールされた接続プロファイル
プログラムを実行すると、このような接続プロファイルが自動的に作成される。
  作成されたプロファイル。

VPNサービスへのダイヤルアップ接続

 作成されたVPN接続プロファイルをダブルクリックすると、VPN接続するためのダイアログが表示される。ユーザー名とパスワード、ドメイン名を指定する。ただしVPNサーバのローカル・アカウントでログオンするなら、ドメイン名ではなくVPNサーバのコンピュータ名を指定する。

VPNサーバへの接続
接続プロファイルをダブルクリックして、VPNサーバへ接続してみる。
  ユーザー名。
  ドメイン名もしくはVPNサーバのコンピュータ名(このコンピュータのローカル・アカウントが使われる)。
  これをクリックすると、接続される。

 [接続]をクリックすれば、VPNサーバに接続後、検疫用のプログラム(この例ではquarantine.cmd)が実行され、チェック項目にパスしていれば、検疫状態が解除されているはずである。

 もし検疫の検査に合格しなければ、内部ネットワークへのアクセスは制限されている。例えば次のようになるであろう。

検疫中のpingの実行例
検疫モードでは、リモート・アクセス・ポリシーで許可した特別なコンピュータ(検疫リソース)しかアクセスできない。
  検疫リソース・コンピュータへのping。成功している。
  検疫リソースではないコンピュータへのping。失敗している。

 この例では、同じローカルのネットワーク・セグメント上に存在する2台のコンピュータへpingを行っている。上側の「10.20.1.11」は検疫モードでもアクセス可能なコンピュータ(検疫の入力フィルタで明示的に許可されているコンピュータ)であり、下側の「10.20.1.12」は許可されていないコンピュータなので、このような結果になっている。

 またこのモードでは接続可能な時間に制限があり、120秒経つと、次のように切断されてしまう。

検疫モードの猶予時間が終了した場合のダイアログ
VPN接続後、検疫にパスしなければ、このように強制的にVPNサーバ側から切断されてしまう。
  これをクリックするとまたVPNサーバへ接続するが、検疫の検査にパスしなければ、やはり120秒で切断される。

検疫用のスクリプト・プログラムの例

 いままでの例では、quarantine.cmdというプログラム(スクリプト)ファイルで検査と検疫モードからの解除を行っていた。この中で何を実行するかは、環境に応じて大きく変わる。非常に厳密でセキュアな環境を要求する組織では、例えばウイルス・チェックやOSのバージョン、パッチの適用状況、ファイアウォールの設定状態など、細かく検査するだろう。逆にあまり厳格でない組織ならば、OSのバージョンやService Packなどの状態を調べる程度かもしれない。

 ただ、検査内容がどうであれ、最後には必ず、検疫サーバ(検疫サービス)に対して、検査の結果がパスしたか、そうでないかという状態を返す必要がある(何も返さない場合は、失敗したものとみなされる)。そのために利用されるのがrqc.exeというクライアント側のプログラムである。

 次のリストは、最も単純なスクリプトの例である(これしか実行しないのでは検疫の意味がないが)。

※最もシンプルなquarantine.cmdの例

%1\rqc.exe /conn vpnconnections /sig "RASQuarantineConfigPassed" /log success

 「/sig "RASQuarantineConfigPassed"」は、照合用の文字列である。デフォルトではこの「RASQuarantineConfigPassed」という文字列が検疫サービスのレジストリに登録されており、それと同じ文字列を返さない限り検疫にはパスしない。必要ならばレジストリをカスタマイズして、組織ごとの文字列にしたり、プロファイルごとに異なる文字列を定義して、接続環境を使い分けたりすることができる(レジストリはHKLM\SYSTEM\CurrentControlSet の Services\rqs\AllowedSet)。

 より複雑なスクリプトの例については、Windows Server 2003 SP1のドキュメントやISA Server 2004のドキュメントなどを参照していただきたい。なお、このスクリプトは、接続マネージャ管理キットによって自動的にパッケージ化され、配布されることからも分かるように、もしスクリプトを変更すると、接続プロファイルの再パッケージ化と再配布、再インストールが必要になる。これが面倒ならば、例えばスクリプトから検疫リソース上のスクリプトを呼び出すようにしておき、変更する場合は検疫リソース上に配置したスクリプトだけを変更するなどの工夫が必要になるだろう。

 また実用的にするには、例えば検疫に失敗した場合は、検疫リソース上のWebサーバに誘導し、失敗の通知と可能な対処方法などをまとめたページを表示させたりするべきであろう。End of Article

※サンプルとして付属しているスクリプトの例

  @echo off

:CLEARVARS
  @rem ***
  @rem * Clear all used environment variables in the current users's context
  @rem * before starting the script
  @rem *

  set RQCLOC=
  set RQC_CONNNAME=
  set RQC_SIGNATURE=
  set RQC_DOMAIN=
  set RQC_USERNAME=
  set RQC_PORT=
  set RQS_LOGMESSAGE=

:INITIALIZATION
  @rem ***
  @rem * Define the locations for the source file (remove quarantine if this file exists) and
  @rem * the target file (the file to copy if the source file does not exist).
  @rem *
  @rem Use %ServiceDir% macro to locate rqc.exe.
  SET RQCLOC=%1\rqc.exe

  @rem Use %ServiceName% macro.
  if not -%2- == -- SET RQC_CONNNAME=/conn %2

  @rem RQC_SIGNATURE string used to validate the client
  @rem * Default String RASQuarantineConfigPassed
  @rem *
  if not -%3- == -- (SET RQC_SIGNATURE=/sig %3) else (set RQC_SIGNATURE=/sig RASQuarantineConfigPassed)

  @rem Use %DOMAIN% macro.
  if not -%4- == -- SET RQC_DOMAIN=/domain %4

  @rem Use %USERNAME% CM macro for this value.
  if not -%5- == -- SET RQC_USERNAME=/user %5
  (以下省略)
 
  関連リンク
  Networking and Communications Services
  Network Access Quarantine Control in Windows Server 2003[英語](マイクロソフト)
  Technical Overview of Windows Server 2003 Networking and Communications
  Step-by-Step Guide for Setting Up Network Quarantine and Remote Access Certificate Provisioning in a Test Lab
  The Cable Guy − 2004 年 12 月―Microsoft Windows Server 2003 Service Pack 1 の新しいネットワーク機能(マイクロソフトTechNet)
  Microsoft Windows Server 2003 ネットワーク アクセス検疫 (Quarantine) 制御(マイクロソフト)
  ISA Server 2004 による リモート アクセス VPN クライアントの検疫制御 ステップ バイ ステップ ガイド(マイクロソフト)
  ISA Server 2004 ダウンロード(マイクロソフト)
     

 INDEX
  [特集]Windows Server 2003 SP1レビュー
  第2回 リモート・アクセス検疫機能
    1.「リモート・アクセス検疫サービス」とは
    2.検疫サービスのインストール
    3.検疫ネットワーク用のリモート・アクセス・ポリシーの作成
    4.接続マネージャによる接続用設定のプロファイルの作成
  5.VPN接続と検疫スクリプト
 
目次ページへ  「特集」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間