Home > Windows にまつわる e.t.c.

オンプレ ドメイン コントローラーと連携させた AWS の Web ログオンを MFA 対応にする


AWS の Web ログオンをオンプレ ドメイン コントローラーと連携させる
http://www.vwnet.jp/Windows/Other/2017021701/AWSADConnector.htm

これの続きです。

 

AWS の Web サービス認証をオンプレ ドメインアカウントにすると、アカウント管理が飛躍的に便利になります。

ところが、オンプレ ドメイン連携にすると、AWS 標準機能で使えていた MFA(Multi-Factor Authentication/多要素認証)が使えなくなってしまいます。

利便性が向上しても、セキュリティレベルは下げたく無いので、やはり MFA を使いたいですね。

残念ながら、オンプレ ドメインコントローラー連携させた環境では、AWS / Windows 標準機能での MFA が出来ないので、サードバーティ製の MFA を使います。

今回使用するのは、Duo Security が提供するクラウドとオンプレのハイブリッドサービスです。

The Trusted Access Company: Duo Security
https://duo.com/

 

Duo は有償サービスですが、無料トライアルがあるので、お試し環境構築も可能です。(AWS 以外にも色々使えます)

MFA を使うだけなら、$3/月/人です。
価格表はこちら

Pricing: Duo Security
https://duo.com/pricing

 

ざっくり全体像

ざっくりと全体像はこんな感じです。

 

■ 認証動作

(1) 利用者は、スマートフォンのアプリを使って MFC Code を取得します。
(2) 利用者は User ID、Password、MFA Code を入力し AWS Web Service にログインします。
(3) AWS Web Service は AD Connector に認証を依頼します。
(4) AD Connector は、入力された User ID とパスワードでオンプレ ドメインコント ローラーで一次認証をします。(前回作ったところ)
(5) 一次認証に Pass したら、AD Connector は、入力された User ID と MFA Code で Duo Application Proxy で二次認証をします。
(6) Duo Application Proxy は Duo Security に User ID と MFA Code で認証をします。

 

■ アカウント同期動作

(7) Duo Application Proxy はオンプレ ドメインコント ローラーから必要時用法を取得します。(バックグラウンドで1日1回実施される)
(8) Duo Application Proxy は Duo Security と同期をします。

 

■ メンテナンス

(9) 管理者は、オンプレ ドメイン コントローラーでユーザーに対する AWS Web Service 利用許可(対象セキュリティグループに参加)、利用禁止(対象セキュリティグループに離脱)の通常メンテナンスをします。
(10) 管理者は、Duo Security の管理 Web ページで、MFA の一時バイパス等や手動同期等の臨時メンテナンスをします。

 

想定環境

前回解説した AD Connctor でのオンプレドメイン連携構築済み

 

■ オンプレ環境

ドメイン名
corp.contoso.internal

ドメインコントローラー
192.168.0.1
192.168.0.2

■ AWS 環境

AD Connector
IP Addresses
172.31.11.21
172.31.23.115

Duo Application Proxy
Windows Server 2012 R2 EC2 インスタンス
IP Addresses
172.31.3.31

 

環境構築のざっくり手順

以下の手順で環境構築します

[1] Duo Security アカウント作成

Duo Security のアカウントを取得します。

[2] Duo Security の RADIUS アプリケーション設定

MFA 認証で使用する RADIUS 設定をします。

[3] MFA 認証 EC2 インスタンス構築

AWS に Windows Server EC2 インスタンスを作成し、Duo Authentication Proxy をセットアップします。

[4] AWS の MFA 設定

AWS AD Connecter の MFA 設定をします。

[5] MFA 動作確認

手動でアカウント登録し MFA の動作確認します。

[6] Duo Security のドメインアカウント同期設定(1)

同期するドメインを登録します。

[7] アカウント同期オンプレ Windows Server 構築

オンプレにドメインメンバーの Windows Server を作成し、Duo Authentication Proxy をセットアップします。

[8] Duo Security のドメインアカウント同期設定(2)

同期するセキュリティグループを指定します。

[9] アカウント同期確認

ドメインアカウントを同期し、MFA の動作確認します。

 

[1] Duo Security アカウント作成


まずは Duo Security のアカウントを作ります。

アカウント作成時に PC のメールアドレスとスマートフォンアプリが必要になるので、準備しておきます。

■ スマートフォンアプリのインストール

「Duo Mobile」を事前にインストールしておきます。
インストール後の設定は必要ありません。

 

■ アカウント作成

以下 URL にアクセスし、Sign Up します。

The Trusted Access Company: Duo Security
https://duo.com/

サインアップ

アカウント情報入力

Duo mobile に紐づけ

Pass code 送信

 

[2] Duo Security の RADIUS アプリケーション設定

アカウントが出来たら Duo Security の管理画面を開き、アプリケーションの保護で RADIUS を指定します。

 

Details の Integration key、Secret key、API hostname は Duo Application Proxy に設定するので控えておきます。

 

設定は Username normalization を Simple にするだけです。

 

[3] MFA 認証 EC2 インスタンス構築

 

AWS に MFA 認証用 Windows Server 2012 R2 EC2 インスタンスを作ります。

MFA 認証用 Windows Server は Duo Security 認証するだけなのでワークグループで構いません。(ドメイン参照はしません)

AD Connector が MFA 認証で使用する RADIUS Server は Duo Authentication Proxy が提供するので、RRAS のインストールも不要です。

Duo Authentication Proxy は以下ページのダウンロード リンクから Windows 版をダウンロードします。

Two-Factor Authentication for Amazon WorkSpaces: Duo Security
https://duo.com/docs/awsworkspaces

直リンから落とせるかも...
https://dl.duosecurity.com/duoauthproxy-latest.exe

 

インストールは、普通のアプリケーションですが、設定は authproxy.cfg をテキストエディタで編集します。
(改行が LF なので、notepad.exe ではなくテキストエディタで編集する必要あり)

C:\Program Files (x86)\Duo Security Authentication Proxy\conf\authproxy.cfg

 

radius_ip は、AD Connector の IP アドレスです。

 

radius_secret は、RADIUS 事前共通鍵なので複雑を満たした十分に長い(20文字以上とか)文字列を指定します。

[duo_only_client] コメント外す
[radius_server_duo_only] コメント外す
ikey 控えておいた Integration key
skey 控えておいた Secret key
api_host 控えておいた API hostname
radius_ip_1 AD Connector の IP addresses 1つ目
radius_ip_2 AD Connector の IP addresses 2つ目
radius_secret_1 RADIUS 事前共通鍵
radius_secret_2 RADIUS 事前共通鍵
failmode safe
port 1812

 

余分な所を消すと以下のようになります。

[duo_only_client]

[radius_server_duo_only]
; Your Duo integration key
ikey=DIMIUW6NQAV41PI84F94

; Your Duo secret key
skey=tElmivBqGdIgjnQgNPMCzID4RNDxyPGyZNCSOZcz

; Your Duo API hostname (e.g. "api-XXXX.duosecurity.com")
api_host=api-44d771c0.duosecurity.com

; The IP address or IP range of the device(s) or application(s) that will be
; contacting the authentication proxy via RADIUS
radius_ip_1=172.31.0.235
radius_ip_2=172.31.30.32

; A shared secret that you'll enter both here and in the configuration of the
; device(s) or application(s) with the corresponding radius_ip_x value. We
; recommend as strong a password as possible. (max 128 chars)
radius_secret_1=zuCBfbHe*St%Rw@K0CaD
radius_secret_2=zuCBfbHe*St%Rw@K0CaD

; Protocol followed in the event that Duo services are down.
; Safe: Authentication permitted if primary authentication succeeds
; Secure: All authentication attempts will be rejected
failmode=safe

; Port on which to listen for incoming RADIUS Access Requests
port=1812

 

準備が出来たら、DuoAuthProxy サービスを起動します。PowerShell で起動するのでしたら、管理権限 PowerShell プロンプトで以下コマンドを叩きます。

Start-Service DuoAuthProxy

 

[4] AWS の MFA 設定

 

AWS の AD Connector ページにある Multi-Factor authentication タブを開き、Duo Authentication Proxy をインストールしたサーバー情報と、authproxy.cfg の radius_secret に設定した事前共通鍵を Shared secret code に入力し Update directory します。

 

RADIUS server IP address(es) Duo Authentication Proxy をインストールしたサーバー IP(複数ある場合はカンマ区切り)
Port 1812
Shared secret code RADIUS 事前共通鍵
Confirm shared secret code RADIUS 事前共通鍵
Protocol PAP
Server timeout (in seconds) 20
Max retries 1

 

[5] MFA 動作確認

Duo Security に動作確認用ドメインアカウントを登録し、MFA の動作確認をします。

■ ユーザー追加

前回使用した AWS Web アプリケーション使用許可セキュリティグループ(CorpAdmins)に入っているユーザーアカウントを Duo Security のユーザーに追加します。

氏名と PC のメールアドレス入力

メール送信

 

■ Duo mobile 設定

メールを受信したら Duo mobile を設定します

受信したメールのリンクを開く

 

■ 動作確認

Web アプリケーションのログイン URL を開き、User ID、Password、MFA Code を入力してログインできることを確認します。

 

ログイン確認が出来たら、ドメイン アカウント同期に備え、登録しユーザーを削除します。

 

[6] Duo Security のドメインアカウント同期設定(1)

オンプレドメインと Duo Security とのアカウント同期は3段階で設定します。
1段階目では、同期するドメイン情報を登録します。

Users で Directory Sync

Active Directory を追加

 

Default が Azure Active Directory になっているので、On-premises Active Directory を選択します。
(実装ミスのような気がするので、このステップはきっと不要になる)

ドメインを登録

 

Directory name 識別子なのでわかりやすい名前
Server 1つしか選べないので、FSMO を持っているドメコンを指定(初期登録後追加できる)
Port 389(LDAP ポート)
Base ドメインの DN
Enrollment email チェック(enrollment メールの自動送信)
Import phones ドメインに登録してある電話番号を取り込む(必要に応じて)

 

ドメインを登録したら、Download your configuration file から、Duo Authentication Proxy で使用する authproxy.cfg をダウンロードします。

 

ちなみに、Enrollment メールの送信先は、ドメインアカウントに登録されている「電子メール」が使用されます。(Duo Security では入力できないので、ドメインアカウントへの設定必須)

 

[7] アカウント同期オンプレ Windows Server 構築

オンプレ環境に、ドメインメンバーの Windows Server を構築し、Duo Authentication Proxy をインストールします。

インストーラーは、EC2 インスタンスにインストールしたものと同じで、インストール手順も同じです。

Synchronizing Users from Active Directory: Duo Security
https://duo.com/docs/syncing_users_from_active_directory

 

Duo Authentication Proxy のインストールが完了したら、先ほどダウンロードした authproxy.cfg を C:\Program Files (x86)\Duo Security Authentication Proxy\conf\authproxy.cfg に上書きコピーします。

準備が出来たら、DuoAuthProxy サービスを起動します。PowerShell で起動するのでしたら、管理権限 PowerShell プロンプトで以下コマンドを叩きます。

Start-Service DuoAuthProxy

 

[8] Duo Security のドメインアカウント同期設定(2)

 

Duo Authentication Proxy が稼働開始すると、Duo Security でドメインのセキュリティグループが選択できるようになるので、アカウント同期をするセキュリティグループを指定(複数指定可能)し、Save Groups します。

ネストされたセキュリティグループに対応しているので、セキュリティグループをまとめたセキュティグループを指定することができます。

セキュリティグループ名は、数文字入力すると候補が表示されるので、その中から選択するのがおすすめです。

 

[9] アカウント同期確認

Sync Now で手動同期し、意図したアカウントが Users に取り込まれていることを確認します。

 

ドメインアカウントに設定されているメールアドレス宛に enrollment メールの自動送信されていることを確認します。

enrollment メール に書かれている URL で Duo mobile アプリを設定し、MFA ログオンできれば動作確認完了です。

 

冗長化

EC2 インスタンスとして作成した Duo Authentication Proxy がダウンすると、認証が出来なくなってしまうので冗長化の検討が必要です。

 

アベイラビリティゾーン(AZ)ダウンに備えて、複数の AZ に Duo Authentication Proxy 配置するのが賢明です。

オンプレ Duo Authentication Proxy は、Duo Security とのアカウント同期用なので、サーバーがダウンしても、代替機を作って authproxy.cfg を上書きすればいいだけなので冗長化の必要性はさして無く、スタンバイ機を準備しておく程度で十分でしょう。

 

運用 Tips

■ スマートフォン忘れ

利用者が、スマートフォンを忘れた場合、設定を一時的に Bypass に変更すると、MFA チェックがされなくなります。(何か入れないと AWS 側でエラーになるので、デタラメ入力でOK)

 

■ スマートフォン紛失

スマートフォン紛失の場合は、不正侵入リスクを回避のためにユーザーを一度セキュリティグループから外して Duo Security から削除します。
新たなスマートフォンが準備できたら、改めてセキュリティグループに参加させてユーザーを再登録します。

 

■ 削除アカウント

セキュリティグループからユーザーを外すと、ユーザーのステータスが Pending Deletion になります。

この段階で MFA が出来なくなりますので、Duo Security から削除する必要はありません。1週間程度放置していると、Pending Deletion ユーザーは自動削除されます。

 

 

同期に関する情報は以下のページあるので、一度目を通しておくと良いでしょう。

Directory Sync - Troubleshooting and FAQ: Duo Security
https://duo.com/docs/adsync-faq

 

使用プロトコル

認証/同期で使われるプロトコルをまとめました。

Duo Application Proxy と Duo Security 間の通信は、アウトバウンドの https のみなので、インバウンド用のグローバルアドレス割り当ては必要ありません。

 

■ 認証

(1) 二次認証
プロトコル ポート 方向
AD connector/Duo Application Proxy
RADIUS udp/1812

(2) MFA 認証
プロトコル ポート 方向
Duo Application Proxy/Duo Security
https tcp/443

 

■ 同期

(3) アカウント同期
プロトコル ポート 方向
Duo Application Proxy/Duo Security
https tcp/443

(4) 情報取得
プロトコル ポート 方向
ADDS/Duo Application Proxy
DNS tcp/53
DNS udp/53
LDAP udp/389
LDAP tcp/445
NTP udp/123
RPC tcp/135
RPC tcp/49152 - 65535

 

関連情報

オンプレの AD DS と AWS の Microsoft AD 間で片方向信頼関係を結ぶ
http://www.vwnet.jp/Windows/Other/2017020601/AWS_MSAD_trust.htm

AWS Microsoft AD での片方向信頼関係の使い方
http://www.vwnet.jp/Windows/Other/2017020701/UseMSAD_trust.htm

AWS Microsoft AD を操作する
http://www.vwnet.jp/Windows/Other/2017020801/ManageMSAD.htm

AWS の Web ログオンをオンプレ ドメイン コントローラーと連携させる
http://www.vwnet.jp/Windows/Other/2017021701/AWSADConnector.htm

パケットキャプチャーソフトをインストールせずにパケットキャプチャーする方法
http://www.vwnet.jp/Windows/WS16/2017013001/PacketCapture.htm

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.