Duo Securityを利用してAmazon WorkSpacesにMFA(多要素認証)を導入する

2017.12.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon WorkSpacesの利用にあたり、お客様からセキュリティ対策としてMFA(多要素認証)導入のご要望をいただくケースが多々あります。 Amazon WorkSpacesでMFAを利用するためには、ワンタイムパスワードを認証できるRADIUSサーバーを別途用意するがあります。OSSや商用のパッケージ製品を利用してRADIUSサーバーを構築する方法もありますが、運用の手間を省くという観点ではSaaSを利用するのも有力な選択肢かと思います。

今回は、様々なアプリケーションに対して2段階認証を導入できるサービスDuo Security(以降Duo)を利用して、Amazon WorkSpacesにMFAを導入する方法をご紹介します。

目次

システム構成

Amazon WorkSpaces + Duo システム構成図

  • Active DirectoryはAWSのMicrosoft ADを利用します。
  • AD Connectorを利用してオンプレミス環境のActive Directoryと連携することも可能です。
    • 本ブログ記事執筆時点ではSimple ADはRADIUSサーバー連携に対応していません。
  • AWS上にDuo Authentication Proxyサーバーを構築します。
  • Microsoft AD → DuoへはこのDuo Authentication Proxy経由でアクセスします。
  • Duo Authentication ProxyはLinux及びWindows向けのパッケージが提供されているのでこれを利用します。

なお、本ブログではWorkSpaces環境の構築手順には触れません。VPC、Microsoft AD、WorkSpaces、EC2(Amazon Linux、Duo Authentication Proxy用)は構築済みの前提で話を進めます。

Duoアカウント登録&初期設定

まずはじめに必要なのはDuoのアカウント登録です。手順は弊社市田のブログ記事に詳しいです。

なお、MFAを利用するためにはDuo MFAプラン($3/User/Month、最低10Userから)の契約が必要です。

保護対象のアプリケーション(RADIUS)の登録

Duoの管理画面にログインし、DuoでRADIUSインテグレーション機能を使うための設定を行います。

  • Duo Seucirytの管理画面から「Application」-「Protect an Application」を選択します。

Amazon WorkSpaces + Duo RADIUSアプリケーション登録1

  • アプリケーションの一覧から「RADIUS」を選択し「Protect this Application」をクリックします。

Amazon WorkSpaces + Duo RADIUSアプリケーション登録2

  • インテグレーションキー、シークレットキー、APIホスト名が発行されるので、これらを控えておきます。(これらの情報は後ほどDuo Authentication Proxyに設定します。)

Amazon WorkSpaces + Duo RADIUSアプリケーション登録3

Duo Authentication Proxyのインストールと設定

EC2(Amazon Linux)にDuo Authentication Proxyをインストールします。

依存パッケージのインストール

OpenSSLやPythonのdevパッケージなどをインストールします。Pythonは「2.6」または「2.7」が必要です。

$ sudo yum install gcc make openssl-devel python-devel libffi-devel

Authentication Proxy for Unixのダウンロード

最新版をダウンロードします。

$ wget https://dl.duosecurity.com/duoauthproxy-latest-src.tgz

ビルド

ダウンロードしたファイルを展開しビルドします。

$ tar xzf duoauthproxy-latest-src.tgz
$ cd duoauthproxy-2.7.0-src
$ export PYTHON=python
$ make

duoauthproxy-2.7.0-srcの「2.7.0」の部分にはダウンロードしたAuthentication Proxyのバージョンを指定します。(本ブログ記事執筆時点のAuthentication Proxy最新版は「2.7.0」でした。)

PYTHON=pythonでpythonコマンドのバイナリファイル名を指定します。環境によっては「python2.6」、「python2.7」といったファイル名になるかもしれません。

インストール

デフォルト設定でインストールします。

$ cd duoauthproxy-build
$ sudo ./install


In what directory do you wish to install the Duo Authentication Proxy?
[/opt/duoauthproxy]

Enter the name of a user account under which the Authentication Proxy should be run:
[nobody]

Copying files... Done.

Create an initialization script to run the proxy upon startup? [yes/no] yes

Installation completed. Before starting the Authentication Proxy,
Please edit the configuration file at:

/opt/duoauthproxy/conf/authproxy.cfg

設定

設定ファイルは「/opt/duoauthproxy/conf/authproxy.cfg」です。

  • 設定が必要なのは[duo_only_client]セクションと[radius_server_duo_only]の2つです。それ以外の設定は全て削除またはコメントアウトします。
  • [duo_only_client]セクションは、セクション名のみを書きます。
  • [radius_server_duo_only]セクションには以下を設定します。
項目 設定値 備考
ikey インテグレーションキー Duoで発行されたものを設定
skey シークレットキー Duoで発行されたものを設定
api_host APIホスト名 「api-XXXXXXXX.duosecurity.com」Duoで発行されたものを設定
radius_ip_1 Microsoft ADのIPアドレス1
radius_secret_1 共有シークレットコード1 同じシークレットコードをMicrosoft AD側にも設定
radius_ip_2 Microsoft ADのIPアドレス2
radius_secret_2 共有シークレットコード2 共有シークレットコード1と同じものを設定
client duo_only_client 認証プロキシが一次認証(プライマリ認証)を実行するために使用する認証方式
今回のようにMFAの2次認証(セカンダリ認証)に利用する場合はduo_only_clientを設定する
port 1812 RADIUS認証リクエストの接続ポート。デフォルト:1812
failmode safe または secure Duoのサービスに接続できない場合の動作
safe : 一次認証の成功 = ユーザー認証が許可される(デフォルト)
secure : ユーザー認証が拒否される
  • 設定ファイルの例
[duo_only_client]

[radius_server_duo_only]
ikey=XXXXXXXXXXXXXXXXXXXX
skey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
api_host=api-xxxxxxxx.duosecurity.com
radius_ip_1=10.0.0.100
radius_secret_1=theradiussecret
radius_ip_2=10.0.1.200
radius_secret_2=theradiussecret
client=duo_only_client
port=1812
failmode=safe

共有シークレットコードは、実際には十分に複雑な文字列を設定してください。

起動

$ sudo /opt/duoauthproxy/bin/authproxyctl start

セキュリティグループの設定

以下の通信を許可します。

  • Microsoft ADのセキュリティグループ:Duo Authentication Proxyへの、UDP/1812のアウトバウンド通信を許可
  • Duo Authentication Proxyのセキュリティグループ:Microsoft ADからの、UDP/1812のインバウンド通信を許可

Microsoft ADのセキュリティグループ設定

  • WorkSpacesのマネージメントコンソールを開いて「ディレクトリ」を選択します。
  • ディレクトリ(Microsoft AD)のセキュリティグループIDを確認します。

Amazon WorkSpaces MFA with Duo セキュリティグループ設定1

  • EC2のマネージメントコンソールからMicrosoft ADのセキュリティグループを選択し、Duo Authentication ProxyへのUDP/1812のアウトバウンド通信を許可します。

Amazon WorkSpaces MFA with Duo セキュリティグループ設定2

Amazon WorkSpaces MFA with Duo セキュリティグループ設定3

Duo Authentication Proxyのセキュリティグループ設定

Duo Authentication Proxy側は、Microsoft ADからのUDP/1812のインバウンド通信を許可します。

Amazon WorkSpaces MFA with Duo セキュリティグループ設定4

Microsoft ADのMFAの有効化

  • Directory Serviceのマネージメントコンソールを開き、Microsoft ADのディレクトリIDをクリックします。

Amazon WorkSpaces MFA with Duo Microsoft AD MFA設定1

  • Microsoft ADの設定で「多要素認証の有効化」にチェックを入れます。
  • 以下を設定し「ディレクトリの更新」をクリックします。
項目 設定値 備考
RADIUSサーバーのIPアドレス Duo Authentication ProxyのIPアドレス カンマ区切りで複数指定可能
ポート 1812
共有シークレットコード Duo Authentication Proxyに設定したものを同じシークレットコードを設定
共有シークレットコードの確認 共有シークレットコードの確認入力
プロトコル PAP
サーバータイムアウト(秒単位) RADIUSリクエストのタイムアウト値 最大50秒まで設定可能
最大再施行回数 RADIUSリクエストに許可される最大再施行回数 最大10回まで設定可能

Amazon WorkSpaces MFA with Duo Microsoft AD MFA設定2

  • 「RADIUSステータス」が「完了済み」になれば設定完了です。

Amazon WorkSpaces MFA with Duo Microsoft AD MFA設定3

Duoのユーザー作成

Duo側でWorkSpacesのログインユーザーと同名のユーザーを作成します。

  • Duoの管理画面で「User」を選択し「Add User」をクリックします。

Amazon WorkSpaces MFA with Duo Microsoft AD Duoユーザー登録1

  • ユーザー名を入力し「Add User」をクリックします。

Amazon WorkSpaces MFA with Duo Microsoft AD Duoユーザー登録2

  • ユーザーのメールアドレスを入力し「Save Changes」をクリックします。

Amazon WorkSpaces MFA with Duo Microsoft AD Duoユーザー登録3

  • 「Send Enrollment Email」をクリックして、ユーザーにMFA設定のためのメールを送信します。

Amazon WorkSpaces MFA with Duo Microsoft AD Duoユーザー登録4

ユーザー側のMFA設定

ユーザー側でMFAを設定します。今回はiPhoneを利用する場合の手順をご紹介します。 iPhoneには予めDuo Mobileをインストールしておきます。

  • Enrollmentのメールが送信されてくるので、メール本文中のリンクをクリックします。

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment1

  • 「Start Setup」をクリックします。

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment2

  • 認証に利用するデバイスを選択します。(Mobile phoneを選択します。)

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment3

  • 国名を選択し、電話番号を入力します。

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment4

  • Mobile phoneの種類を選択します。(iPhoneを選択します。)

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment5

  • 「I have Duo Mobile installed」をクリックします。

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment6

  • Duo Mobileを起動していQRコードをスキャンします。

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment7

  • 以下の画面が表示されればMFAの設定完了です。「Finish Enrollment」をクリックします。

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment8

Amazon WorkSpaces MFA with Duo Microsoft AD MFA Enrollment9

WorkSpacesに接続

WorkSpacesクライアントを起動すると、ユーザー名とパスワードに加えてMFAコードの入力欄が表示されます。

Amazon WorkSpaces MFA with Duo Microsoft AD WorkSpacesログイン1

Duo Mobileを起動して表示されるMFAコードを入力します。

Amazon WorkSpaces MFA with Duo Microsoft AD WorkSpacesログイン2

まとめ

実運用ではAD Connectorを利用してオンプレミス環境にある既存のActive Directoryと連携するケースが多いかと思いますが、その場合も今回ご紹介したものと同様の手順でMFAを導入することができます。

Amazon WorkSpacesをよりセキュアに利用するために、MFAの導入をご検討ください。