はじめに
AWS Certified SysOps Administrator - Associateの試験ラボを乗り切るために、勉強していることをなんとなくメモっていきます。
基本的なハンズオンの内容は説明せずに出てきた単語を少し深掘りしていきます。
行うこと
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/
Network編#3 クライアントVPNをつかって、リモート接続環境を構築しよう
本人情報
IT現場雑用員(SEで採用されながら一生Excel触ってる人)
半年前にAWS SAA取得済み
全体の流れ
自宅、あるいは外出先からVPN接続を通ってクライアントエンドポイントに接続を行い、ACM証明書を使って送信元の証明を行います。その後ENIを経由してEC2に接続を行います。ENIは送信元のIPアドレスを変換することになるため、SNATとして働いていると言えます。
手順は
VPC,EC2の作成 → ログの出力先 → 証明書の作成 → VPNエンドポイント → VPN接続とログの確認の順に行います。
AWS Client VPNとは
どこからでも安全な形でAWSのリソースにアクセスできるマネージドVPNサービスです。OpenVPNというサーバー間に暗号化されたトンネルを作るオープンソースのソフトウェアがベースになっています。マネージド型サービス、高可用性、高伸縮性といったAWSとしてのサービスのメリットが多く含まれています。
ACM証明書管理
クライアントがクライアントVPNへの接続が許可されているのかを確かめるために使用します(クライアント認証)。クライアントVPNでは3種類のクライアント認証を利用できますが、今回はハンズオンに沿って相互認証を利用します。相互認証では、サーバー、クライアントの秘密鍵と認証局に署名された公開鍵を含む証明書をそれぞれ作成します。クライアントVPNエンドポイント、クライアントに登録することによって通信元の確認を行います。
新しい認証局 (CA) を構築するには、このコマンドを実行し、プロンプトに従います。
./easyrsa build-ca nopass
公開されている中間認証局を使用せずに、自分で認証局を作成して証明書を発行することもできます。自分で作成した認証局で証明書を作成することをオレオレ証明書と呼び、一般的にはあまり推奨されていません。しかし今回のような正しい証明書クライアント側に登録されたことがしっかりと確認できる場合は、それ以降の通信を保証する役割を十分に果たせるため利用されます。会社内での少ない端末を利用する際にも同じことが言えるかと思います。
疎通確認
AWS VPN Clientの確認
CloudWatch logsの確認
{
"connection-log-type": "connection-attempt",
"connection-attempt-status": "successful",
"connection-attempt-failure-reason": "NA",
"connection-id": "cvpn-connection-00cf634d0baa04624",
"client-vpn-endpoint-id": "cvpn-endpoint-0f2a98254f14829db",
"transport-protocol": "udp",
"connection-start-time": "2022-03-05 15:13:21",
"connection-last-update-time": "2022-03-05 15:13:21",
"client-ip": "100.64.0.2",
"common-name": "client1.domain.tld",
"device-type": "mac",
"port": "43818",
"ingress-bytes": "0",
"egress-bytes": "0",
"ingress-packets": "0",
"egress-packets": "0",
"connection-end-time": "NA",
"connection-duration-seconds": "0"
}
無事疎通を確認することができました。
補足
ハンズオン内ではsubnet255のENIについて深く説明がありませんでしたが、疎通確認まで行った段階で2つのENIが作成されていることを確認しました。これはクライアントVPNエンドポイントとsubnet255を関連付けた時とsubnet1内の EC2インスタンスに接続される時でそれぞれ使用されるものです。インスタンスのENIとは違い、サブネットのENIは自動的に作成されます。