AD Connectorを使ったClientVPNのMFA構成

2020.04.23

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

ClientVPNのMFAの記事もこれで3つ目となりました。前回までの記事では、ディレクトリには「Microsoft AD」を利用していました。 今回は、オンプレ環境にActive Directoryがある想定として、AD Connectorを使ってみたいと思います。

検証する構成

想定環境は下記のように、Internet VPNやDirect Connect経由でオンプレ環境のActive Directoryが利用できる構成です。

RADIUSサーバは、FreeRADIUS単体でもpfSenseのFreeRADIUSでもどちらでも構いません。今回の記事ではその違いは問題にならないので、適宜置き換えて読んでいただければと思います。

300-adc-general

上記環境を用意するのは少々手間でしたので、閉域接続部分はVPC Peeringで代替した下記の構成で検証してみます。

301-adc-general-test

AD環境の準備

オンプレとの閉域接続に見立てた、VPC Peering接続とADサーバ(EC2)は既に作成済みとして確認して進めたいと思います。 特別な構築は特にしておらず、Windows Server 2019でEC2インスタンスを作成し、ADDSをインストール、ドメインコントローラに昇格した程度の作業ですので、作業内容は割愛させていただきます。

また、次の作業も完了しているものとします。

動作確認用のユーザー作成

  • MFAによる接続確認用のユーザー(cmtest001)

302-cmtest001-on-ad

AD Connector専用の接続ユーザーの作成

  • AD ConnectorからオンプレADへの接続ユーザー

307-adconnector-user

このユーザの作成方法については下記を参照してください。

オンプレ側のファイアウォール設定

AD Connectorからドメインコントローラーへの通信には下記ポートのアクセスが許可されている必要があります。

  • TCP/UDP 53 - DNS
  • TCP/UDP 88 - Kerberos authentication
  • TCP/UDP 389 - LDAP

今回は、ドメインコントローラとなるEC2のセキュリティグループにて、上記ポートへのAD Connectorのサブネットからのアクセスを許可しました。

308-sg-domain-controller

参考ページ

RADIUSサーバの構築

以前の記事で、FreeRADIUS単体で作る方法pfSenseサーバで作る方法を紹介していますので、そちらの記事を参考に構築してください。実際につくるのはどちらでも構いません。 (この記事ではサーバ構築は割愛致します)

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

AD Connectorから「UDP 1812ポート」へのアクセスがあるので、RADIUSが動いているEC2のセキュリティグループに許可設定をしておきましょう。

下記のように、AD Connectorのセキュリティグループをソースとして設定します。 (AD ConnectorのディレクトリIDでセキュリティグループを検索して、ソースにするセキュリティグループを特定します)

311-ec2-sg-mfa

AD Connectorの作成

次に、Directory ServiceのコンソールからAD Connectorを作成していきます。 ディレクトリタイプは「AD Connector」を選択します。

310-select-adc

ディレクトリのサイズは、今回は検証なので「スモール」を選択します。

303-select-adc-size

AD Connectorを作成するVPCには、今回はClientVPNを関連付けるサブネットを指定しました。

304-select-vpc

「ADへの接続」設定は次のとおりです。

項目 設定内容
ディレクトリのDNS名 接続先のADのドメイン名
ディレクトリのNetBIOS名 任意
DNS IPアドレス 閉域で接続するドメインコントローラーのサーバのプライベートIP。今回はドメインコントローラとなるEC2のプライベートIP。
サービスアカウントのユーザー名 AD Connectorからの接続用ユーザー名(今回はad.connector)
サービスアカウントのパスワード 上記ユーザーのパスワード

305-connect-ad

問題なければ「ディレクトリの作成」をクリックします。

306-confirm-adc

AD Connectorの作成が完了したら、MFAの設定を行います。該当ディレクトリの「ネットワークとセキュリティ」タブを表示します。

308-adc-nw-sec

画面一番下の「多要素認証」のプルダウンから「有効化」を選択します。

307-enable-mfa

次の画面で詳細設定を行います。

項目 設定内容
表示ラベル 分かりやすいものを指定
RADIUSサーバのDNS名またはIPアドレス 利用するRADIUSサーバのプライベートIP。複数指定する場合はカンマ区切りで指定。
ポート 1812
共有シークレットコード - FreeRADIUS単体の場合:以前の記事内で/etc/raddb/clients.confに追記したsecretの値
- pfSenseの場合:以前の記事内で「認証サーバの追加」で指定した「Shared Secret」
確認済みの共有シークレットコード 上記と同じもの
プロトコル PAP
サーバータイムアウト 適当な秒数を指定
RADIUSリクエストの最大再試行数 適当な秒数を指定

309-mfa-adc-pfsense

AD ConnectorはオンプレADへのプロキシのため、デフォルトでアウトバウンドのセキュリティグループが空いています。そのためMicrosoft ADの時のように、明示的にアウトバウンドの許可設定を追加する必要はありません。

ClientVPNエンドポイントの作成

最後にClientVPNの設定です。 エンドポイントを一度作成するとディレクトリの変更はできないので、AD Connectorを参照するための新しいエンドポイントを作成します。

312-make-clientvpn-endpoint

以前の記事と同様に、VPCの関連付けと認証ルールの追加を行っておきましょう。

VPNクライアントから接続テスト

全ての作業が完了したので、接続テストを行います。 やり方はこれまでと全く同じなので、割愛させていただきます。

以前と同様に、MFAコードを入力して接続します。

315-tunnelblick-connect

316-enter-mfa-code

下記のようにプライベートIPでRADIUSサーバにアクセスできればOKです。 (今回はpfSenseサーバの専用インタフェースにadminアカウントでSSH接続してみました)

313-ssh-test

最後に

手順としては、Microsoft ADのときとほとんど変わりません。 AD Connector特有の事項として、オンプレADにアクセスするための専用ユーザーの作成、オンプレファイアウォールの接続要件をクリアする、といった点くらいでしょうか。

3回に渡って、ClientVPNのMFAを検証してみました。 他にも試したいパターンがあるので、また次の機会にご紹介できればと思います。

以上です。