0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第15回 リモート管理: RDPの脆弱性を防ぐ「NLA」と証明書設定

0
Posted at

はじめに

Windowsの画面をそのまま操作できるRDP(Remote Desktop Protocol)は非常に便利ですが、サイバー攻撃者にとっても絶好の標的です。過去に猛威を振るった「BlueKeep」をはじめ、RDPの脆弱性を狙った不正アクセスやランサムウェアの感染被害は後を絶ちません。

RDPを安全に運用するための2大防壁が、「NLA(ネットワークレベル認証)」「カスタムSSL/TLS証明書」の設定です。本記事では、これらを用いたRDPの要塞化手順を解説します。


1. NLA(ネットワークレベル認証)とは?

通常のRDP接続では、クライアントがサーバーに接続すると、まずサーバーのログイン画面(Windowsのサインイン画面)が描画されます。実は、この「ログイン画面を表示する」という処理自体がサーバーのリソースを消費し、脆弱性を突かれるリスクを生んでいました。

NLA(Network Level Authentication)は、この順序を逆転させます。

  • 接続前に認証: ユーザーの資格情報(ID/パスワード)を、RDPセッションが確立してWindowsの画面が描画される「前」に検証します。
  • メリット: 認証されていない攻撃者は、サーバーのRDPサービス本体に触れることすらできません。これにより、DoS攻撃や未認証の脆弱性悪用(リモートコード実行など)を根本から防ぎます。

2. NLAの強制設定手順

NLAは現在のWindowsでは既定で有効なことが多いですが、古い環境や設定変更されたサーバーでは無効になっている場合があります。必ず強制(必須化)しておきましょう。

システムのプロパティから設定(手動)

  1. sysdm.cpl(システムのプロパティ)を開きます。
  2. 「リモート」タブを選択します。
  3. 「ネットワーク レベル認証でリモート デスクトップを実行しているコンピューターからのみ接続を許可する (推奨)」にチェックを入れます。

PowerShellでの確認と有効化

状態確認:

(Get-CimInstance -Namespace root/CIMV2/TerminalServices -ClassName Win32_TSGeneralSetting).UserAuthenticationRequired

1 が返ってくれば有効(強制)状態です。0 の場合は無効です。

強制無効化から有効化への変更:

Set-CimInstance -Namespace root/CIMV2/TerminalServices -Query "Select * from Win32_TSGeneralSetting" -Property @{UserAuthenticationRequired = 1}


3. 自己署名証明書から「信頼されたカスタム証明書」への変更

RDP接続時、初めて接続するサーバーで以下のような警告画面を見たことはないでしょうか?

「このリモート コンピューターの身元を識別できません。接続しますか?」

これは、Windowsが既定で「自動生成された自己署名証明書(オレオレ証明書)」を使って通信を暗号化しているために発生します。

自己署名証明書のセキュリティリスク

暗号化自体は行われますが、「接続先が本当に本物のサーバーか」を検証できません。そのため、攻撃者が通信の間に割り込む「中間者攻撃(MITM)」に対して脆弱であり、RDPの認証情報を盗まれるリスクが残ります。

組織の社内認証局(Active Directory証明書サービスなど)や信頼されたパブリック認証局から発行されたカスタム証明書をRDPに割り当てることで、このリスクを排除します。

RDPへのカスタム証明書割り当て手順(PowerShell)

インポート済みの信頼された証明書の「サムプリント(Thumbprint)」を、リモートデスクトップサービス(wmic / TerminalServices)に登録します。

# 対象の証明書のサムプリントを指定
$thumbprint = "A1B2C3D4E5F67890A1B2C3D4E5F67890A1B2C3D4"

# RDPサービス(Terminal Services)に証明書を紐付け
$path = (Get-WmiObject -Namespace "root\CIMV2\TerminalServices" -Class "Win32_TSGeneralSetting" -Filter "TerminalName='RDP-Tcp'")
$path.SSLCertificateSHA1Hash = $thumbprint
$path.Put()

設定後、リモートデスクトップサービス(TermService)を再起動するか、OSを再起動することでカスタム証明書が適用され、クライアント側での警告表示が消えます。


4. RDP要塞化チェックリスト

NLAと証明書に加えて、以下の対策を組み合わせることでRDPの防御力は最大化します。

対策項目 推奨設定 目的
ポート番号の変更 デフォルトの 3389 からランダムなポートへ変更 自動スキャンによる攻撃の標的から外れる(気休めですがログの肥大化を防げます)
接続元IP制限 Windows Defender Firewallで接続元を特定のセグメント/IPに絞る 外部からの不正なアプローチを遮断する
アカウントロックアウト 一定回数認証に失敗したらアカウントを一時ロック ブルートフォース(総当たり)攻撃の無効化

まとめ

RDPのセキュリティにおいて、「NLAによる事前認証」「信頼された証明書による中間者攻撃対策」は必須の組み合わせです。

「社内ネットワークだから安心」と自己署名証明書の警告を無視し続ける運用は、万が一の内部侵入時に被害を拡大させる原因になります。安全なリモート管理環境を構築するために、すべてのRDPサーバーの構成を今一度見直してみましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?