はじめに
AzureでWindowsVMのメンテナンス時にリモートデスクトップ接続するわけですが、「いまどき2要素認証は必須だよね」ということで調べてみました。
RD Gatewayを踏み台にする構成でできそうだなあと軽い気持ちで始めましたが、がっつりハマりました。
環境の構築は、マイクロソフト公式の以下の記事を参考にしました。
ネットワーク ポリシー サーバー (NPS) 拡張機能と Azure AD を使用したリモート デスクトップ ゲートウェイ インフラストラクチャの統合
この記事では、最後は「リモート デスクトップ Web アクセス」で動作確認して終わりになっていますが安心してください。リモートデスクトップクライアントからのアクセスでも問題なくできます。(リモートデスクトップクライアントには、セカンダリ認証のPIN番号を入れるという画面が出てこないので、MicrosoftのAuthenticator アプリの利用が必須です。)
また、VMにログインするユーザをAzure ADに登録する必要があるため、「Active Directory ドメイン サービス (ADDS) 」とAzure AD Connectを使用しています。
と、この辺りで後悔し始めます。「ログイン時に2要素認証したいだけなのに・・・」
実際に構築したいシステムよりも大掛かりになってしまいました。
#前提条件
MAFを行いたいユーザ毎にAzure Active Directory Premium1以上のライセンスが必要です。
なのですが、Azure portalからは購入できません。office365ポータルで購入する必要があります。これがわかるまで、サポート窓口でたらい回しにされました。
office365を契約していなくてもAzureのアカウントを作成するとoffice365に自動的に紐つけられるようです。
以下のURLにAzureのアカウントでログインします。
office365 portal
#ハマった点その1
ネットワーク ポリシー サーバー (NPS) 拡張機能と Azure AD を使用したリモート デスクトップ ゲートウェイ インフラストラクチャの統合の手順通りに構築したのですが2要素認証の通知がAuthenticator アプリに来ません。
RADIUSサーバ(NPS 拡張機能がインストールされている NPS サーバー)でパケットキャプチャを行ってみましたが、そもそもEAPoL(RADIUS認証の要求)のパケットを受信していません。
これは、Windows Server 2019サーバの問題のようです。
以下の記事を参考に設定を変更しました。
Windows Server 2019のネットワークポリシーサーバーでRADIUS認証が失敗する
コマンドプロンプトで以下のコマンドを叩きます。
>sc sidtype IAS unrestricted
[SC] ChangeServiceConfig2 SUCCESS
#ハマった点その2
これでできるかと思ったのですがMAFの認証でエラーになります。
リモートデスクトップからは、Active Directory ドメイン サービス (ADDS) のドメインユーザでログインするのですが、Azure ADのドメイン名と異なっているとMAFの認証で失敗します。
これを回避するために、NPS の拡張機能の代替ログイン IDを使用するように設定します。
[Multi-Factor Authentication の NPS の拡張機能の詳細構成オプション]
(https://docs.microsoft.com/ja-jp/azure/active-directory/authentication/howto-mfa-nps-extension-advanced)
これって、直接レジストリを編集する必要があるし、そもそも何を設定していいかよくわかりません。
色々試行錯誤していて諦めかけた時、Authenticator アプリに認証の通知が飛んできました。
例えば、
LDAP_ALTERNATE_LOGINID_ATTRIBUTEにmailを設定します。
Active Directory ドメイン サービス (ADDS)でユーザのmail属性をAzure ADのドメインユーザ名にします。
これで、mailに書かれたユーザでMAF認証が行われます。
#最後に
このシステムを構築するために、以下の4つのサーバを作成しました。小規模なシステムには向かないと思います。
• RDGatewayサーバ
• ネットワーク ポリシー サーバ
• Active Directory ドメイン サービス (ADDS) サーバ
• Azure AD Connectサーバ
今回は、すべて異なるVMに配置しました。RDGatewayサーバとネットワーク ポリシー サーバは、別のVMに配置する必要があるようですが、そのほかは、同じVMに配置できるかもしれません。
最近知ったのですが、Azure Bastionという便利なものが・・・