リモートデスクトップサービス(RDS )は、 Windows Server 2008以前のバージョンではターミナルサービスとして知られており[1]、ネットワーク接続を介してリモートコンピュータまたは仮想マシン上で対話型セッションを開始および制御できるようにするMicrosoft Windowsのコンポーネントの1つです[ 2 ]。
RDS は、Microsoftによるシン クライアントアーキテクチャの実装であり、Windows ソフトウェアと RDS を実行しているコンピュータのデスクトップ全体が、リモート デスクトップ プロトコル(RDP) をサポートする任意のリモート クライアント マシンからアクセス可能になります。ユーザー インターフェイスはサーバーからクライアント システム上に表示され、クライアント システムからの入力はサーバーに送信され、そこでソフトウェアが実行されます。[ 3 ]これは、 Microsoft App-Vのようなアプリケーション ストリーミング システムとは対照的です。アプリケーション ストリーミングシステムでは、コンピュータ プログラムがオンデマンドでクライアントにストリーミングされ、クライアント マシン上で実行されます。
RDS は、ユーザーがリモートでログインできるようにするWindows NT 4.0 Serverのスタンドアロン版であるWindows NT 4.0 Terminal Server Edition のTerminal Serverとして 1998 年に初めてリリースされました。Windows 2000以降は、 Windows NTファミリーのオペレーティングシステムのサーバー版のオプション コンポーネントとしてTerminal Servicesという名前で統合され[ 4 ] 、 Windows の各バージョンで更新と改善を受けました [5]。Terminal Servicesは、2009 年に Windows Server 2008 R2 [ 6 ]でRemote Desktop Servicesに名前が変更されました。RemoteFXは、 Windows Server 2008 R2 Service Pack 1の一部として RDS に追加されました。
Windowsには、RDSを使用する4つのクライアントコンポーネントが含まれています。
最初の 2 つのユーティリティは、ユーザーがネットワーク経由でリモート コンピュータ上で対話型セッションを操作できるようにするものです。リモート アシスタンスの場合、リモート ユーザーは招待を受け取る必要があり、制御は協調的です。ただし、RDC の場合、リモート ユーザーはリモート コンピュータ上で新しいセッションを開き、ユーザー アカウントの権限と制限によって付与されたすべての権限を持ちます。[ 3 ] [ 7 ] [ 8 ]高速ユーザー切り替えにより、ユーザーはソフトウェアを終了したりログアウトしたりすることなく、ローカル コンピュータ上のユーザー アカウントを切り替えることができます。高速ユーザー切り替えはWinlogonの一部であり、切り替え機能を実現するために RDS を使用します。[ 9 ] [ 10 ]サードパーティの開発者も RDS 用のクライアント ソフトウェアを作成しています。たとえば、rdesktop はUnixプラットフォームをサポートしています。
Windows XP 以降、ほとんどの Windows エディションに RDS が同梱されていますが、[ 4 ]その機能はバージョンごとに異なります。Windows XP Home Edition (およびそれ以降の Windows Home SKU) では、RDC 接続は一切受け付けず、RDS は高速ユーザー切り替えとリモート アシスタンスのみに使用されます。他のクライアントバージョンの Windows では、コンソールにログオンしているユーザーが切断される代わりに、最大 1 人のリモート ユーザーがシステムに接続することしかできません。Windows Server では、 2 人のユーザーが同時に接続できます。このライセンス スキームは「管理用リモート デスクトップ」と呼ばれ、無人またはヘッドレス コンピューターの管理を容易にします。Windows のライセンスに加えて追加のライセンスを取得することによってのみ、Windows Server を実行しているコンピューターは、一度に複数のリモート ユーザーにサービスを提供し、仮想デスクトップ インフラストラクチャを実現できます。[ 6 ] [ 9 ]
組織にとって、RDS は IT 部門が複数のコンピュータではなく中央サーバーにアプリケーションをインストールできるようにします。[ 11 ]リモート ユーザーはネットワーク経由でログオンしてこれらのアプリケーションを使用できます。このような集中管理により、メンテナンスやトラブルシューティングが容易になります。RDS と Windows 認証システムは、不正なユーザーがアプリケーションやデータにアクセスすることを防止します。
マイクロソフトは、Microsoft Terminal Services とCitrix XenApp (旧 Citrix MetaFrame およびCitrix Presentation Server ) 間での技術共有と特許ライセンス供与を促進するため、 Citrixと長年にわたる契約を結んでいます。この契約により、Citrix は Windows プラットフォームの重要なソース コードにアクセスでき、開発者が Terminal Services プラットフォームのセキュリティとパフォーマンスを向上させることができます。2004 年 12 月下旬、両社はこの契約をWindows Vistaまで 5 年間更新することを発表しました。[ 12 ]
RDS の主要なサーバー コンポーネントはターミナル サーバー( ) で、 TCP ポート3389termdd.sysで待機します。リモート デスクトップ プロトコル(RDP) クライアントがこのポートに接続すると、一意のセッション IDがタグ付けされ、新しく生成されたコンソール セッション (セッション 0、キーボード、マウス、文字モードの UI のみ) に関連付けられます。次に、ログイン サブシステム (winlogon.exe) とGDIグラフィックス サブシステムが起動され、ユーザー認証と GUI の表示の処理が行われます。これらの実行ファイルは、コンソール セッションではなく、新しいセッションにロードされます。新しいセッションを作成すると、グラフィックスおよびキーボード/マウス デバイス ドライバが RDP 固有のドライバ (および) に置き換えられます。 はデバイス ドライバで、UI レンダリング呼び出しを RDP 経由で送信可能な形式にキャプチャします。はキーボードおよびマウス ドライバとして機能し、TCP 接続経由でキーボードおよびマウスの入力を受け取り、キーボードまたはマウスの入力として表示します。また、仮想チャネルの作成も可能で、これによりディスク、オーディオ、プリンタ、COM ポートなどの他のデバイスをリダイレクトできます。つまり、チャネルはこれらのデバイスの代替として機能します。チャネルは TCP 接続を介してクライアントに接続します。チャネルがデータにアクセスされると、クライアントに要求が通知され、TCP 接続を介してアプリケーションに転送されます。この手順全体はターミナル サーバーとクライアントによって実行され、RDP が適切な転送を仲介し、アプリケーションからは完全に透過的です。[ 13 ] RDP 通信は 128 ビットRC4暗号化を使用して暗号化されます。Windows Server 2003 以降では、 FIPS 140準拠の暗号化スキームを使用するか、トランスポート レイヤー セキュリティ標準を使用して通信を暗号化できます。[ 3 ] [ 14 ]RdpDD.sysRdpWD.sysRdpDD.sysRdpWD.sys
クライアントが接続を開始し、サーバーでターミナル サービス スタックの呼び出しが成功したことを通知されると、デバイスとキーボード/マウス ドライバがロードされます。RDP 経由で受信した UI データはデコードされ、UI としてレンダリングされますが、UI をホストするウィンドウへのキーボードとマウスの入力はドライバによって傍受され、RDP 経由でサーバーに送信されます。また、他の仮想チャネルを作成し、リダイレクトを設定します。RDP 通信は、低、中、高のいずれかの暗号化を使用して暗号化できます。低暗号化では、ユーザー入力 (送信データ) は弱い (40 ビット RC4) 暗号を使用して暗号化されます。中暗号化では、UI パケット (受信データ) もこの弱い暗号を使用して暗号化されます。「高暗号化 (非エクスポート)」設定では 128 ビット RC4 暗号化が使用され、「高暗号化 (エクスポート)」設定では 40 ビット RC4 暗号化が使用されます。[ 15 ]セキュリティレイヤーを「SSL (TLS 1.0)」に設定すると、トランスポートレイヤーセキュリティはバージョン1.2まで利用可能です。[ 16 ]
ターミナルサーバーは、ターミナルサービスのサーバーコンポーネントです。クライアントの認証と、アプリケーションをリモートで利用可能にする処理を担当します。また、クライアントのアクセスレベルに応じて制限する役割も担っています。ターミナルサーバーは、設定されたソフトウェア制限ポリシーを尊重し、特定のソフトウェアの利用を特定のユーザーグループのみに制限します。リモートセッション情報は、サーバーに保存されているセッションディレクトリと呼ばれる専用ディレクトリに保存されます。セッションディレクトリは、セッションの状態情報を保存するために使用され、中断されたセッションを再開するために使用できます。ターミナルサーバーは、これらのディレクトリの管理も行う必要があります。ターミナルサーバーはクラスタでも使用できます。 [ 3 ]
Windows Server 2008では、大幅に改良されています。ログオン時に、ユーザーがWindows Server ドメインアカウントを使用してローカル システムにログオンした場合、同じサインオンの資格情報を使用してリモート セッションを認証できます。ただし、これにはターミナル サーバー OS として Windows Server 2008 が必要であり、クライアント OS は Windows Server 2008、Windows Vista、およびWindows 7に限定されます。さらに、ターミナル サーバーは、RemoteAppと呼ばれる機能を使用して、デスクトップ全体ではなく個々のプログラムへの接続を許可するように構成できます。ターミナル サービス Web アクセス (TS Web アクセス) を使用すると、 Web ブラウザーから RemoteApp セッションを呼び出すことができます。これには、サーバーに展開されている RemoteApp のリストを管理し、リストを最新の状態に保つ TS Web アクセス Web パーツ コントロールが含まれます。ターミナル サーバーは、Windows システム リソース マネージャーと統合して、リモート アプリケーションのリソース使用を制限することもできます。[ 5 ]
ターミナル サーバーは、ターミナル サーバー マネージャーMicrosoft 管理コンソールスナップインによって管理されます。サインイン要件の構成や、リモート セッションの単一インスタンスの強制に使用できます。グループ ポリシーまたはWindows Management Instrumentationを使用して構成することもできます。ただし、クライアント バージョン Windows OS では利用できません。クライアント バージョンでは、サーバーはカスタマイズなしで、1 つのセッションのみを許可し、リモート セッションでユーザー アカウントの権限を強制するように事前に構成されています。[ 3 ]
リモートデスクトップ ゲートウェイサービス コンポーネント ( RD ゲートウェイとも呼ばれる) は、 HTTPSチャネルを使用して RDP セッションをトンネル化できます。[ 17 ]これにより、セッションをトランスポート レイヤー セキュリティ(TLS) でカプセル化することで、RDS のセキュリティが向上します。[ 18 ]また、 Internet Explorer をRDP クライアントとして使用するオプションも利用できます。macOS 用の公式 MS RDP クライアントは、バージョン8 以降 RD ゲートウェイをサポートしています。これは iOS および Android でも利用可能です。
この機能は、Windows Server 2008およびWindows Home Server製品で導入されました。
2021年10月、FreeRDPプロジェクトの主要な貢献者であるThincastは、Linux上でネイティブに動作する最初のリモートデスクトップゲートウェイソリューションを公開した。[ 19 ]
RemoteApp (またはTS RemoteApp ) は、Windows Server 2008 R2 以降で利用できる RDS の特別なモードで、リモート セッション構成がクライアント オペレーティング システムに統合されています。RDP 6.1 クライアントは、Windows XP SP3、Windows XP SP2 ユーザー向けの KB952155、[ 21 ] Windows Vista SP1、および Windows Server 2008 に付属しています。RemoteApp の UI はローカル デスクトップ上のウィンドウにレンダリングされ、ローカル アプリケーションの他のウィンドウと同様に管理されます。その結果、リモート アプリケーションはローカル アプリケーションとほぼ同じように動作します。リモート セッションの確立とローカル リソースのリモート アプリケーションへのリダイレクトのタスクは、エンド ユーザーには透過的です。[ 22 ] 1 つの RemoteApp セッションで複数のアプリケーションを起動でき、それぞれ独自のウィンドウを持ちます。[ 23 ]
RemoteApp は、ファイルとしてパッケージ化することも、 Windows インストーラ.rdpパッケージを介して配布することもできます。ファイルとしてパッケージ化されている場合 (RemoteApp サーバーのアドレス、使用する認証スキーム、その他の設定が含まれています)、RemoteApp はファイルをダブルクリックすることで起動できます。リモート デスクトップ接続クライアントが起動され、サーバーに接続して UI をレンダリングします。RemoteApp は、 Windows インストーラデータベースにパッケージ化することもできます。インストールすると、スタート メニューに RemoteApp が登録され、起動するためのショートカットが作成されます。RemoteApp は、ファイル タイプまたは URI のハンドラーとして登録することもできます。RemoteApp に登録されたファイルを開くと、まずリモート デスクトップ接続が起動され、ターミナル サーバーに接続してからファイルを開きます。リモート デスクトップ経由でアクセスできるアプリケーションは、すべて RemoteApp として提供できます。[ 22 ] [ 24 ].msi.rdp
Windows 7にはRemoteAppの公開機能が組み込まれていますが、Microsoft WindowsのクライアントバージョンにはRemoteApp管理コンソールがないため、レジストリで手動で有効にする必要があります。[ 25 ]
Windows Vista以降では、ターミナル サービスには、 Windows デスクトップ共有と呼ばれるマルチパーティ デスクトップ共有機能も含まれています。ターミナル サービスが RDP 接続ごとに新しいユーザー セッションを作成するのとは異なり、Windows デスクトップ共有は、新しいセッションを作成することなく、現在ログオンしているユーザーのコンテキストでリモート セッションをホストし、デスクトップまたはそのサブセットを RDP 経由で利用できるようにします。[ 26 ] Windows デスクトップ共有は、デスクトップ全体、特定の領域、または特定のアプリケーションを共有するために使用できます。[ 27 ] Windows デスクトップ共有は、マルチ モニター デスクトップを共有するためにも使用できます。アプリケーションを個別に共有する場合 (デスクトップ全体ではなく)、ウィンドウは (最小化されているか最大化されているかに関わらず)、サーバー側とクライアント側で独立して管理されます。[ 27 ]
この機能は、公開APIを介してのみ提供され、どのアプリケーションでも画面共有機能を提供するために使用できます。 Windows デスクトップ共有 API は、RDPSession共有セッション用とRDPViewerビューア用の 2 つのオブジェクトを公開します。 1 つのセッション オブジェクトに対して、複数のビューア オブジェクトをインスタンス化できます。 ビューアは、スクリーンキャストのようにアプリケーションを視聴するだけの受動ビューア、またはリモート アプリケーションとリアルタイムで対話できるインタラクティブ ビューアのいずれかになります。[ 26 ]オブジェクトRDPSessionには、共有アプリケーションがすべて含まれており、Applicationそれぞれがオブジェクトとして表現され、各オブジェクトにはWindow画面上のウィンドウを表すオブジェクトがあります。 アプリケーションごとのフィルタは、アプリケーションのウィンドウをキャプチャし、Windowオブジェクトとしてパッケージ化します。[ 28 ]ビューアは、共有セッションに接続する前に認証を行う必要があります。これは、をInvitation使用してを生成することによって行われますRDPSession。これには、認証チケットとパスワードが含まれます。 オブジェクトはシリアル化され、ビューアに送信されます。ビューアは、Invitation接続時にを提示する必要があります。[ 26 ] [ 28 ]
Windows デスクトップ共有 API は、Windows Meeting SpaceおよびWindows Remote Assistanceによって、ネットワーク ピア間でアプリケーション共有機能を提供するために使用されています。[ 27 ]
ネットワークレベル認証(NLA )は、RDPサーバーまたはリモートデスクトップ接続(RDPクライアント)の機能であり、接続するユーザーがサーバーとのセッションを確立する前に認証を行う必要があります。
従来、ユーザーがサーバーへのRDP(リモートデスクトップ)セッションを開くと、サーバーからログイン画面が読み込まれていました。これはサーバーのリソースを消費し、サービス拒否攻撃やリモートコード実行攻撃の潜在的な脆弱性となっていました(BlueKeepを参照)。ネットワークレベル認証では、クライアント側のセキュリティサポートプロバイダを介してクライアントからユーザーの認証情報を委任し、サーバー上でセッションを確立する前にユーザーに認証を求めます。
ネットワークレベル認証は RDP 6.0 で導入され、当初はWindows Vistaでサポートされました。これは、Windows Vista のSSPIを介して利用できる新しいセキュリティ サポート プロバイダーである CredSSP を使用します。Windows XP Service Pack 3 では、CredSSP がそのプラットフォームに導入され、付属の RDP 6.1 クライアントは NLA をサポートしていますが、最初にレジストリで CredSSP を有効にする必要があります。[ 29 ] [ 30 ]
ネットワークレベル認証の利点は以下のとおりです。
リモート デスクトップ接続は、リモート デスクトップ サービスの主要なクライアントです。RDC は、リモート システムのデスクトップ インターフェイス (またはアプリケーション GUI) を、ローカルでアクセスしたかのように表示します。[ 34 ] Microsoft Remote Desktop は、タッチ操作に適したインターフェイスを備えたクライアントとして、2012 年に Microsoft によって作成されました。さらに、Microsoft 以外のクライアントもいくつか存在します。
{{cite web}}: CS1 maint: url-status (リンク)