【図解】Active DirectoryをMFA化するしくみ ― VPN・RDP・ファイルサーバにスマホ承認を足すには、どこに何を入れるのか

社内のActive Directory(AD)に「スマホで承認するMFA(多要素認証)」を足したいと考えたとき、最初に引っかかるのが、ADの標準機能だけではVPNの入口やファイルサーバへのアクセスにスマホの承認を挟めない、という点です。そのため、MFAの製品はADのまわりのどこかに部品を足して、認証の途中に割り込む作りになっています。

この記事では、AD運用者・構築者の目線で「どこに何を入れると、どの認証にMFAがかかるのか」「ADやクライアントの設定は何が変わるのか」を、構成図とシーケンス図で整理します。後半では、利用者のスマホで何が起きるかと、いま動いているADにMFAを足していく進め方も説明します。

この記事の前提(免責)

この記事は、Cisco Duo、Silverfort、Microsoft(Entra多要素認証のNPS拡張、Entra Private Access)の公開資料を参考に、ADにMFAを足すしくみを一般化して整理したものです。特定の製品の仕様や設定手順を説明するものではありません。

部品の名前と置き場所、MFAを求めるタイミング、対応するプロトコル、障害時の既定の動作は、製品やバージョンによって異なります。導入を検討するときは、各メーカー・販売元の最新のドキュメントで確認してください。

この記事でわかること
  1. ADの標準機能だけでは、VPNやファイルサーバにスマホ承認を挟めない理由
  2. MFAを差し込む場所は4つ(認証プロキシ、ログオン画面、DC、クラウドIdP)
  3. それぞれ何を追加し、ADとクライアントのどこが変わるか(シーケンス図つき)
  4. 利用者のスマホでは何が起きるか(プッシュ、番号照合、ワンタイムパスワード)
  5. いま動いているADにMFAを足していく手順と、設計で決めておくこと
  1. ADの標準機能だけではMFAが難しい理由
    1. ADの認証は「パスワードを知っていること」の証明だけで進む
    2. 標準でできるのは「サインイン時の多要素」まで
  2. MFAを差し込む場所は4つ
  3. ① 認証プロキシ型:VPN・Wi-Fi・LDAPの入口で止める
    1. 何を追加するか
    2. ADとまわりの機器で変わる設定
    3. このパターンで守れないもの
  4. ② ログオン画面のエージェント型:サインインとRDPで止める
    1. 何を追加するか
    2. ADとまわりの機器で変わる設定
    3. 管理者権限への昇格(UAC)にもMFAをかけられる
    4. オフライン時と障害時
    5. このパターンで守れないもの
    6. PowerShellリモートやSSHは、受ける側のサーバで止める
  5. ③ DC連携型:Kerberos・NTLMをDCで止める
    1. 何を追加するか
    2. ADとまわりの機器で変わる設定
    3. MFAを求めるタイミングは製品で大きく違う
    4. 注意しておきたいこと
    5. このパターンで守れないもの
  6. ④ クラウドIdP型:Webアプリの入口で止める
  7. 4つのパターンを並べると
  8. 利用者から見たMFA
    1. 最初にスマホを登録する
    2. 承認のしかたは3通り
    3. スマホをなくしたとき
  9. いま動いているADにMFAを足していく手順
    1. 守る場面を洗い出す
    2. 場面ごとにパターンを決める
    3. ユーザーを同期し、スマホを登録してもらう
    4. 監視だけのモードで動かす
    5. 小さく有効にして、広げる
  10. 設計で決めておくこと
  11. まとめ
  12. 参考にした資料
    1. Microsoft(Windows・AD・Entra)
    2. Cisco Duo
    3. Silverfort
    4. その他

ADの標準機能だけではMFAが難しい理由

ADの認証は「パスワードを知っていること」の証明だけで進む

ADのドメインで使われる認証は、主にKerberosとNTLMです。どちらも、ユーザーがパスワード(またはパスワードから作った鍵)を持っていることを、DCとの間で確かめるしくみです。やり取りの途中に「スマホに通知を送って、承認されるまで待つ」という手順はありません。

Kerberosの流れを図にすると、次のようになります。サインイン時にDCからTGT(チケットを発行してもらうためのチケット)を受け取り、ファイルサーバに接続するときは、そのTGTを使って「ファイルサーバ用のサービスチケット」をもらいます。ファイルサーバはチケットを確かめるだけで、利用者に何かを聞くことはしません。

利用者のPC ドメインコントローラ (KDC) ファイルサーバ cifs/fs01 1 AS-REQ:TGTを要求(サインイン時) 2 AS-REP:TGTを発行 3 TGS-REQ:cifs/fs01 のチケットを要求 4 TGS-REP:チケットを発行 5 SMB接続:サービスチケットを提示(AP-REQ) 6 アクセス許可
図1 Kerberosでファイルサーバに接続する流れ(どこにも「利用者に確認する」手順がない)

さらに、ファイル共有への接続のような「ネットワークログオン」は、サインイン時に取得した資格情報を使って裏側で自動的に行われ、入力画面は出ません。発行されたチケットはPCにキャッシュされ、有効期限の間は使い回されます(ADの既定では、TGTの有効期限が10時間です)。つまり、画面を出してMFAを求める場所も、DCに毎回聞きに行くタイミングも、もともと用意されていないのです。

標準でできるのは「サインイン時の多要素」まで

Windowsにも多要素のしくみはあります。スマートカードと、Windows Hello for Business(PINや生体情報で端末内の鍵を使う方式)です。どちらも、サインイン時にTGTを取得するところ(KerberosのPKINITという拡張)で、パスワードの代わりに証明書や鍵を使います。

ただし、多要素になるのはサインインの瞬間だけです。その後のファイルサーバやRDP先へのアクセスは、取得済みのTGTやチケットで進みます。また、VPN機器やWi-Fiのように「RADIUSでIDとパスワードを受け取る機器」、LDAPでパスワードを確かめる業務アプリには、この方式はそのまま使えません。

認証の場面使われるしくみAD単体でのMFA
PCへのサインイン(コンソール)Kerberos(NTLMもある)スマートカード、Windows Hello for Business で多要素にできる
サーバへのRDP接続Kerberos/NTLM(CredSSP経由)スマートカードなどは使えるが、スマホ承認は挟めない
ファイルサーバ(SMB)、PowerShellリモート、管理ツールKerberos/NTLM(ネットワークログオン)画面が出ないため、MFAを求める場所がない
VPN、Wi-Fi(802.1X)RADIUS(WindowsのNPSなど)→ ADパスワードでの認証になる
LDAPで認証する業務アプリ・機器LDAP(Bind)パスワードでの認証になる
Webアプリ・SaaSSAML/OIDC(AD FSやクラウドIdP)IdP側でMFAをかけられる

VPN、ファイルサーバ、RDPのそれぞれにスマホの承認を挟むには、ADのまわりに何かを足すことになります。RADIUSとLDAPのしくみは、RADIUSの基本とLDAPの基本の記事で説明しています。

MFAを差し込む場所は4つ

製品ごとに名前は違いますが、ADのまわりでMFAを差し込む場所は、おおむね次の4つに分けられます。どれも「認証が通ろうとしている途中で一度止め、クラウドのMFAサービス経由でスマホに承認を求め、承認されたら先に進める」という点は同じです。違うのは、止める場所です。

社内ネットワーク HTTPS 443 (社内から外へ) SAML/OIDC Webアプリ・SaaS クラウドMFA (IdP) プッシュ通知 利用者のスマホ 認証アプリ 利用者のPC (社外から) VPN機器 認証プロキシ DC 各サーバ ② ① ③ ④ ②
図2 MFAを差し込む4つの場所(①認証プロキシ ②ログオン画面のエージェント ③DC ④クラウドIdP)
場所止める認証主な対象
① 認証プロキシRADIUS、LDAPVPN、Wi-Fi、LDAPで認証する機器・アプリ
② ログオン画面のエージェントWindowsの対話型サインインPC・サーバへのサインイン、RDP、UACでの昇格。PowerShellリモートなどは受ける側のサーバに別の仕組みを入れる
③ DC(MFAモジュール)Kerberos、NTLMファイルサーバ、PowerShellリモート、管理ツールなど、ADで認証する社内のアクセス
④ クラウドIdPSAML、OIDCWebアプリ、SaaS

どの場所でも、部品は社内から外(クラウドのMFAサービス)へHTTPS(TCP 443)でつなぎに行きます。インターネットから社内へ通信を受け入れる必要がない作りが一般的です。以降、①〜③を順に見ていきます。④はWebのしくみなので、最後に短く触れます。

① 認証プロキシ型:VPN・Wi-Fi・LDAPの入口で止める

VPN機器と、その先のADの間に「認証プロキシ」を挟み、VPNの認証がADに届く手前で止めます。

社内 ID・パスワード RADIUS LDAP(S) HTTPS クラウドMFA プッシュ スマホ 利用者のPC 社外から VPN機器 宛先を変えるだけ 認証プロキシ 新しく置く DC 何も入れない MFA MFA=ここで一度止めてスマホに承認を求める
図3 認証プロキシ型のイメージ(VPN機器のRADIUSの宛先を認証プロキシに向け、そこで止める)

何を追加するか

社内に「認証プロキシ」と呼ばれるサーバ(WindowsまたはLinuxにソフトウェアを入れる形が多い)を置きます。VPN機器から見ると、認証プロキシはRADIUSサーバそのものです。認証プロキシは受け取ったIDとパスワードをADで確かめ(一次認証)、成功したらMFAサービスに二要素目を要求し、両方そろったところでVPN機器に許可を返します。

一次認証の確かめ方は2通りあります。認証プロキシがDCにLDAP(LDAPS)で問い合わせる方法と、既存のRADIUSサーバ(NPSなど)に転送する方法です。既存のNPSにMFAの拡張機能を足して、NPS自身に二要素目を要求させる形もあります。

A プロキシがADに直接問い合わせる B プロキシの後ろに既存のNPSを残す C 既存のNPSにMFAの拡張機能を足す VPN機器 RADIUS 認証プロキシ LDAP(S) DC(AD) MFA VPN機器 RADIUS 認証プロキシ RADIUS NPS DC(AD) MFA VPN機器 RADIUS NPS+MFA拡張 ADで確認 DC(AD) MFA MFA 各パターンのMFAマークからHTTPSで接続
図4 認証プロキシの置き方3通り(MFAマークの位置で、スマホに承認を求める)
補足:NPSとは

NPS(Network Policy Server)は、Windows Serverに入っているMicrosoftのRADIUSサーバです。「ネットワークポリシーとアクセスサービス」の役割を追加すると使えるようになります(Server Coreのインストールでは使えません)。RADIUSサーバとしても、別のRADIUSサーバへ転送するRADIUSプロキシとしても動きます。

一般的なRADIUSサーバ(Linuxのソフトウェアや、ネットワーク機器メーカーのアプライアンスなど)との一番の違いは、ADとのつながり方です。NPSはドメインに参加させると、ADをそのままユーザーのデータベースとして使い、ADのグループやユーザーのダイヤルインのプロパティを条件に「このグループならVPNを許可」といったネットワークポリシーを作れます。802.1XでよくあるPEAP(MS-CHAPv2)も、ADのパスワードでそのまま確かめられます。一般的なRADIUSサーバでは、ADと連携する設定が別に必要です。特にMS-CHAPv2は、ADから平文のパスワードを取り出せないためLDAPだけでは確かめられず、RADIUSサーバをドメインに参加させてADに確認してもらう仕組み(Linuxなら Samba の ntlm_auth など)を追加するのが一般的です。

一方で、NPS自体にはスマホでMFAをかける機能はありません。MFAを足すには、図のようにNPSの前に認証プロキシを置くか(B)、NPSにMFAの拡張機能を入れる(C)ことになります。Microsoftが提供する拡張機能(Entra多要素認証のNPS拡張)を使う場合は、ADのユーザーをEntra IDに同期しておく必要があります。

利用者のPC VPN機器 RADIUSクライアント 認証プロキシ 社内に設置 DC クラウドMFA スマホ 認証アプリ 1 ID・パスワード 2 Access-Request(UDP 1812) 3 パスワード確認(LDAPS) 4 OK 5 MFA要求(HTTPS 443) 6 プッシュ通知 7 承認 8 承認済み 9 Access-Accept 10 VPN接続完了
図5 認証プロキシ型の流れ(VPN接続の例)。VPN機器と認証プロキシは承認を待つ間、応答を保留している

ADとまわりの機器で変わる設定

対象変わること
DC・ADDC自体には何も入れない。LDAPで問い合わせる場合は、検索用のサービスアカウント(読み取りだけの権限)を用意する
認証プロキシ(新規)社内にサーバを用意してインストールする。冗長化のため2台以上にすることが多い
VPN機器・無線コントローラRADIUSサーバの宛先を、NPSなどから認証プロキシに変える。スマホの承認を待つ時間があるので、RADIUSのタイムアウトを長くする(製品の推奨値、例えば60秒以上に合わせる)
クライアントPC何も入れない(VPNクライアントはそのまま)
通信VPN機器→認証プロキシ:RADIUS(UDP 1812)、認証プロキシ→DC:LDAP/LDAPS(TCP 389/636)、認証プロキシ→クラウド:HTTPS(TCP 443)
補足

VPNのログイン画面にはMFA用の欄がないため、既定ではスマホに自動でプッシュ通知が飛ぶ設定がよく使われます。製品によっては、パスワード欄に「パスワード,ワンタイムパスワード」のようにつなげて入力し、二要素目を選ばせることもできます。ワンタイムパスワードを入力させる方式では、VPN機器との間の認証方式(PAPかMS-CHAPv2か)に制約が出ることがあるので、製品の資料で確認してください。

このパターンで守れないもの

VPN接続(認証プロキシを通る) 利用者のPCVPN機器認証プロキシDC MFA VPNにつながった後のファイル共有(認証プロキシを通らない) ① チケット要求(Kerberos) ② チケットでファイルサーバに接続(SMB) DC 利用者のPCファイルサーバ プロキシを通らない=MFAなし
図6 認証プロキシ型で守れないもの(VPN接続の後のファイル共有は、認証プロキシを通らない)

認証プロキシが止められるのは、認証プロキシを通る認証だけです。VPNでつながった後、PCからファイルサーバへの接続はKerberosでDCとやり取りするので、認証プロキシは関わりません。社内に入った後のアクセスまで守りたい場合は、②や③と組み合わせます。

② ログオン画面のエージェント型:サインインとRDPで止める

Windowsのサインイン画面にMFAの手順を足し、画面でのサインインを止めます。エージェントは「サインイン画面が出る側」に入れるのがポイントです。

クラウドMFA プッシュ スマホ HTTPS RDPで接続 パスワード確認(Kerberos) MFAMFA 利用者のPCエージェントを入れる→ PCへのサインインを守る RDP先のサーバエージェントを入れる→ RDPのサインインを守る DC何も入れない MFA=ここで一度止めてスマホに承認を求める
図7 ログオン画面のエージェント型のイメージ(PCへのサインインはPCで、RDPはRDP先のサーバで止める)

何を追加するか

サインインを守りたいコンピュータに、エージェント(ソフトウェア)をインストールします。Windowsのサインイン画面は「Credential Provider」という部品で作られていて、エージェントはこの部品として組み込まれます。パスワードを入力した後にMFAの画面が加わり、スマホで承認するとサインインが完了します。

どこに入れるかは、どのサインインを守りたいかで決まります。PCの前で行うサインインを守るならそのPCに、サーバへのRDP接続を守るならRDPで接続される側のサーバに入れます。RDPのサインイン画面は接続先のサーバが出しているので、接続元のPCにエージェントは要りません。DCには、パスワードの確認でいつもどおり使われるだけなので、何も入れません。

利用者 PC・サーバ ログオン画面+エージェント DC クラウドMFA スマホ 認証アプリ 1 ID・パスワード入力 2 パスワード確認(Kerberos) 3 OK 4 MFA要求(HTTPS 443) 5 プッシュ通知 6 承認(番号照合) 7 承認済み 8 デスクトップを表示
図8 ログオン画面のエージェント型の流れ。パスワードの確認とMFAのどちらを先に行うかは製品によって異なる

ADとまわりの機器で変わる設定

対象変わること
DC・ADDCには何も入れない(認証のしくみは変わらない)。エージェントの配布にグループポリシーなどを使うことはある。DCへのRDPも守りたい場合は、DCも「RDP先のサーバ」の1台としてエージェントを入れることになるので、製品がDCへのインストールに対応しているか確認する
利用者のPCPCへのサインインを守るなら、1台ずつエージェントを入れる。RDPの接続元として使うだけなら、入れなくてよい
RDP先のサーバRDPのサインインを守るサーバに、1台ずつエージェントを入れる。RDPのときだけMFAを求める、コンソールでも求める、といった範囲を選べることが多い
通信各PC・サーバ→クラウド:HTTPS(TCP 443)

管理者権限への昇格(UAC)にもMFAをかけられる

A 標準ユーザーが管理者のID・パスワードを入力して昇格する場合 管理者として実行 ユーザーアカウント制御 admin01 ●●●●●● MFA エージェントがMFAを足せる 管理者として動く B 管理者が「はい/いいえ」だけで昇格する場合 管理者として実行 ユーザーアカウント制御 はい いいえ 止める場所がない パスワードを入力しない 管理者として動く
図9 UACでの昇格とMFA(パスワードを入力して昇格する場面が対象)

「管理者として実行」を選んだときに出るUAC(ユーザーアカウント制御)の確認画面にも、MFAを足せる製品があります。UACで管理者のIDとパスワードを入力する画面も、サインイン画面と同じく、Credential Providerのしくみで資格情報を受け取っています。そのため、エージェントがそこにMFAの手順を加えられます。サインイン時はMFAを求めず、昇格のときだけ求める設定を選べる製品もあります。

ただし、参考にした製品の資料で対象として書かれているのは、パスワードを入力して昇格する場面(図のA)です。管理者アカウントでサインインしていて「はい/いいえ」を押すだけの確認画面(図のB)は、パスワードを入力しないので止める場所がありません。昇格のたびにMFAを求めたいなら、普段は標準ユーザーで作業し、必要なときだけ管理者のIDとパスワードを入力して昇格する運用が前提になります。

オフライン時と障害時

通常時 PCがネットにつながらない クラウドに届かない MFA MFA サインインのたびにクラウドへ問い合わせ、スマホで承認する MFA MFA 482913 事前に登録したワンタイムパスワードやセキュリティキーで入る(回数・日数に上限) MFA 通す 止める 設定で選ぶ 通す=フェイルオープン(パスワードだけで入れる)止める=フェイルクローズ
図10 クラウドに問い合わせられないときの動き(オフライン時と障害時)

エージェントはサインインのたびにクラウドへ問い合わせるので、ノートPCを社外でネットにつながずに使うときの扱いを決めておく必要があります。製品によっては、事前に登録したスマホのワンタイムパスワードやセキュリティキーで、決めた回数・日数だけオフラインでのサインインを認める機能があります。クラウドに届かないときにMFAを省いて通す(フェイルオープン)か、止める(フェイルクローズ)かも設定で選びます。

このパターンで守れないもの

サインイン画面 MFA エージェントを入れたPC 画面を通るサインインだけ止める ドライブの割り当て(SMB) PowerShellリモート MFAなしMFAなし ファイルサーバ 管理対象のサーバ ほかにも画面を通らないもの:「別のユーザーとして実行」、サービスやタスクスケジューラのログオン PowerShellリモートは、受ける側のサーバに別の仕組みを入れれば止められる(次の節)
図11 ログオン画面のエージェント型で守れないもの(サインイン画面を通らないアクセス)

エージェントが止めるのは、サインイン画面(とUACの昇格画面)を通るサインインだけです。ファイル共有への接続(ドライブの割り当てを含む)、PowerShellのリモート操作(Enter-PSSession、Invoke-Command)、「別のユーザーとして実行」、サービスやタスクスケジューラのログオンは、画面を通らないのでMFAの対象になりません。また、端末の管理者がセーフモードで起動するとエージェントを迂回できる場合があるなど、端末側の仕組みゆえの限界もあります。

このうちPowerShellのリモート操作は、次の節のように受ける側のサーバに別の仕組みを入れると止められます。「別のユーザーとして実行」をドメインアカウントで行う場合は、認証がDCに届くので、③のDC連携型なら製品のポリシーしだいで対象にできます。

PowerShellリモートやSSHは、受ける側のサーバで止める

PowerShellのリモート操作やWindowsのSSHは、サインイン画面を通りません。そこで、リモート操作を受ける側のサーバに「セッションが始まったところでMFAを求める仕組み」を入れる方法があります。参考にした製品では、PowerShellのリモート接続の設定(セッション構成)に、接続されたときに最初に動くスクリプトを登録し、そのスクリプトがスマホに承認を求めます。承認できなければ、接続は拒否されます。

管理者のPC 対象サーバ +MFAの仕組み DC クラウドMFA スマホ 認証アプリ 1 チケット要求(srv01向け) 2 チケットを発行 3 Enter-PSSession(WinRM) セッション開始時にMFAを要求 4 MFA要求(HTTPS 443) 5 プッシュ通知 6 承認 7 承認済み 8 操作できるようになる
図12 PowerShellリモートを受けるサーバで止める流れ。DCでのチケット発行はいつもどおりで、セッションが始まったところで止める
対象変わること
リモート操作を受けるサーバMFAの仕組みを入れる。PowerShellのリモート接続(WinRM)が有効になっていること、署名済みスクリプトを実行できる実行ポリシーになっていることが前提になる製品がある
管理者のPC何も入れない。Enter-PSSession などの使い方も変わらない
DC・AD何も入れない。DCへのリモート操作も守るなら、DCも受ける側のサーバとして入れることになるので、製品がDCを対象にできるか確認する
通信受ける側のサーバ→クラウド:HTTPS(TCP 443)

画面がないので、承認は自動で届くプッシュ(または電話)になるのが一般的です。利用者は事前にスマホを登録しておく必要があります。また、タスクやジョブから自動で Invoke-Command を実行している場合、人が承認できないので、自動化で使うアカウントや接続先をMFAの対象から分けて考える必要があります。

③ DC連携型:Kerberos・NTLMをDCで止める

ドメインアカウントの認証はすべてDCに集まるので、DCで止めれば、画面が出ないアクセスにもMFAをかけられます。PCやファイルサーバには何も入れません。

クラウドMFA プッシュ スマホ ポリシーサーバ 製品によって置く HTTPS ① チケット要求(Kerberos/NTLM) ② チケットでファイルサーバに接続(SMB) MFA DC(全台)MFAモジュールを入れる 利用者のPC何も入れない ファイルサーバ何も入れない MFA=ここで一度止めてスマホに承認を求める
図13 DC連携型のイメージ(すべてのDCにモジュールを入れ、チケットを発行する前に止める)

何を追加するか

ファイルサーバやPowerShellのリモート操作のように画面が出ないアクセスにもMFAをかけたいときは、すべての認証が集まるDCで止めます。認証を受け付けるすべてのDCに、MFA用のモジュール(製品によって「アダプタ」「センサー」「フィルタ」などと呼ばれる)を入れます。製品によっては、ポリシーを判断する専用のサーバ(社内の仮想アプライアンスやクラウドのサービス)を別に置きます。

動きは次のとおりです。DCはいつもどおりパスワードを確かめ、成功した認証をモジュールが捕まえます。モジュールはポリシーに当てはまるかを判断し、MFAが必要ならDCの応答を保留したまま、スマホに承認を求めます。承認されればDCはチケットを発行し、拒否やタイムアウトなら認証を失敗させます。

利用者のPC ファイルサーバ cifs/fs01 DC +MFAモジュール クラウドMFA スマホ 認証アプリ 1 チケット要求(Kerberos) 通常どおり確認→応答を保留 2 MFA要求(HTTPS 443) 3 プッシュ通知 4 承認 5 承認済み 6 チケットを発行 7 SMB接続(チケット提示) 8 アクセス許可
図14 DC連携型の流れ(ファイルサーバへの接続の例)。サービスチケットの要求で止める製品の場合。サインイン時のTGT要求で止める製品もある

ADとまわりの機器で変わる設定

対象変わること
DCすべてのDC(RODCを含む、認証を受け付けるDC)にモジュールを入れる。インストールにDCの再起動が必要な製品もある。参考にした製品の資料には、ADのスキーマを変更しないと明記しているものがある
AD(グループ・アカウント)MFAをかける対象のグループと、除外するグループを作る。サービスアカウントやコンピュータアカウントはスマホで承認できないので、除外するか別の制御にする
ポリシーサーバ(製品による)社内に仮想アプライアンスを置くか、クラウドのサービスを使う
クライアントPC・ファイルサーバ基本的に何も入れない。製品によっては、MFAの通知をPCの画面に出すためのデスクトップアプリを入れる
通信DC(またはポリシーサーバ)→クラウド:HTTPS(TCP 443)。DCとポリシーサーバの間の通信は製品による

MFAを求めるタイミングは製品で大きく違う

DC連携型で一番差が出るのが、「どの要求でMFAを求めるか」です。大きく分けて、サインイン時のTGTの要求(KerberosのAS-REQ)やNTLMの認証で一度だけ求める作りと、ファイルサーバ用・リモート管理用といったサービスチケットの要求(TGS-REQ、宛先のサービスごと)で求める作りがあります。前者は「ドメインに入るとき」、後者は「どのサーバのどのサービスに入るか」で絞り込めます。

9:00 サインイン TGTを要求(AS-REQ) 9:30 ファイルサーバに 初めて接続 サービスチケットを要求 10:00〜 同じサーバに 再接続 チケットを使い回す サインイン時に求める作り サービスごとに求める作り MFAMFAなしMFAなし 対象外MFAMFAなし
図15 MFAを求めるタイミングの違い(時刻は例)

どちらの作りでも、発行されたチケットの有効期限の間は、同じアクセスでスマホが鳴り続けることはありません。逆に言うと、ファイルを開くたびにMFAを求めるような動きにはなりません。

注意しておきたいこと

  • アプリ側は「MFA待ち」を知らないので、画面には何も出ません。利用者はスマホに届く通知に気づく必要があります。承認が遅れると、アプリ側がタイムアウトしてエラーになることがあります。
  • 画面に番号を出せないので、番号照合(後述)は使えず、「承認/拒否」のプッシュになることが多いです。
  • DCはドメイン全体の認証を担う、最も重要なサーバです。クラウドに届かないときに止める設定(フェイルクローズ)にすると、ドメイン全体のサインインが止まるおそれがあります。参考にした製品では、既定をフェイルオープンにしているものもあります。
  • NTLMの扱いは製品によって違います。Kerberosだけを対象にし、NTLMの利用を減らすことを前提にしている製品もあります。

このパターンで守れないもの

ドメインアカウントでのアクセス(DCを通る) Kerberos/NTLM MFA 利用者のPCDC ローカルアカウントでのサインイン(DCを通らない) RDP(.\Administrator など) 利用者のPCサーバ サーバ自身のアカウント情報で確認するので、DCは関わらない MFAなし ほかにも:DCに届かないときのキャッシュされた資格情報でのサインイン、除外したサービスアカウント、 製品が対象にしていないプロトコル、チケットの有効期限内の再アクセス
図16 DC連携型で守れないもの(DCを通らない認証)

DCで止められるのは、DCに届くドメインアカウントの認証だけです。サーバのローカルアカウント(.\Administrator など)でのサインインは、サーバ自身が持つアカウント情報で確かめるのでDCを通らず、MFAの対象になりません。ローカルの管理者アカウントは、パスワードをサーバごとに変えて管理する、使える場所を絞る、といった別の対策と組み合わせます。DCに届かないときに、PCにキャッシュされた資格情報でサインインする場合も同じです。

④ クラウドIdP型:Webアプリの入口で止める

クラウドIdP プッシュ スマホ ① アクセス ② IdPに転送されてサインイン ③ トークンで入る Webアプリ SaaS MFA ユーザーを同期 ブラウザAD(DC)同期ツールを入れる MFA=ここで一度止めてスマホに承認を求める
図17 クラウドIdP型のイメージ(Webアプリのサインインを、クラウドIdPの画面で止める)

AD FSにMFAのアダプタを足す方法や、Entra ConnectなどでADのユーザーをクラウドのIdPに同期し、IdPのサインイン画面でMFAをかける方法です。SAMLやOIDCに対応したWebアプリ・SaaSは、この形でMFAをかけるのが一般的です。ブラウザでIdPの画面を通るアクセスだけが対象なので、社内のKerberos/NTLMによるアクセスは守れません。クラウドのIdPとADの違いは、Microsoft Entra IDとActive Directoryの違いで紹介しています。

4つのパターンを並べると

項目① 認証プロキシ② ログオン画面③ DC連携④ クラウドIdP
追加するもの認証プロキシのサーバ各PC・サーバのエージェント全DCのモジュール(+ポリシーサーバ)IdP、同期ツール、AD FSのアダプタ
DCへのインストールなしなしありなし(AD FSを使う場合はAD FSサーバに入れる)
端末へのインストールなしあり(守るPC、RDP先のサーバ)基本なしなし
守れる場面VPN、Wi-Fi、LDAPアプリサインイン、RDPファイルサーバ、リモート管理などのKerberos/NTLMWebアプリ、SaaS
守れない場面社内に入った後のアクセスネットワークログオン(PowerShellリモートは受ける側に別の仕組みが必要)製品の対象外のプロトコル、チケットの有効期限内の再アクセスKerberos/NTLM
番号照合使えないことが多い使えることが多い使えないことが多い使えることが多い
影響の大きさVPNなど入口だけ入れた端末だけドメイン全体連携したアプリだけ

実際には1つを選ぶのではなく、「VPNは①、サーバへのRDPは②、管理者によるファイルサーバやリモート管理は③」のように、守る場面ごとに組み合わせて使います。

利用者から見たMFA

最初にスマホを登録する

MFAサービスは、ADのユーザーとスマホを直接つなぐわけではありません。間にMFAサービス上の「ユーザー」があり、ADのユーザーとスマホが、それぞれそこに結び付く形です。

AD MFA対象グループ yamada sato suzuki ① 同期 一方向(パスワードなし) MFAサービス ユーザー登録した端末 yamada スマホ(登録済み) sato 未登録 suzuki 未登録 登録用のQRコード ② 登録の案内 yamadaのスマホ認証アプリ ③ QRを読み取って登録 ④ 紐付く
図18 ADのユーザーとスマホが、MFAサービス上のユーザーを介して結び付く
手順だれが何をするか
① 同期管理者ADのMFA対象グループのユーザーを、MFAサービスに同期する。同期はADからMFAサービスへの一方向で、MFAサービスからADへ書き戻すことはない。参考にした製品では、パスワードは取り込まず、同期の部品は認証プロキシが兼ねる
② 登録の案内管理者(MFAサービス)利用者に、登録用のリンクやQRコードをメールなどで届ける
③ スマホの登録利用者スマホに認証アプリを入れ、QRコードを読み取る。このとき、そのユーザーの認証に使う秘密の情報(鍵)がアプリの中に保存される
④ 紐付けMFAサービスMFAサービス上のユーザー「yamada」に、登録したスマホが記録される

サインインのときは、認証プロキシやDCのモジュールがユーザー名をMFAサービスに送り、MFAサービスはそのユーザーに紐付いたスマホへ通知を送ります。そのため、ADのユーザー名とMFAサービスのユーザー名がそろっている必要があります(別名を登録できる製品もあります)。

認証プロキシ型やDC連携型は、利用者に画面を見せられないので、その場で登録させることができません。対象にする前に、登録を済ませてもらう必要があります。

承認のしかたは3通り

A プッシュで承認 B 番号を入力して承認 C ワンタイムパスワード サインイン要求 アプリ:社内VPN ユーザー:yamada 時刻:09:02 承認 拒否 PCのサインイン画面 アプリに入力 84 番号を入力 8 4 承認 社内システム 482 913 一定時間ごとに変わる ネットにつながって いなくても表示できる 画面を出せないVPNやDC連携で 使われることが多い ログオン画面やWebのように 番号を表示できる場面で使う オフライン時や、パスワード欄 しかない機器で使う
図19 スマホでの承認方法(特定の製品の画面ではなく、一般的な動きを表したイメージです)
方法利用者の操作注意点
A プッシュで承認スマホに届いた通知を開き、アプリ名や時刻を見て「承認」を押す身に覚えのない通知を何度も送りつけて、うっかり承認させる攻撃(MFA疲労攻撃)に注意が必要。身に覚えのない通知は「拒否」するよう周知する
B 番号を入力して承認(番号照合)PCのサインイン画面に出た数字を、スマホに入力して承認するPCの前にいる本人しか数字を知らないので、MFA疲労攻撃に強い。画面に数字を出せる場面でしか使えない
C ワンタイムパスワード認証アプリに表示される数字(6桁が多い)を入力するスマホがネットにつながっていなくても使える。入力欄がない場面では、パスワードの後ろにつなげて入力する方式になる

スマホをなくしたとき

スマホの紛失や機種変更に備えて、管理者が一時的なコード(バイパスコード)を発行できる製品が一般的です。一度使うか一定時間が過ぎると無効になる設定にしておき、本人確認をしてから伝えるよう、ヘルプデスクの手順も決めておきます。

いま動いているADにMFAを足していく手順

ADは止められない基盤なので、いきなり全員に有効にはしません。参考にした製品の資料や導入事例でも、見える化→監視→段階的に有効化、という順で進めています。

守る場面を洗い出す

VPN、Wi-Fi、サーバへのRDP、管理者によるファイルサーバやリモート管理など、MFAをかけたい場面を挙げます。同時に、ADでどんな認証が行われているか(NTLMがどこで使われているか、サービスアカウントがどこにログオンしているか)を確かめます。ADの認証ログの取り方は、ユーザーのログオン認証の監査を設定する方法で紹介しています。

場面ごとにパターンを決める

STEP 1で挙げた場面ごとに、①〜④のどれで守るかを決めます。迷ったときは、守りたい認証が「どこを通るか」で考えます。VPN機器を通るなら①、サインイン画面やUACを通るなら②、PowerShellリモートなら受ける側のサーバか③、画面を通らず社内でKerberos/NTLMを使うなら③です。

ユーザーを同期し、スマホを登録してもらう

同期の対象にするグループを決め、ADのユーザーをMFAサービスに同期します。利用者にはスマホの登録を案内し、登録が済んだことを管理画面で確認します。登録していない人を対象にすると、その人はサインインできなくなります。

監視だけのモードで動かす

DC連携型の製品には、MFAを強制せずに「この設定ならMFAを求めていた」という記録だけを残すモード(監査モード、レポートのみ、など)を持つものがあります。しばらく動かして、サービスアカウントやバッチ処理が対象に入っていないか、思わぬ機器からの認証がないかを確かめ、除外の設定を整えます。

小さく有効にして、広げる

最初は、IT部門のテストユーザーや管理者アカウントなど、影響の小さい範囲で有効にします。問題がなければ、重要なサーバ、一般のユーザーへと広げます。障害時に備えて、MFAの対象から外した緊急用の管理者アカウントを用意し、使ったら気づけるように監視しておきます。

設計で決めておくこと

項目決めること
障害時の動作クラウドのMFAサービスに届かないとき、MFAを省いて通す(フェイルオープン)か、止める(フェイルクローズ)か。DC連携型でフェイルクローズにすると、ドメイン全体のサインインが止まるおそれがある。特権の操作だけ止める、のように対象で分けられるかも確認する
通信社内から外へのHTTPS(TCP 443)。宛先は製品ごとに決まっており、IPアドレスが変わることがあるので、FQDNで許可できるか確認する。プロキシを経由させる場合はその設定も
冗長化認証プロキシは2台以上。DC連携型はすべてのDCに入れ、ポリシーサーバがある場合はその冗長化も
タイムアウトVPN機器やアプリが、スマホの承認を待てる時間になっているか
除外の範囲サービスアカウント、コンピュータアカウント、緊急用アカウント。除外したアカウントは別の手段(ログオン先の制限、監視)で守る
登録と紛失時の手順新入社員の登録の流れ、機種変更、バイパスコードを発行するときの本人確認
ログ誰が、いつ、どのアクセスで承認・拒否したか。SIEMに送るかどうか

まとめ

ADにMFAを足すときに最初に考えるのは、製品の比較より先に「守りたい認証がどこを通るか」です。止める場所によって、追加する部品も、ADやクライアントで変わる設定も、守れる範囲も変わります。

守りたいもの止める場所追加するもの
VPN、Wi-Fi、LDAPで認証する機器① 認証プロキシ社内の認証プロキシ(VPN機器のRADIUSの宛先を変える)
PC・サーバへのサインイン、RDP、UACでの昇格② ログオン画面守る端末ごとのエージェント
PowerShellリモート、SSH(Windows)② の仲間リモート操作を受けるサーバごとのMFAの仕組み(③で止める方法もある)
ファイルサーバ、リモート管理(Kerberos/NTLM)③ DCすべてのDCのモジュール(+ポリシーサーバ)
Webアプリ、SaaS④ クラウドIdPIdPとADの同期、またはAD FSのアダプタ
免責事項

この記事は、複数の製品の公開資料をもとに、ADにMFAを足すしくみを一般化したものです。記載した動き(部品の置き場所、MFAを求めるタイミング、対応プロトコル、障害時の既定の動作、番号照合の可否など)は、すべての製品に当てはまるものではありません。実際の構成や設定は、各メーカー・販売元のドキュメントや窓口で確認してください。

参考にした資料

この記事は、次の公開資料をもとにまとめました(2026年10月10日に確認)。製品の資料は、仕組みを一般化するための参考として使っています。

Microsoft(Windows・AD・Entra)

Cisco Duo

Silverfort

その他

コメント