[アップデート] AWS Site-to-Site VPN にセキュリティ強化のための3つの新機能が導入されました
こんにちは、なおにしです。
AWS Site-to-Site VPN に関するアップデートがありましたのでご紹介します。
はじめに
2025年6月3日に以下のアップデートが公開されました。
内容としてはAWS Site-to-Site VPN のセキュリティ強化ということで、以下3つの機能が追加されています。
- 事前共有キー (PSK) のAWS Secrets Manager への統合
- 事前共有キー (PSK) をサイト間 VPN サービスに直接保存するのではなく、AWS Secrets Manager に保存可能
- VPNアルゴリズムを追跡するための新しいAPI「GetActiveVpnTunnelStatus」の追加
- アクティブな VPN トンネルで使用されているセキュリティパラメータをリアルタイムで可視化可能
- カスタマーゲートウェイ(オンプレミス側VPNルータ)に適用するサンプルコンフィグを取得するAPI「GetVpnConnectionDeviceSampleConfiguration」に対する「recommended」パラメータの追加
- IKEv1 などのレガシーオプションを除外した最新のプロトコルの使用を強制する推奨セキュリティ設定を生成可能
ドキュメントとしては以下にまとまって反映されています。
というわけで、追加された機能を1つずつ実際に試してみます。
やってみた
事前準備
-
アクティブな Site-to-Site VPN 接続が存在する前提で進めます
-
VPNトンネルのステータスはアップ状態です
-
AWS CLI は執筆時点で最新のバージョンを使用します
-
実際に使用したバージョン
$ aws --version aws-cli/2.27.29 Python/3.13.3 Darwin/24.5.0 exe/x86_64
-
① 事前共有キー (PSK) のAWS Secrets Manager への統合
ドキュメントに記載のとおり、事前共有キー(PSK)の保存モードを変更します。まず、[VPNトンネルオプションを変更]から対象のトンネルを選択します。
今回は「Tunnel 2(54.65.10.223)」から変更します。以下のように、[事前共有キーストレージ]として[シークレット マネージャー]が選択可能になっています。また、現在設定されている事前共有キーもそのまま表示されてしまっています。
[シークレット マネージャー]を選択すると、[事前共有キー]の箇所が[新事前共有キー]に変わります。
このまま[変更を保存]を押すと、以下のようにチェックボックスにチェックを入れていないため警告が表示されます。
ドキュメントにも以下の記載があるので、実際に変更される場合はトンネルが一時的にダウンすることをご留意ください。
After changing the storage mode for a VPN tunnel, connectivity is interrupted for up to several minutes. Ensure that you plan for expected downtime.
(機械翻訳)
VPNトンネルのストレージモードを変更すると、最大数分間接続が中断されます。予想されるダウンタイムを必ず計画してください。
改めてチェックボックスにチェックを入れて[変更を保存]すると、ステータスが以下のようになりました。
2〜3分ほどすると、トンネル2がダウン状態になりました。
[変更を保存]してから4分ほどで、トンネル2のステータスはアップに戻りました。
設定変更の対象トンネルがダウンするので、一時的に対向トンネルによる片系運用になりますが、その状態でも正しく通信できることが確認できているのであれば、トンネル片方ずつに適用することでサービス影響は回避できるかと思います。
Secrets Manager のコンソール画面を開くと、以下のとおりシークレットが作成されていました。シークレットキーはIPアドレスのようですね。
画面上部に表示されているメッセージのとおり、シークレットの値を更新する場合はSecrets Manager からではなく、以下のとおりVPNトンネルオプションの変更から設定します。事前共有キーの値がコンソール画面には表示されなくなりました。
なお、当たり前ではありますが上記の事前共有キーだけを変更して、対向のオンプレミスのVPNルータで同じ事前共有キーを設定しなければ、トンネルがダウンしますのでご注意ください。
同様の流れでトンネル1も事前共有キーをSecrets Managerから取得するように変更しました。
CloudWatch メトリクスで確認すると、トンネルが交互にダウンしたことが分かります。
再度Secrets Manager を確認すると、以下のように同じシークレットにキーが追加されていました。
このためSecrets Managerの料金としては1つのVPN接続あたり1シークレット分とそれに伴うAPIコール分が加算される形になります。
補足:サンプルコンフィグでの表記
使用している検証機はFortiGate(60D、ファームウェア: v5.4.4)なので、該当するサンプルコンフィグをダウンロードして確認したところ、以下のような表記に変わっていました。
(抜粋)
set proposal aes128-sha1
set keylife 28800
set remote-gw 52.68.234.250
set psksecret *****REDACTED*****
set dpd-retryinterval 10
Secrets Manager を使用するまではpsksecret
に事前共有キーがそのまま記載されていました。
補足:VPN接続作成時に事前共有キーをSecrets Managerに保存することはできない
ここまでの手順は既存のVPN接続に対して事前共有キーの管理をSecrets Managerに変更するという手順でしたが、ドキュメントにも最初から事前共有キーをSecrets Managerに保存する方法については明記されていません。
実際に新しいVPN接続を作成する画面でも、従来どおり事前共有キーを手入力するまたは入力せずに自動生成するしかできないようです。
② VPNアルゴリズムを追跡する新API「GetActiveVpnTunnelStatus」
続いて、新しく追加されたAPIを試してみます。APIに関するドキュメントは以下です。
該当するAWS CLI のコマンドは以下となります。
実際にコマンドを実行した結果は以下のとおりです。アクティブなVPNトンネルの現在ネゴシエートされているセキュリティパラメータが返ってきています。(古い機器を使用して検証していることがバレますね)
$ aws ec2 get-active-vpn-tunnel-status --vpn-connection-id vpn-0d521f12ca2c69eee --vpn-tunnel-outside-ip-address 52.68.234.250
{
"ActiveVpnTunnelStatus": {
"Phase1EncryptionAlgorithm": "AES128",
"Phase2EncryptionAlgorithm": "AES128",
"Phase1IntegrityAlgorithm": "SHA1",
"Phase2IntegrityAlgorithm": "SHA1",
"Phase1DHGroup": 2,
"Phase2DHGroup": 2,
"IkeVersion": "ikev1",
"ProvisioningStatus": "available"
}
}
以下の記事も本アップデートに併せて投稿されていましたのでご参照ください。(私が検証した環境と全く同じセキュリティ強度でクスッときてしまいました)
③「GetVpnConnectionDeviceSampleConfiguration」API に対する「recommended」パラメータの追加
最後に、「GetVpnConnectionDeviceSampleConfiguration」APIの「recommended」パラメータを確認します。こちらのAPIはAWS マネジメントコンソール画面でいうと以下の[設定をダウンロードする]に相当します。
実際にダウンロードしようとすると、[サンプルタイプを含める]というオプションが追加されていました。
上記のとおり、サンプルタイプが選択できるようになっていますが、表示されているのはCmpatibility
のみです。これは、ドキュメントに記載のとおりIKEv1では追加された値であるRecommended
を選択できないためです。(そもそも検証に使用した機器のサンプルコンフィグの場合、IKEv2を選択することすらできません)
SampleType
The type of sample configuration to generate. Valid values are "compatibility" (includes IKEv1) or "recommended" (throws UnsupportedOperationException for IKEv1).
以下のようにIKEv2を選択できる場合は、Recommended
を選択することが可能です。
AWS CLIの場合で取得する場合は、以下のドキュメントをご参照ください。
APIに関するドキュメントは以下です。
このためコマンドのオプションとしては--vpn-connection-id
と--vpn-connection-device-type-id
が必須です。
--vpn-connection-device-type-id
については、例えばベンダーがCisco Systems, Inc.
の場合は以下のように確認可能です。
$ aws ec2 get-vpn-connection-device-types --query 'VpnConnectionDeviceTypes[?contains(Vendor, `Cisco Systems, Inc.`)]'
[
{
"VpnConnectionDeviceTypeId": "6883834a",
"Vendor": "Cisco Systems, Inc.",
"Platform": "ASA 5500 Series",
"Software": "ASA 8.2+"
},
{
"VpnConnectionDeviceTypeId": "b556dcd1",
"Vendor": "Cisco Systems, Inc.",
"Platform": "ASA 5500 Series",
"Software": "ASA 9.7+ VTI"
},
{
"VpnConnectionDeviceTypeId": "78c1a727",
"Vendor": "Cisco Systems, Inc.",
"Platform": "ASA 5500 Series",
"Software": "ASA 9.x"
},
{
"VpnConnectionDeviceTypeId": "48548f98",
"Vendor": "Cisco Systems, Inc.",
"Platform": "Cisco ASR 1000",
"Software": "IOS 12.4+"
},
{
"VpnConnectionDeviceTypeId": "7b754310",
"Vendor": "Cisco Systems, Inc.",
"Platform": "CSRv AMI",
"Software": "IOS 12.4+"
},
{
"VpnConnectionDeviceTypeId": "ae4cefeb",
"Vendor": "Cisco Systems, Inc.",
"Platform": "Firepower",
"Software": "v6.2.2+"
},
{
"VpnConnectionDeviceTypeId": "b0adb196",
"Vendor": "Cisco Systems, Inc.",
"Platform": "ISR Series Routers",
"Software": "IOS 12.4+"
}
]
上記で出力されているVpnConnectionDeviceTypeId
を使用して、以下のようにサンプルタイプを指定してコマンドを実行できます。
$ aws ec2 get-vpn-connection-device-sample-configuration --vpn-connection-id vpn-0d521f12ca2c69eee --vpn-connection-device-type-id b556dcd1 --sample-type recommended --output text
! Amazon Web Services
! Virtual Private Cloud
! AWS utilizes unique identifiers to manipulate the configuration of
! a VPN Connection. Each VPN Connection is assigned an identifier and is
! associated with two other identifiers, namely the
! Customer Gateway Identifier and Virtual Private Gateway Identifier.
!
! Your VPN Connection ID : vpn-0d521f12ca2c69eee
! Your Virtual Private Gateway ID : vgw-04c0addeb4c01289b
! Your Customer Gateway ID : cgw-0d2e9b9616380591c
!
!
! This configuration consists of two tunnels. Both tunnels must be
! configured on your Customer Gateway.
!
(略)
まとめ
今回のアップデートのうち、特に「事前共有キー (PSK) のAWS Secrets Manager への統合」については、これまでシークレット情報がそのまま表示されてしまう状態でしたが、その状況が改善されていますので、セキュリティ的には問題でも仕様上やむなしという整理になっていた環境にはありがたいアップデートかと思います。
ちなみに検証に使用したVPN接続の環境はTerraformで作成しているのですが、事前共有キーについては執筆時点で以下のとおり注意書きがあり、Ephemeral Values も適用できずどうしようかなと思っていたところだったので、いずれアップデートされるのを心待ちにしています。
本記事がどなたかのお役に立てれば幸いです。