カテゴリー
AWS Client VPN Endpoint VPC

AWS Client VPN Endpointを作成してクライアントからAWSのプライベートサブネットにVPN接続する(サーバー証明書&クライアント証明書による相互認証+AD認証)

今回のゴール

以前、
AWS プライベートサブネット環境からインターネットに接続
環境を構築したのですが、そこからClientVPN経由でAWSのプライベートサブネットに直接アクセスできるようにします。

事前準備

サーバー証明書とクライアント証明書の作成してACMへアップロード

下記サイトを参照して、サーバー証明書とクライアント証明書を作成し、ACMにインポートしてください。
https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/client-authentication.html#mutual

CloudWatchのロググループとログストリームの作成

ClientVPNの接続詳細を記録するときは予めCloudWatchのロググループとログストリームを作成します。

クライアントVPNエンドポイントの作成

VPCメニューより”クライアント VPN エンドポイント”メニューを選択して「クライアント VPN エンドポイントの作成」ボタンをクリックします。

[名前タグ]:識別できる名称
[クライアントIPv4 CIDR]:クライアントに割り当てるCIDR。/22以上で割り当てます。今回は10.10.0.0/22としました

【認証情報】
[サーバー証明書 ARN]:ACMにインポートしたサーバー証明書
[認証オプション]:”相互認証の使用”と”ユーザーベースの認証を使用”にチェックをつけて、”Active Directory 認証”を選択します。
[クライアント証明書 ARN]:ACMにインポートしたクライアント証明書
[ディレクトリID]:ActiveDirectory認証のディレクトリIDを選択します。

同一の認証局(CA)でサーバー証明書とクライアント証明書を発行するときは、クライアント証明書の登録はいらないようなのですが、必須なので選択します。

【接続ログ記録】
※ロググループ・ストリームはここでは作成できませんので事前に作成ください。
[クライアント接続の詳細を記録しますか]:”はい”にチェック
[CloudWatch Logs ロググループ名]:登録済のロググループ名を選択
[CloudWatch Logs ログストリーム名]:登録済のログストリーム名を選択

【その他のオプションパラメータ】
[DNSサーバー1 IP アドレス][DNSサーバー2 IP アドレス]:今回はDirectoryService使用しているのでそのDNSのIPアドレスを入力。(DirectoryServiceメニューで確認できます)

作成したクライアントVPNエンドポイントをサブネットに割り当てていきます。

作成されたクライアントVPNエンドポイントを選択して、”関連付け”タブより「関連付け」ボタンをクリックします。

[VPN]:関連づけるVPCを選択
[関連付けるサブネットの選択]:サブネットを選択します。

サブネットに関連付けされました。
※本来であれば冗長性を考えてもう1つのプライベートサブネットにも関連付けするのですが、今回は予算の関係で見送りました。

次は、クライアントがクライアントVPNエンドポイント経由でどのネットワークにアクセスできるかを設定します。

“認証タブ”より「受信の承認」ボタンをクリックします。

[アクセスを有効にする送信先ネット]:今回プライベートサブネットのサブネットを入力しました。
[アクセスを付与する対象]:”すべてのユーザーにアクセスを許可する”を選択しました。

この登録をもう1つのプライベートサブネット分も登録しました。

クライアントの設定

これでAWSの準備は整いました。
「クライアントの設定をダウンロード」ボタンをおして、OpenVPNクライアント用の設定ファイル(.ovpn)をダウンロードします。

ダウンロードしたファイルをメモ帳で開き、一番下にクライアント証明書と秘密鍵のファイルのディレクトリを追加してください。
(ディレクトリは各自変更してください。)

cert C:\\Users\\[ユーザー名]\\OpenVPN\\config\\client.crt
key C:\\Users\\[ユーザー名]\\OpenVPN\\config\\client.key

今の設定ではすべての通信がVPNに流れてしまいますでの、10.0.0.0/16宛の通信のみVPNに流れるように設定します。
下記も同様に追加します。
※これを設定しないとVPN接続後、インターネットが見れなくなってしまします。

pull-filter ignore redirect-gateway
route 10.0.0.0 255.255.0.0

クライアントからのVPN接続

証明書を作成した時にインストールしたOpenVPNで接続します。
タスクトレイにあるOpenVPNアイコンを右クリックして”Import file”を選択してクライアント設定ファイル(.ovpn)をインポートします。
(タスクトレイにアイコンがないときはスタートメニュより”OpenVPN GUI”を実行してください)

接続します。

ログイン画面が表示されますので、ADに登録されているユーザーを入力します。

接続成功すると、メッセージが表示され、アイコンの画面が通信中(緑)になります。

確認

ローカルのコマンドプロンプトからAWSのDNSにpingが通るか確認します。

ping 10.0.0.xxx

10.0.0.xxx に ping を送信しています 32 バイトのデータ:
10.0.0.xxx からの応答: バイト数 =32 時間 =11ms TTL=127

ローカルのコマンドプロンプトからnslookupでプライベートサブネットにあるWorkSpacesのVDIの名前解決ができるか確認します。

nslookup XXXXXX-XXXXXXX
サーバー:  xxxxx.co.jp
Address:  10.0.0.xxx

名前:    XXXXX-XXXXX.xxxxx.co.jp
Address:  10.0.0.xx

補足

2回目以降にクライアント証明書を作成するには・・・

管理者としてコマンドプロンプトを実行して下記コマンドでOK

cd \Program Files\OpenVPN\easy-rsa
vars
build-key xxxxxxx

コメントを残す

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