Windows基礎

【リモートデスクトップ】の仕組みとセキュリティ強化~インターネット接続と暗号化~

リモートデスクトップの仕組み

リモートデスクトップは、遠隔地にある Windows の画面を、IP ネットワーク越に見ることができるプロトコルです。

主に Windows サーバへの接続に使われますが、Windows PC (Pro) への接続にも使えます。

接続にはデフォルトで TCP 3389 番ポートと UDP 3389 番ポートが使われます。

やり取りする情報はいわゆる KVM 情報、つまりキーボード/マウス情報を送り、画面情報を取得するのです。

TCP は SSL/TLS による暗号化が行われており、通信傍受に対しては耐性を持ちます。TLS なので (証明書による) 公開鍵認証は行われますが、そもそも証明書自体が自己署名証明書なので、認証機能としては期待できません。

接続時に『リモートコンピューターは、セキュリティ証明書に問題があったため認証されませんでした。続行すると安全でない可能性があります。』と表示されます (下図) が、このことです。

UDP は画面情報の体感を向上させるために使われているようですが詳細は不明です。UDP だけをファイアウォールで閉じても利用には問題無いようです。

リモートデスクトップをインターネット公開するためのセキュリティ強化

まず、原則を言うとリモートデスクトップはインターネットから直接接続出来るようにすべきではありません

暗号化されているため通信傍受は容易ではありませんが、今のところパスワードによる認証しかできず、しかもデフォルト設定だと何度間違えてもロックされないため、攻撃は試され放題です。

でもどうしてもインターネットから実施したいのだと言うのであればそれなりのセキュリティ対策をすべきです。ここでは考え得る対策を紹介します。

1. IPsec-VPNやSSL-VPNを導入し、VPN経由にする

IPsec-VPN 装置や SSL-VPN 装置を使えば、多要素認証やワンタイムパスワード等の様々なセキュリティ強化が可能です。

まずは VPN 装置に接続し、VPN 経由時の送信元 IP からのみ受け付けるようにすればセキュアになります。

Fortigate 等を使えば安価に構築が可能です。

【FG60E】セキュアなリモートIPsec VPN+FortiClientの設計・構成設定例
やりたいこと FortiGate 60E (FortiOS v6.2.2) を...

2. 接続元IPアドレスを絞る

NW 機器のファイアウォールや Windows Firewall 等を使って、送信元 IP によるアクセス制限を行いましょう。

利用者がどのグローバル IP アドレスを使うかを確認した上で、そのグローバル IP からのみ TCP/UDP:3389 の通信を許可するわけです。

3. セキュリティポリシーの強化

サーバ側の『ローカルセキュリティポリシー』等により、RDP 接続時に関するセキュリティポリシーの強化ができます。

Windowsキー + R ⇒ 『ファイル名を指定して実行』にて "secpol.msc" と入力し Enterすると『ローカルセキュリティポリシー』が表示されます。

まずは『パスワードのポリシー』にてパスワードの長さや有効期間などを設定。


次に『アカウントロックアウトのポリシー』にてパスワード間違え時のアカウントロックを設定。

そして『ネットワーク経由でのアクセス』にてRDPでログインできるユーザを限定。

ここでは Administrators 等は禁止し、個人を識別できるアカウントを作成して登録すべきです。

4. ポート番号を変更する

TCP/UDP: 3389 を変更し、攻撃者から推測しにくくします。変更するためにはレジストリの変更が必要です。

Windowsキー + R ⇒ 『ファイル名を指定して実行』にて "regedit" を入力し、Enter

場所:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
レジストリ名:PortNumber



ここを例えば 65432 に変更して再起動します。これで TCP も UDP もポート番号が 65432 に変わります。

ファイアウォールの穴あけを忘れずにしましょう。

RDPのパケットキャプチャを覗いてみる

RDP で使われる TLS のバージョンは現在 1.2 になっていますが、少しカスタマイズが入っているようで、完全な RFC 準拠にはなっていません。

パケットキャプチャを Wireshark で見てみると "Ignore Unknown Record" と表示され、RFC 規格には存在しない [ Record Type=0x03 ] が埋め込まれています。

他は RFC のものに非常に似通っていますが、ネゴの最後の "Finished" が無く、Encrypted Handshake Message でネゴを締めています。

UDP は以下のように Client<->Server 間で互いにやり取りしています。(詳細は不明)

【厳選 3 冊】Windows を学ぶための本

Windows Serverのエディションやライセンス、用語といった基本から、セットアップ、ネットワーク、ユーザー/グループ、ディスク、ハードウェア、アクセス許可、クォータ、ボリュームシャドウコピー(VSS)、ファイル/フォルダー共有、プリンター、サーバー管理、WebサーバーやFTPサービスを提供するInternet Information Services(IIS) 10.0、Hyper-Vやコンテナー等の仮想化技術、Active Directoryまで説明します。
Active Directoryの概念および導入、構成管理方法を詳細な手順と豊富な画面を使ってわかりやすく解説します。本書では、ドメインサービスを中心に解説し、その他のサービスについても概要を解説します。Active Directoryを初めて使う方でも、画面を見ながら手順に従って操作するだけで簡単に目的の作業を行うことができます。ある程度使いなれている方には、Active Directoryをより使いこなすためのリファレンスとしてお使いいただけます。

全操作、全機能が載ってるから迷わない!基本から便利技・トラブル対応まで全部わかる!基本の操作から最新アプリ、昔ながらの操作も全部できる!はじめてのタッチ操作、はじめてのWindows10の人も安心!「やりたいこと」がすぐできるTIPS400!わかりやすい索引で「あれがしたい」「これがしたい」から探せる、側にあれば安心な1冊!自由自在Windows10を操ろう。

コメント

タイトルとURLをコピーしました