Windows Server 2008 R2: ネットワーク レベル認証を使用すべき理由

従来のターミナル サービスの代わりにネットワーク レベル認証 (NLA) を使用すると、より迅速で安全なリモート接続を実現できます。

Kristin Griffin

Windows Server 2003 のターミナル サービスから Windows Server 2008 R2 のリモート デスクトップ サービスへの移行は、かなり一般的なアップグレード パスになっています。リモート デスクトップ サービスにアップグレードしたユーザーからは、この 2 つのバージョンでは、どうしてユーザーの接続エクスペリエンスが、これほどまで違うのかという声が聞こえます。

Windows Server 2003 のターミナル サーバーに接続するとき、ユーザーは、セッションを開始して、資格情報を入力します。一方、RD セッション ホスト サーバーを使用している場合、通常、ユーザーは、クライアント側のダイアログ ボックスで資格情報を入力します。既定では、ネットワーク レベル認証 (NLA) というテクノロジをサポートしないクライアントは、RD セッション ホスト サーバーに接続できません。この違いの理由を説明しましょう。マイクロソフトが、ネットワーク レベル認証を導入したのには理由があり、これが良いテクノロジであることには理由があります。

NLA を使用すべき理由

NLA では、サーバーがユーザーのセッションを作成する前に、認証に使用するユーザーの資格情報を提示するようクライアント コンピューターに強制します。このようなプロセスから、これは ”事前認証” と呼ばれることがあります。NLA は、Windows Server 2008/Vista 以降を実行しているサーバーと Windows XP SP3 以降を実行しているクライアントでサポートされています。NLA では、Credential Security Support Provider (CredSSP) プロトコルと呼ばれるテクノロジを使用するため、別の OS 対応のリモート デスクトップ プロトコル (RDP) クライアントを使用している場合は、NLA がサポートされているかどうかを開発者に確認する必要があります。

今度は、セッションを作成する前に資格情報を提示するのが良いことである理由を説明しましょう。接続を試行しているユーザーに接続する権利があるかどうかを確認するまでセッションを作成しない主なメリットは 2 つあります。それは、サービス拒否 (DoS) 攻撃に対する防御層を提供することと、仲介の処理速度を上げられることです。

セッションを開始するには (単にログオン画面を表示するだけでも)、サーバー側で、セッションをサポートするのに必要な多くのプロセス (Csrss.exe や Winlogon.exe など) を作成する必要があります。そのため、セッションの作成には、コストと時間がかかります。多数の権限のないユーザーが同時にセッションへの接続を試行すると、サーバーでは、不正なログイン資格情報を受け取るためにセッションを作成するため、他のユーザーがサーバーを使用できなくなる可能性があります。

パフォーマンスの問題は、さらに重要です。Windows Server 2003 では、ファームは比較的珍しいものでしたが、Windows Server 2008 以降では、より一般的なものになりました。RD セッション ホスト ファームに配置されている各サーバーは、潜在的にリダイレクターであることを思い出してください。要求を RD 接続ブローカーにリダイレクトする前に、ホスト サーバーで完全なセッションを作成する必要がある場合、接続の確立にかかる時間が長くなります。

NLA では、CredSSP を使用して、セッションを作成する前に、認証に使用するユーザーの資格情報をサーバーに提示します。このプロセスにより両方の問題を回避できます。CredSSP を使用するメリットは他にもあります。CredSSP では、接続ごとに資格情報を格納することで、ユーザーのログオン回数を減らすことができます。

新しいサーバー、仮想マシン (VM)、または別のコンピューターに初めて接続するとき、ユーザーは、資格情報を提示する必要がありますが、資格情報を保存するオプションを選ぶことができます。このオプションを選択すると、ユーザーは、パスワードを変更するまで、その特定の接続を確立するときに資格情報を提示する必要がなくなります。

CredSSP で NLA がサポートされるしくみ

CredSSP プロトコルは、アプリケーションが、クライアントから接続先のサーバーにユーザーの資格情報を安全に委任するのに役立ちます。このプロトコルでは、まず、(RFC2246 の規定に従って) クライアントと接続先のサーバー間に、トランスポート層セキュリティ (TLS) を使用して暗号化されたチャネルを確立します。

RDC 6.x 以降のクライアントを使用して RD セッション ホスト サーバーに接続すると、資格情報を提示するときに、RD セッション ホスト サーバーのログオン画面に直接接続していないことにお気付きの方もいらっしゃるかもしれません。代わりに、クライアント側で資格情報を受け取るために、ローカルのダイアログ ボックスが表示されています。このダイアログ ボックスは、CredSSP のフロント エンドです。

このダイアログ ボックスに資格情報を入力すると、資格情報を保存することを選択しなくても、資格情報は CredSSP に渡されます。CredSSP では、セキュリティで保護されたチャネル経由で資格情報を RD セッション ホスト サーバーに渡します。RD セッション ホスト サーバーでは、資格情報を受理するまでユーザー セッションの作成を開始しません。

CredSSP と RDP 6.x 以降をサポートしているクライアントでは、使用できる場合には、NLA を常に使用します。CredSSP (NLA をサポートするテクノロジ) は、OS の構成要素であって RDP の構成要素ではないため、NLA が機能するためには、クライアント OS で CredSSP がサポートされている必要があります。

Windows XP SP2 対応の RDC 6.0 クライアントはありますが、このクライアントを使用しても、Windows XP SP2 で NLA を使用することはできません。Windows XP SP3、Windows Vista、および Windows 7 を実行しているクライアントでは、CredSSP がサポートされています。RDC では、バージョン情報で NLA がサポートされているかどうかを確認できます。この情報を確認するには、RDC の左上端にあるコンピューターのアイコンをクリックし、[バージョン情報] をクリックします。バージョン情報では、NLA がサポートされているかどうかに関する情報が表示されます。

Windows XP SP3 では、CredSSP がサポートされていますが、既定では有効になっていません。CredSSP を有効にするには、サポート技術情報でマイクロソフトが公開している Fix It for Me リンクを使用できます。この記事では、CredSSP を手動で有効にする方法も紹介しています。CredSSP を有効にしたら、コンピューターを再起動します。

クライアント コンピューターが NLA をサポートするように構成されていない場合、NLA を使用する必要があるコンピューターに対してリモート接続を確立しようとすると、そのことを通知するメッセージが表示されます。たとえば、Windows XP SP3 クライアントで CredSSP が有効になっていない場合、NLA を使用する必要がある RD セッション ホスト サーバーに対してリモート接続を試行すると "リモート コンピューターには、お使いのコンピューターでサポートされていないネットワーク レベルの認証が必要です" というエラー メッセージが表示されます。

NLA の使用を強制する方法

RD セッション ホスト サーバーでは、既定で NLA を使用する必要はなく、NLA をサポートするコンピューターからの接続のみを許可するように RD セッション ホスト サーバーを構成することができます。この構成は、グループ ポリシーを使用するか RD セッション ホスト構成でサーバーごとに設定できます。

RD セッション ホスト サーバーへの接続で NLA を使用することをサーバーごとに強制するには、RD セッション ホストの構成を開きます。([接続] セクションにある) [RDP-Tcp] をダブルクリックし、[全般] タブで [ネットワーク レベル認証でリモート デスクトップを実行しているコンピューターからのみ接続を許可する] チェック ボックスをオンにします。この設定により NLA をサポートしないクライアント (つまり、RDC 6.x 以前を実行しているクライアントと CredSSP をサポートしていない OS を実行しているクライアント) はサーバーに接続できなくなります。

グループ ポリシーを使用して NLA を有効にするには、"リモート接続にネットワーク レベル認証を使用したユーザー認証を必要とする" ポリシーを有効にして、RD セッション ホスト サーバーの OU に適用します。このポリシーには、[コンピューターの構成]、[ポリシー]、[管理用テンプレート]、[Windows コンポーネント]、[リモート デスクトップ サービス]、[リモート デスクトップ セッション ホスト]、[セキュリティ] を展開するとアクセスできます。

このポリシーを無効にする (または、構成しない) 場合、NLA は不要ということになります。

VDI の要求

仮想デスクトップ インフラストラクチャ (VDI) の展開では、Windows Vista と Windows 7 が、NLA をサポートするクライアントからの接続要求のみを受け付けるように制限することもできます。これには、コントロール パネルの [システム] の [リモート設定] にアクセスし、[システムのプロパティ] ダイアログ ボックスの [リモート] タブで [ネットワーク レベルの認証でリモート デスクトップを実行しているコンピューターからのみ接続を許可する (セキュリティのレベルは高くなります)] を選択します。

これで、RD セッション ホスト サーバーと VDI の VM で NLA を有効にすることを推奨する理由がおわかりいただけたと思います。サーバーと VDI の VM で NLA の使用を強制する方法と NLA をサポートするようにクライアント コンピューターを設定する方法を理解する必要があります。

簡単にしか触れませんでしたが、証明書は、RDS 展開に必要不可欠です。また、NLA のみならず、RD ゲートウェイ、RD Web アクセス、および RD 接続ブローカーを使用するサーバー認証においても重要です。次回は、RDS 展開に関する証明書の要件について詳しく説明します。

Kristin Griffin

Kristin Griffin は、リモート デスクトップ サービスの MVP です。サーバー ベース コンピューティングのコミュニティに役立つマイクロソフト フォーラム (リモート デスクトップ サービス) を運営しており、RDS に関するブログ (blog.kristinlgriffin.com、英語) を公開しています。また、Mark Minasi の著書『Windows Server 2008 パーフェクトガイド』(翔泳社、2010 年) と『Windows Server 2008 R2 パーフェクトガイド』(ソフトバンククリエイティブ、2010 年) の執筆に貢献し、『Microsoft Windows Server 2008 Terminal Services Resource Kit』(Microsoft Press、2008 年) と『Microsoft Windows Server 2008 R2 Remote Desktop Services Resource Kit』(Microsoft Press、2010 年) を Christa Anderson と共同で執筆しました。

NLA に関する Q&A:

Q. Windows XP SP3 を実行しています。CredSSP を有効にしましたが、NLA を使用する必要がある RD セッション ホスト サーバーに接続すると "認証エラーが発生しました" というエラー メッセージが表示されます。

A.私のブログ (英語)で、この問題を解決する修正プログラムを紹介しています。  

このエラー メッセージは、次の条件を満たす特定の状況下で表示されます。

  • クライアントで Windows XP SP3 を実行しており、CredSSP が有効になっている。
  • 本物の SSL 証明書を使用するようにサーバーを構成している (既定で配置されている自動生成された証明書を使用していない)。
  • クライアントが、サーバーで使用している SSL 証明書の署名に使用した CA の証明書を信頼していない。

NLA では、証明書を受け取るのにセキュリティで保護されたチャネルが必要ですが、クライアントが証明書を信頼していない場合、このチャネルを作成できないため、NLA は機能しません。この問題を修正するには、RD セッション ホスト サーバーの SSL 証明書の署名に使用した証明書が、Windows XP クライアントの信頼されたルート証明機関の証明書ストア フォルダーにインストールされているようにします。

注: このエラー メッセージは、RDC 6.x と RDC 7.0 で多少異なる可能性があります。RDC 7.0 をインストールしている場合は、" リモート コンピューターから予期しないサーバー認証証明書を受け取ったため、接続は終了しました" というエラー メッセージが表示されることがあります。

関連コンテンツ