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
以下の手順で環境構築します
Duo Security のアカウントを取得します。
[2] Duo Security の RADIUS アプリケーション設定
MFA 認証で使用する RADIUS 設定をします。
AWS に Windows Server EC2 インスタンスを作成し、Duo Authentication Proxy をセットアップします。
AWS AD Connecter の MFA 設定をします。
手動でアカウント登録し MFA の動作確認します。
[6] Duo Security のドメインアカウント同期設定(1)
同期するドメインを登録します。
[7] アカウント同期オンプレ Windows Server 構築
オンプレにドメインメンバーの Windows Server を作成し、Duo Authentication Proxy をセットアップします。
[8] Duo Security のドメインアカウント同期設定(2)
同期するセキュリティグループを指定します。
ドメインアカウントを同期し、MFA の動作確認します。
まずは Duo Security のアカウントを作ります。
アカウント作成時に PC のメールアドレスとスマートフォンアプリが必要になるので、準備しておきます。
■ スマートフォンアプリのインストール
「Duo Mobile」を事前にインストールしておきます。
インストール後の設定は必要ありません。
■ アカウント作成
以下 URL にアクセスし、Sign Up します。
The Trusted Access Company: Duo Security
https://duo.com/
サインアップ
アカウント情報入力
Duo mobile に紐づけ
Pass code 送信
アカウントが出来たら Duo Security の管理画面を開き、アプリケーションの保護で RADIUS を指定します。
Details の Integration key、Secret key、API hostname は Duo Application Proxy に設定するので控えておきます。
設定は Username normalization を Simple にするだけです。
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
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 |
Duo Security に動作確認用ドメインアカウントを登録し、MFA の動作確認をします。
■ ユーザー追加
前回使用した AWS Web アプリケーション使用許可セキュリティグループ(CorpAdmins)に入っているユーザーアカウントを Duo Security のユーザーに追加します。
氏名と PC のメールアドレス入力
メール送信
■ Duo mobile 設定
メールを受信したら Duo mobile を設定します
受信したメールのリンクを開く
■ 動作確認
Web アプリケーションのログイン URL を開き、User ID、Password、MFA Code を入力してログインできることを確認します。
ログイン確認が出来たら、ドメイン アカウント同期に備え、登録しユーザーを削除します。
オンプレドメインと 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 では入力できないので、ドメインアカウントへの設定必須)
オンプレ環境に、ドメインメンバーの 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
Duo Authentication Proxy が稼働開始すると、Duo Security でドメインのセキュリティグループが選択できるようになるので、アカウント同期をするセキュリティグループを指定(複数指定可能)し、Save Groups します。
ネストされたセキュリティグループに対応しているので、セキュリティグループをまとめたセキュティグループを指定することができます。
セキュリティグループ名は、数文字入力すると候補が表示されるので、その中から選択するのがおすすめです。
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 を上書きすればいいだけなので冗長化の必要性はさして無く、スタンバイ機を準備しておく程度で十分でしょう。
■ スマートフォン忘れ
利用者が、スマートフォンを忘れた場合、設定を一時的に 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
Copyright © MURA All rights reserved.