2018.12.11

外部からAWS社内システムに早く、安く、安全に接続する

AWS事業部の圓山と申します。
今回のテーマは「VPN」になります。

外出先や、外部拠点からAWS内の社内システムに接続したいというご要望は多いのではないでしょうか。
オンプレミスの場合、VPNライセンスを適用した物理ルータでも実現可能ではありますが、AWS環境ですと簡単にVPN環境を構築することができます。

今回は、AWS環境にADが存在する(ドメイン)環境であることを前提に、外部接続元からAWS環境へドメインユーザにてVPN接続可能となる環境の構築についてご紹介します。
上記方法をとることで、ドメインユーザとは別の、VPNユーザを作成する(ドメインユーザとの二重管理する)手間が省けます。

0.はじめに

今回の検証環境の構成は、以下となります。
画面右側の「検証用クライアント端末」「検証用Tempサーバ」と「OpenVPNサーバ」間でVPNを張り、ADDS(ActiveDirectoryDomainService)操作用サーバへ疎通を取りたいと思います。
もちろん、両VPC間でピアリング接続などは、行っていません。

検証環境構成

1.事前準備

今回の検証で使用するADはAWSマネージドサービスであるMicrosoftADを使用します。
そのため、事前にMicrosoftADを構築しておく必要があります。
また、今回はドメインユーザを使用してVPN接続を行いますので、VPN接続用のテストユーザを作成しておきましょう。
※本記事では、「testuser」を検証用ドメインユーザとします。

2.OpenVPNサーバの構築

AWSコンソールから「インスタンスの作成」→「AWS Marketplace」をクリックします。
検索窓に「OpenVPN」と入力し検索しましょう。
※下の画面では、無料対象枠の選択肢がありますが、[Bring Your Own License](ライセンス持ち込み)形態のインスタンスのため、選択しません。

下にスクロールしていくと・・・

ありました。Free Trial版です。
今回はこちらを選択し、構築していきます。
実運用を想定されている場合は、想定接続ユーザ数に応じて選択しましょう。

以下のページは表示されたら、「Continue」をクリックします。

別ウィンドウが開き、インスタンスの選択画面になりますので、インスタンスタイプを選択し、「次の手順:インスタンスの詳細の設定」をクリックします。今回はテスト用なので、「t2.micro」を選択します。

インスタンスの詳細設定を行い、「次の手順:ストレージの追加」をクリックします。
※ここで注意なのが、VPNサーバを配置するサブネットはADサーバと通信できる場所に配置すること、「自動割り当てパブリック IP」は有効化することです。
ストレージの容量はデフォルトのままで「次の手順:タグの追加」をクリックします。

タグ情報を入力し、「次の手順:セキュリティグループの設定」をクリックします。

セキュリティグループを設定する画面にて、すでにいろいろな設定が定義されたセキュリティグループが定義されています。
VPN接続に必要な設定が定義されているので、今回はそのままのセキュリティグループを使用します。
内容を確認後、「確認と作成」をクリックします。

インスタンスの確認画面が表示されるので「作成」をクリックします。
※作成後は、必要に応じてEIPを割り当てましょう。

インスタンス起動後、初回ログイン(ssh)を行い、初期設定を行う必要があります。
初回設定については、利用規約の同意項目にて「yes」と入力し、その後はデフォルト設定で良ければ、「Enterキー」を連打して先に進みましょう。
※必要であれば適宜設定変更を行ってください。
設定が完了したら、Admin権限のユーザ/パスワードを設定します。
初期に作成されているユーザは「openvpn」ユーザです。
以下のコマンドで「openvpn」ユーザのパスワードを設定しましょう。
コマンド:sudo passwd openvpn

※今回はドメインユーザにて、VPN接続を行う事を検証するため、VPNサーバ自体の設定は極力省いております。 適宜、タイムゾーンの設定等は行ってください。
では、さっそくですがOpenVPNサーバにログインしてみましょう。
ブラウザにて以下を入力します。
https://【対象サーバのpublicIP】:943/admin

この画面が表示されたら「詳細設定」→「[パブリックIP]にアクセスする(安全ではありません)」の順にクリック
ログイン画面が表示されたら、以下のユーザ/パスワードでログインします。
※パスワードは先ほど設定したものになります。

3.OpenVPNサーバの設定

ログインが完了すると以下の画面が表示されます。
画面左のメニューから「LDAP」を選択します。

表示された以下の画面で、必要な情報を入力しましょう。
LDAP Setting:ADサーバもしくはAWS DirectoryServiceのIPアドレス。
(今回は検証用にAWS DirectoryServiceを使用しているので、primary、secondaryのIPを入力しています。)

下にスクロールしていき、以下の情報を入力します。
「Username Atteibute」の設定値は、「sAMAccountName」固定でOKです。

上記、「Bind DN」の情報はどこから持ってくれば良いのかというと、ADDS(ActiveDirectoryDomainService)管理用サーバ(ドメイン参加済み)から以下のコマンドを実行し、情報を取得してください。
コマンド:dsquery user -name admin
「password」欄に入力するのは、ドメインAdminユーザのパスワードです。

最後に、「Save Settings」をクリックして、openvpn側の設定は完了です。

4.接続準備

ここからは、実際の接続準備になります。
前段の構成図にも記載していますが、別VPCの「検証用Tempサーバ」および「検証用クライアント端末」からOpenVPNサーバとVPN接続を行いたいと思います。
最終的にはVPN接続後、別NWから疎通確認が取れることを確認します。

イメージ図

事前準備①
「検証用クライアント端末」「検証用Tempサーバ」にVPNクライアントをインストールします。
※インストーラは、以下の公式ページから対象OSに合った適切なものをダウンロードしてください。

問題なくインストールできたら準備完了です。
事前準備②
接続を行う前に、今回の検証用に新規ドメインユーザ「testuser」をDirectoryServiceにて作成します。
まず、既にドメイン参加している「ADDS(ActiveDirectoryDomainService)操作用サーバ」にログインし、ユーザを作成していきます。

検証ユーザなので、パスワードは無期限としています。

接続検証用のドメインユーザを新規で作成できました。
次項より、実際に「testuser」を使って、VPN接続を行っていきたいと思います。

5.クライアントから接続してみる

まずは、「OpenVPNサーバ」とは別VPCに存在していた「検証用Tempサーバ」から接続を試みます。
VPN接続前のため、もちろんpingコマンドは通りません。

先ほどインストールした、VPNクライアントを起動し、VPN接続を行います。
「Server」欄には、対象のOpenVPNサーバのグローバルIP(EIP)を入力し、Connectをクリックします。
接続ユーザは先ほど作成した「testuser」を使用します。

初めて接続するので、以下のようなポップアップが表示されますが、気にせず「Yes」をクリックして先に進みます。

接続が完了すると、以下のポップアップが表示され、無事にVPN接続できたことを確認できます。

このマークが表示されればOKです。
ここで、先ほど通らなかったpingコマンドをもう一度叩いてみましょう。

同じ宛て先のローカルIP宛てにpingを実行していますが、問題なく疎通できている事を確認できました。
ここからは、「検証用クライアント端末」から実際にインターネット経由でのVPN接続を試してみます。
手順については先ほど行った「検証用Tempサーバ」と同様です。
やはり、VPN接続していないので対象のローカルIP宛てのpingは届きません。

VPN接続手順自体は、先ほど実施したものと全く変わらないので割愛しますが、「検証用クライアント端末」からも同様に、「testuser」にて接続します。
以下の表示がでたら、接続成功です。

ここでも同様に、先ほど通らなかったpingコマンドをもう一度叩くと、問題なく疎通できていることが確認できます。

ここで、現在「検証用Tempサーバ」と「検証用クライアント端末」の2台がOpenVPNサーバと接続していることになります。
同時接続数は、OpenVPNサーバの管理画面から確認することができます。
「Current Active Users」が「2」になっていることが確認できます。

6.さいごに

いかがでしたでしょうか。
今回は、AWS上で手軽に構築できるOpenVPNサーバの検証を行いました。
社内システムに外部から接続したいという声は多いかと思います。今回ご紹介したOpenVPNは構築や実装が本当に簡単なので、ぜひ試していただければと思います。
今回は利便性を考慮し、ドメインユーザでの接続を行いましたが、VPN接続用のユーザと分けることももちろん可能です。(むしろ分けたほうが構築はより簡単です。)
こういったシステムが必要になった際は、ぜひご参考にしていただければと思います。
最後までお付き合いいただき、ありがとうございました。
81 件
     
  • banner
  • banner

関連する記事