Shibboleth IdP+MFA Serverで多要素認証(MFA Serverインストール編)

こんにちは。サイオステクノロジー技術部の小山です。

Microsoft Azureでは、ライセンス契約することによりMFA機能を利用することができます。

機能の中に、MFAサーバーが認証LDAPとして振る舞い、認証時に多要素認証を行うという機能があり、
面白そうなのでShibboleth IdPと連携して簡易な多要素認証環境を構築しました。

はじめに

Shibboleth IdPとは

SAML規格に対応したシングルサインオンを実現するためのオープンソースソフトウェアです。

MFAとは

MFA(Multi-Factor Authentication)とは、パスワード認証以外に、ユーザーが所持している物や生体情報で認証を行うことで、セキュリティ強度を高めるための認証方法です。

Azure MFAの種類

AzureのMFA機能には大きく分けて下記の2種類あり、それぞれ利用できる機能が異なります。両者の違いについては、こちらを参照ください。

・Azure MFA・・・クラウド版

・Azure MFA Server・・・オンプレミス版

(※2018年5月現在、MFAの利用はAzure AD Premiumライセンスが必要となります。検証する際は試用版等の使用が必要です。)

 

用途によってどちらを使うか決めましょう。今回は下記の理由からオンプレミス版(Azure MFA Server)を使用します。

・ユーザー源泉がオンプレミスのLDAP

・MFA ServerがLDAPとして振る舞う必要がある

・Shibboleth IdPのカスタマイズを最小限にしたいので、携帯電話でOTPを受信⇒返信するだけで認証できる「双方向 SMS」認証

構築する環境

以下のような環境を構成します。

・OpenLDAPがユーザーの源泉および認証先

・内部(オフィス等)からはパスワード認証のみ

・外部からはパスワード認証+OTP

Shibboleth IdP~OpenLDAP間の認証をMFA Serverが中継し、認証時に双方向OTP認証を実行する

サーバーは下記を用意します。

・Shibboleth IdP + OpenLDAPサーバー (CentOS7.4)

・MFA Server用のWindowsサーバー (Windows Server 2016)

前提条件

・Azure Active Directoryを作成し、Azure AD Premium(試用版でも可)を契約していること

・Shibboleth IdP/OpenLDAPのインストール、セットアップが済んでいること

MFA Serverのダウンロード

MFA Serverのダウンロードを行います。

・作業対象:自身の作業端末

AzureポータルからAzure Active Directoryにアクセスし、【MFAサーバー】を選択します。

mfashib2

【ダウンロード】をクリックしてMFA Serverのインストーラをダウンロードします。

mfashib3

【双方向テキストメッセージのタイムアウト秒数】にタイムアウト秒数を入力し、保存します。

Shibboleth IdPのログイン中に応答する必要があるので、長めに設定しています。(画像では3分にしていますが、もう少し短くてもいいかもしれません。)

mfashib4

以上でMFA Serverのダウンロードは完了です。

MFA Serverのインストール

MFA Serverのインストールを行います。

・作業対象:MFA Server用のWindowsサーバー

ダウンロードしたインストーラをWindowsサーバーに転送し、ダブルクリックで起動します。

設定はデフォルトのまま【Next】をクリックします。

mfashib5

【Finish】をクリックします。

mfashib6

インストール完了後、MFA Serverが起動します。

構成ウィザードを実行するか聞かれますが、スキップします。

mfashib7

Azureポータルの【MFAサーバー⇒サーバー設定】の箇所で、【生成】をクリックして表示される認証情報をメモしてください。

mfashib8

メモした認証情報をMFA Serverに入力し、【Activate】をクリックします。

mfashib9

任意のグループ名を入力し、【OK】をクリックします。

mfashib10

構成ウィザードを実行するか聞かれるため、【No】をクリックします。

mfashib11

MFA Serverが起動すれば、インストールは完了です。

mfashib12

ユーザー情報の同期

LDAPのユーザーに対して多要素認証を設定するため、OpenLDAPからユーザー情報の同期を行います。

・作業対象:MFA Server用のWindowsサーバー

MFA Serverの左メニューから【Directory Integration】を選択します。

mfashib13

【Settings】タブで、源泉ディレクトリの情報を入力します。今回はOpenLDAP想定です。

mfashib14

【Filters】タブで、LDAP参照するためのフィルタを入力します。

mfashib15

【Attributes】タブで、取得する属性を設定します。デフォルトはActive Directoryの属性になっているので注意しましょう。

特に、Unique identifierについては、ユーザー識別に使用されるため重要です。

mfashib16

【Synchronization】タブで、同期の設定を行います。今回は認証方式として、テキストメッセージの双方向(Two-Way)を設定します。

mfashib17 mfashib18 mfashib19

設定が終わったら【Synchronize Now】をクリックすると、LDAPからのユーザー同期が実行されます。

mfashib20

左メニューのUsersから、ユーザーが同期されているか確認します。

mfashib21

デフォルトではユーザー名の照合にSIDが使用されているため、OpenLDAPからインポートしたままでは

“User does not have a SID needed for username resolution”という警告により、ユーザーを使用することができません。

そのため、ユーザー照合に使用する情報を、SIDからLDAP一意識別子に変更する必要があります。

左メニューの【Company Settings】の【UsernameResolution】タブで、【Use LDAP unique identifier attribute for matching usernames】を選択します。

mfashib22

再度、左メニューの【Users】からユーザーを確認し、警告が消えていることを確認します。

mfashib23

以上でユーザー情報の同期設定は完了です。

LDAP認証設定

MFA ServerがLDAPとして振る舞うよう設定します。

・作業対象:MFA Server用のWindowsサーバー

MFA Serverのコンソールを起動し、左メニューの【LDAP Authentication】を選択し、LDAP認証方のポート番号、許可するクライアントを設定します。

mfashib24

以上でLDAPの設定は完了です。

動作確認

ここまででMFA Serverの準備が整いました。実際にサーバー上で認証テストを行います。

・作業対象:MFA Server用のWindowsサーバー

MFA Serverのコンソールを起動し、左メニューの【Users】を選択します。

一覧からテストするユーザーを選択し、【Test】をクリックします。(※ユーザーにはSMS用の電話番号が同期されいるものとします。)

mfashib25

OpenLDAPのユーザーと同じパスワードでLDAP Bindを行います。

mfashib26

テキストメッセージがユーザーの電話番号に送信されます。

mfashib27

携帯電話でメッセージを受信することを確認します。

双方向(Two-Way)のため、受信したコードをそのまま入力して返信します。

mfashib28

送信したコードが正しければ、認証テストは成功となります。

mfashib29

以上でMFA Serverの準備は完了しました。

次回はShibboleth IdP側の設定と、動作確認を行います。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

1 COMMENT

たなべとしはる

MFAserverがお亡くなりになってAzure MFAのみになってしまったので、
そこもあわせて最新版をおねがいしまっす

返信する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です