https://zenn.dev/sakai_nako/articles/aws_client_vpn_01
https://docs.aws.amazon.com/ja_jp/vpn/latest/clientvpn-admin/cvpn-getting-started.html
クライアント VPN では、次のタイプのクライアント認証を使用できます。
・Active Directory 認証 (ユーザーベース)
・相互認証 (証明書ベース)
・シングルサインオン (SAML ベースのフェデレーション認証) (ユーザーベース)
クライアントに割り当てるIP アドレス範囲は、ターゲットネットワークのアドレス範囲、VPC のアドレス範囲、またはクライアント VPN エンドポイントに関連付けられるルートと重複できません。
クライアントアドレス範囲は /22 以上で、/12 CIDR ブロックサイズを超えないようにする必要があります。
前提:
クライアントOSはWindows 10 Pro
デフォルトVPCを使用する
AWS CLI実行用のEC2インスタンスをデフォルトVPCに起動し、疎通確認にも使用する
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 1.2 jqインストール
sudo yum -y install jq
-- 2. 必要なソフトの準備
OpenVPN クライアント
vpnux PKI Manager
-- 3. 相互認証用の証明書の作成
プライベートCAの構築
サーバ証明書の作成
共通名: server.test99999999.local
クライアント証明書の作成
共通名: client.test99999999.local
-- 4. 相互認証用の証明書をACMへ登録
aws acm import-certificate \
--certificate fileb://server.test99999999.local.crt \
--private-key fileb://server.test99999999.local.key \
--certificate-chain fileb://ca.crt
aws acm describe-certificate \
--certificate-arn arn:aws:acm:ap-northeast-1:999999999999:certificate/11111111-1111-1111-1111-111111111111
-- 5. クライアントVPN エンドポイントの作成
aws ec2 create-client-vpn-endpoint \
--client-cidr-block 10.0.0.0/16 \
--server-certificate-arn arn:aws:acm:ap-northeast-1:999999999999:certificate/11111111-1111-1111-1111-111111111111 \
--authentication-options '[
{
"Type": "certificate-authentication",
"MutualAuthentication": {
"ClientRootCertificateChainArn": "arn:aws:acm:ap-northeast-1:999999999999:certificate/11111111-1111-1111-1111-111111111111"
}
}
]' \
--connection-log-options Enabled=false \
--transport-protocol udp \
--vpn-port 443 \
--split-tunnel \
--tag-specifications 'ResourceType=client-vpn-endpoint,Tags=[{Key=Name,Value=vpnep01}]' \
--security-group-ids sg-22222222222222222 \
--vpc-id vpc-33333333333333333 \
--client-connect-options Enabled=false \
--session-timeout-hours 8 \
--client-login-banner-options Enabled=false
aws ec2 describe-client-vpn-endpoints
-- 6. サブネットをクライアントVPN エンドポイントに関連付ける
aws ec2 associate-client-vpn-target-network \
--client-vpn-endpoint-id cvpn-endpoint-44444444444444444 \
--subnet-id subnet-55555555555555555
aws ec2 describe-client-vpn-target-networks \
--client-vpn-endpoint-id cvpn-endpoint-44444444444444444
10分程度かかる。しばらく待つ
-- 7. クライアントVPNエンドポイントに承認ルールを追加する
aws ec2 authorize-client-vpn-ingress \
--client-vpn-endpoint-id cvpn-endpoint-44444444444444444 \
--target-network-cidr 172.31.32.0/20 \
--authorize-all-groups \
--client-token 12345
aws ec2 describe-client-vpn-authorization-rules \
--client-vpn-endpoint-id cvpn-endpoint-44444444444444444
-- 8. クライアント設定のダウンロード
ダウンロードしたクライアント設定の編集
以下の2行を追加する
cert C:\\test\\client.test99999999.local.crt
key C:\\test\\client.test99999999.local.key
-- 9. OpenVPNクライアントで接続
aws ec2 describe-client-vpn-connections \
--client-vpn-endpoint-id cvpn-endpoint-44444444444444444
-- 10. クリーンアップ
-- クライアントVPNエンドポイントの関連付けの解除
aws ec2 describe-client-vpn-target-networks \
--client-vpn-endpoint-id cvpn-endpoint-44444444444444444
aws ec2 disassociate-client-vpn-target-network \
--client-vpn-endpoint-id cvpn-endpoint-44444444444444444 \
--association-id cvpn-assoc-66666666666666666
-- クライアントVPNエンドポイントの削除
aws ec2 describe-client-vpn-endpoints
aws ec2 delete-client-vpn-endpoint \
--client-vpn-endpoint-id cvpn-endpoint-44444444444444444
-- ACMから相互認証用の証明書を削除
aws acm delete-certificate \
--certificate-arn arn:aws:acm:ap-northeast-1:999999999999:certificate/11111111-1111-1111-1111-111111111111
-- OpenVPNクライアントの終了とアンインストール
-- vpnux PKI Managerの終了とファイル削除