Pocket

AWS Client VPNって何よ

AWSがマネージドするClient向けのVPN接続サービスです。VPCに対して、Client VPNのEndpointをアタッチすると、Open VPN ClientとのTLS-VPN接続を確立するのですが、元々はClientがVPN接続をする形式はサポートされておらず、2018/12/18のre:inventで発表されました。現在では東京リージョン対応していないので、今回オレゴンリージョンで設定等試してみました。


■やりたいこと

  • オレゴンにVPC01とのAWS Client VPNの設定
  • 東京リージョンにVPC02,VPC03を2つ設定
  • VPC01(オレゴン)とVPC02,03(東京)をVPCピアリングで接続
  • VPC01,VPC02,VPC03それぞれにEC2の構築
  • AWS Client VPNのユーザー作成(証明書、鍵)
  • 接続した際のログ(cloudwatch logs)が取得できることを確認
  • VPN経由でEC2にSSHできるか確認
  • レイテンシの確認

オレゴンリージョンのEC2から東京リージョン2つのEC2にSSHできればOK。リージョンまたぐのは凄いですね。


■オレゴンリージョンにVPCの設定

  • vpc01

・IPv4 CIDR
 ・10.0.0.0/16

  • subnet01,02

・IPv4 CIDR
 ・10.0.0.0/24
 ・10.0.1.0/24


■東京リージョンにVPCを2つ設定

  • vpc02

・IPv4 CIDR
 ・10.10.0.0/16

  • vpn03

・IPv4 CIDR
 ・10.20.0.0/16

  • subnet(test-vpn02)

・IPv4 CIDR
 ・10.10.0.0/24

  • subnet(test-vpn03)

・IPv4 CIDR
 ・10.20.0.0/24


■オレゴンリージョンと東京リージョンをピアリング接続

  • vpc01→vpc02
  • vpc01→vpc03

先程東京リージョンで作ったvpc02をオレゴンリージョンのvpc01にピア接続をします。同様にvpc03もオレゴンリージョンに紐付けましょう。東京リージョンのピアリング接続で先程2のピアリングのリクエストの承諾をします。

あとは各リージョンにEC2を構築して、各セキュリティグループは0.0.0.0/0全開放してください。

  • オレゴンリージョン
  • プライベートIP: 10.0.0.189
  • 東京リージョン
  • プライベートIP: 10.10.0.80
  • プライベートIP: 10.20.0.196 

■easy-rsaで証明書/鍵の作成

  • git clone

  • 初期化

  • common Nameを追加

  • サーバ側の証明書、秘密鍵の追加

  • クライアント側の証明書、秘密鍵の追加

  • ACM用ルート証明書、証明書、秘密鍵をコピー

  • ACMにaws cliで上記を追加


■AWS Client VPNエンドポイント作成

  • Client VPN Endponts

・Client IPv4 CIDR
 ・10.110.0.0/22

ログはCloudWatch Logs

・Server certificate ARN
・Client certificate ARN
上記のACMを指定

  • Associations

VPCとSubnetをAssociateをクリック。

  • Authorization

東京リージョン2つのCidrを追記する。もう一つは0.0.0.0/0を追加することによってVPNをつないだ時にアクセスが可能になる。

  • Route Table

・10.0.0.0/16
・0.0.0.0/0


■Setting Tunnelblick

https://tunnelblick.net/downloads.html

  • クライアント証明書と鍵をコピー

  • Client Configurationに下記を追加

  • configurationファイルをドラックしてconnect

おおお


■test ssh

ちゃんとip10系でsshできてますな!!レイテンシもオレゴンだけどもそこまで遅くはない。

ちなみに

アカウント発行手順は管理者側とクライアント側があるので、まとめると。

  • 管理者作業

クライアント側の証明書、秘密鍵の追加

configurationファイル(downloaded-client-config.ovpn)をawsコンソールからダウンロードして接続したいユーザに渡す。

  • クライアント側作業

configurationファイルに下記を追加する (configurationファイルと鍵、証明書が同じディレクトリ内に配置する)

configurationファイルをtunnelblickへドラッグアンドドロップしてconnectする。

sshで接続確認をする。

  • アカウント削除

VPNのアカウント削除は直接できないので、各ユーザの証明書をrevokeして、Import Client Certificate CRLからpemを貼ればVPN接続ができなくなるのでOK。


■まとめ

OpenVPNとか構築時に結構大変な思いをする上、AWSの場合はなんて楽なのか!なかなかセキュアな環境と運用が実現できそう。東京リージョンそろそろかな?ちなみに既存のサーバ証明書を使って、新規VPNを構築して、設定等変えることなくVPNができるか検証したところ可能でした。

Pocket

カテゴリー: AWS

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。副業では数社サーバー保守とベンチャー企業のインフラ改善やMENTAで未経験者にインフラのコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、ECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください