はじめに
本書では、AWS で GWLB を使用して North-South トラフィックを検査する Threat Defense Virtual の Auto Scale ソリューションの展開方法について説明します。
AWS で GWLB を使用して North-South トラフィックを検査する Threat Defense Virtual Auto Scale ソリューションの設定方法
Auto Scale ソリューションを使用すると、トラフィック検査用にホストされている Threat Defense Virtual インスタンスのグループの展開、スケーリング、および管理ができます。トラフィックは、パフォーマンスまたは使用容量に応じて、単一または複数の Threat Defense Virtual インスタンスに分散されます。
GWLB は、内部および外部で生成されたトラフィックを管理する単一のエントリおよびエグジットポイントとして機能し、トラフィック負荷に基づいて Threat Defense Virtual インスタンスの数をリアルタイムでスケールアップまたはスケールダウンします。
![]() (注) |
この導入例で使用されているパラメータ値はサンプル値です。要件に応じて各値を変更します。 |
トポロジの例
このトポロジの例は、インバウンドおよびアウトバウンドのネットワーク トラフィック フローが GWLB を介して Threat Defense Virtual インスタンスに分散され、アプリケーション VPC にルーティングされてから、逆方向にルーティングされる方法を示しています。
![](/c/dam/en/us/td/i/400001-500000/470001-480000/475001-476000/475562.jpg)
インバウンドトラフィック検査 |
|
---|---|
![]() |
インターネットゲートウェイ(IGW)が、インターネットからトラフィックを受信します。 |
![]() |
トラフィックが、入力ルートテーブルのルートに従ってゲートウェイロードバランサのエンドポイント(GWLBe)にルーティングされます。 |
![]() |
GWLBe が、セキュリティ仮想プライベートクラウド(VPC)のエンドポイントサービスに接続されます。GWLB が受信したトラフィックをカプセル化し、検査のために Threat Defense Virtual Auto Scaling グループに転送します。 |
![]() |
Auto Scaling グループによって検査されたトラフィックが GWLB に返されてから GWLB エンドポイントに返されます。 |
![]() |
GWLB エンドポイントが、アプリケーションサブネット内のリソースにルーティングされるアプリケーション VPC にトラフィックを転送します。 |
アウトバウンドトラフィック検査 |
|
---|---|
![]() |
アプリケーション サブネット リソースからのトラフィックが、同じ VPC 内の GWLBe にルーティングされます。 |
![]() |
GWLBe が、セキュリティ VPC のエンドポイントサービスに接続されます。GWLB が受信したトラフィックをカプセル化し、検査のために Auto Scaling グループに転送します。 |
![]() |
Auto Scaling グループによって検査されたトラフィックが GWLB に返されてから GWLBe に返されます。 |
![]() |
送信元 VPC に到着したトラフィックが、出力サブネットルートテーブルで定義されたルートに従って IGW に転送されます。 |
![]() |
IGW がトラフィックをインターネットに送信します。 |
エンドツーエンドの手順
次のフローチャートは、Amazon Web Services(AWS)に GWLB を使用して Threat Defense Virtual Auto Scale ソリューションを展開するワークフローを示しています。
![](/c/dam/en/us/td/i/400001-500000/470001-480000/474001-475000/474997.jpg)
ワークスペース |
手順 |
|
---|---|---|
![]() |
ローカルホスト |
|
![]() |
Amazon CloudFormation コンソール |
|
![]() |
Management Center |
|
![]() |
ローカルホスト |
|
![]() |
ローカルホスト |
|
![]() |
ローカルホスト |
|
![]() |
ローカルホスト |
|
![]() |
Amazon CloudFormation コンソール |
|
![]() |
Amazon EC2 コンソール |
|
![]() |
Amazon VPC コンソール |
|
![]() |
Amazon VPC コンソール |
前提条件
-
GitHub から lambda-python-files フォルダをダウンロードします。このフォルダには、次のファイルが含まれています。
-
Lambda レイヤの作成に使用される Python(.py)ファイル。
-
必要に応じて、スタティックルートを追加し、ネットワークパラメータをカスタマイズするために使用される configuration.json ファイル。
-
-
GitHub から次の CloudFormation テンプレートをダウンロードします。
-
Infrastructure_gwlb.yaml:AWS 環境のコンポーネントをカスタマイズするために使用されます。
-
deploy_ngfw_autoscale_with_gwlb.yaml:GWLB ソリューションを使用して AWS Auto Scale を展開するために使用されます。
-
-
(任意)可能な場合は、テンプレートパラメータの値を収集します。収集すると、AWS 管理コンソールでテンプレートを展開するときに、値をすばやく簡単に入力できます。
Amazon CloudFormation コンソール:インフラストラクチャ テンプレートのカスタマイズと展開
インフラストラクチャ テンプレートをカスタマイズして展開するには、この項に記載されている手順を実行します。
手順
ステップ 1 |
AWS 管理コンソールで、 の順に選択し、 の順にクリックします。 |
||||||||||||||||||||||||||||||||
ステップ 2 |
[テンプレートファイルのアップロード(Upload a template file)] を選択し、[ファイルの選択(Choose file)] をクリックして、ファイルをダウンロードしたフォルダから infrastructure_gwlb.yaml を選択します。 |
||||||||||||||||||||||||||||||||
ステップ 3 |
[次へ(Next)] をクリックします。 |
||||||||||||||||||||||||||||||||
ステップ 4 |
[スタックの詳細の指定(Specify stack details)] ページで、スタックの名前を入力します。 |
||||||||||||||||||||||||||||||||
ステップ 5 |
Infrastructure_gwlb.yaml テンプレートの入力パラメータの値を指定します。
|
||||||||||||||||||||||||||||||||
ステップ 6 |
[Next] をクリックします。 |
||||||||||||||||||||||||||||||||
ステップ 7 |
[スタックオプションの設定(Configure Stack Options)] ウィンドウで [次へ(Next)] をクリックします。 |
||||||||||||||||||||||||||||||||
ステップ 8 |
[確認(Review)] ページで設定を確認して確定します。 |
||||||||||||||||||||||||||||||||
ステップ 9 |
[スタックの作成(Create Stack)] をクリックして infrastructure_gwlb.yaml テンプレートを展開し、スタックを作成します。 |
||||||||||||||||||||||||||||||||
ステップ 10 |
展開が完了したら [出力(Outputs)] に移動し、S3 バケット名を書き留めます。 |
Management Center:Threat Defense Virtual の Management Center でのネットワーク インフラストラクチャの設定
登録済み Threat Defense Virtual の Management Center で、オブジェクト、デバイスグループ、ヘルスチェックポート、およびアクセスポリシーを作成および設定します。
ホストオブジェクトの作成
手順
ステップ 1 |
Management Center にログインします。 |
ステップ 2 |
を選択します。 |
ステップ 3 |
オブジェクト タイプのリストから [ネットワーク(Network)] を選択します。 |
ステップ 4 |
[ネットワークを追加(Add Network)] ドロップダウン メニューで、[オブジェクトの追加(Add Object)] を選択します。 |
ステップ 5 |
[名前(Name)]:aws-metadata-server と入力します。 |
ステップ 6 |
説明を入力します。 |
ステップ 7 |
[ネットワーク(Network)] フィールドで [ホスト(Host)] オプションを選択し、IPv4 アドレス:169.254.169.254 を入力します。 |
ステップ 8 |
[保存(Save)] をクリックします。 |
ポートオブジェクトの作成
手順
ステップ 1 |
Management Center にログインします。 |
||
ステップ 2 |
を選択します。 |
||
ステップ 3 |
オブジェクト タイプのリストから [ポート(Port)] を選択します。 |
||
ステップ 4 |
[ポートの追加(Add Port)] ドロップダウンメニューで、[オブジェクトの追加(Add Object)] を選択します。 |
||
ステップ 5 |
[名前(Name)]:test-port-object と入力します。 |
||
ステップ 6 |
[プロトコル(Protocol)] を選択します。[ホスト(Host)] オブジェクトタイプに入力したプロトコルを選択する必要があります。選択したプロトコルに応じて、[ポート(Port)] で制限します。 |
||
ステップ 7 |
8080 と入力します。ここで入力するポート番号は、要件に応じてカスタマイズできます。
|
||
ステップ 8 |
[保存(Save)] をクリックします。 |
セキュリティゾーンおよびインターフェイス グループ オブジェクトの作成
手順
ステップ 1 |
を選択します。 |
ステップ 2 |
オブジェクトタイプのリストから、[インターフェイス(Interface)] を選択します。 |
ステップ 3 |
の順にクリックするか、 の順にクリックします。 |
ステップ 4 |
[名前(Name)]:Inside-sz/Outside-sz と入力します。 |
ステップ 5 |
[インターフェイス タイプ(Interface Type)] を選択します。 |
ステップ 6 |
ドロップダウンリストから、追加するインターフェイスを含むデバイスを選択します。 |
ステップ 7 |
セキュリティゾーンを作成または編集すると、 ドロップダウンリストに、高可用性デバイスのクラスタ名が表示されます。追加するインターフェイスを含むクラスタを選択します。 |
ステップ 8 |
1 つ以上のインターフェイスを選択します。 |
ステップ 9 |
[追加(Add)] をクリックして、選択したインターフェイス(デバイス別にグループ化済み)を追加します。 |
ステップ 10 |
[保存(Save)] をクリックします。 |
デバイスグループの追加
Management Center を使用すると、デバイスをグループ化して、複数のデバイスへのポリシーの展開や更新のインストールを簡単に実行できます。グループに属するデバイスのリストは、展開または縮小表示できます。
手順
ステップ 1 |
の順に選択します。 |
ステップ 2 |
[追加(Add)] ドロップダウン メニューから、[グループの追加(Add Group)] を選択します。 |
ステップ 3 |
既存のグループを編集するには、編集するグループの [編集(Edit)](編集アイコン)をクリックします。 |
ステップ 4 |
[名前(Name)]:aws-ngfw-autoscale-dg と入力します。 |
ステップ 5 |
[使用可能なデバイス(Available Devices)] から、デバイス グループに追加するデバイスを 1 つ以上選択します。複数のデバイスを選択する場合は、Ctrl または Shift を押しながらクリックします。 |
ステップ 6 |
[追加(Add)] をクリックして、選択したデバイスをデバイス グループに追加します。 |
ステップ 7 |
[OK] をクリックして、デバイス グループを追加します。 |
ヘルスチェックプローブのポート 443(HTTP)の有効化
ヘルスチェックプローブにポート 443(HTTP)を使用している場合は、次の手順を実行して、ヘルスチェックプローブのポートを有効にします。
手順
ステップ 1 |
の順に選択します。 |
ステップ 2 |
[HTTPサーバーの有効化(Enable HTTP Server)] チェックボックスをオンにします。 |
ステップ 3 |
[ポート(Port)] フィールドに、443 と入力します。 |
ステップ 4 |
[+ Add] をクリックします。 |
ステップ 5 |
ドロップダウンリストから関連する [IPアドレス(IP Address)] を選択します。 |
ステップ 6 |
[使用可能なゾーン/インターフェイス(Available Zones/Interfaces)] ウィンドウで、GWLB または外部サブネットに接続されている外部インターフェイスを選択します。 |
ステップ 7 |
[追加(Add)] をクリックして、選択したインターフェイスを [選択したゾーン/インターフェイス(Selected Zones/Interfaces)] ウィンドウに追加します。 |
ステップ 8 |
[OK] をクリックします。 |
ステップ 9 |
[保存(Save)] をクリックします。 |
基本的なアクセス コントロール ポリシーの作成
新しいアクセス コントロール ポリシーを作成すると、そのポリシーにデフォルトのアクションと設定が含まれます。ポリシーを作成すると、要件に合わせてポリシーを調整できるよう、すぐに編集セッションに移行します。
手順
ステップ 1 |
を選択します。 |
ステップ 2 |
[新しいポリシー(New Policy)] をクリックします。 |
ステップ 3 |
一意の名前(aws-access-policy)と説明を入力します。 |
ステップ 4 |
最初の [デフォルトアクション(Default Action)]:[すべてのトラフィックをブロック(Block all traffic)] を指定します。 |
ステップ 5 |
[保存(Save)] をクリックします。 |
ステップ 6 |
作成した新しいポリシーの [編集(Edit)] アイコンをクリックします。 |
ステップ 7 |
[ルールの追加(Add Rule)] をクリックします。 |
ステップ 8 |
次のパラメータを設定します。
|
ステップ 9 |
[適用(Apply)]をクリックします。 |
ローカルホスト:設定 JSON ファイルの更新
configuration.json ファイルは、GitHub からダウンロードした lambda_python_files フォルダにあります。Management Center で設定したパラメータを使用して、configuration.json ファイルのパラメータを更新します。
configuration.json ファイル内のスクリプトは次のとおりです。
"licenseCaps": ["BASE", "MALWARE", "THREAT"], // Management center virtual licenses
"fmcIpforDeviceReg": "DONTRESOLVE", // Management center virtual IP address
"RegistrationId": "cisco", // Registration ID used while configuring the manager in the Threat defense virtual
"NatId": "cisco", // NAT ID used while configuring the manager in the Threat defense virtual
"fmcAccessPolicyName": "aws-access-policy", // Access policy name configured in the Management center virtual
"fmcInsideNicName": "inside", //Threat defense virtual inside interface name
"fmcOutsideNicName": "outside", //Threat defense virtual outside interface name
"fmcInsideNic": "GigabitEthernet0/0", // Threat defense virtual inside interface NIC Name - GigabitEthernet for c4 instance types, and TenGigabitEthernet for c5 instance types)
"fmcOutsideNic": "GigabitEthernet0/1", // Threat defense virtual outside interface NIC Name - GigabitEthernet for c4 instance types, and TenGigabitEthernet for c5 instance types
"fmcOutsideZone": "Outside-sz", //Outside Interface security zone name that is set in the Management center virtual
"fmcInsideZone": "Inside-sz", //Inside Interface security zone name that is set in the Management center virtual
"interfaceConfig": [
{
"managementOnly": "false",
"MTU": "1500",
"securityZone": {
"name": "Inside-sz"
},
"mode": "NONE",
"ifname": "inside",
"name": "GigabitEthernet0/0"
},
{
"managementOnly": "false",
"MTU": "1500",
"securityZone": {
"name": "Outside-sz"
},
"mode": "NONE",
"ifname": "outside",
"name": "GigabitEthernet0/1"
}
], // Interface-related configuration
"trafficRoutes": [
{
"interface": "inside",
"network": "any-ipv4",
"gateway": "",
"metric": "1"
}
] // This traffic route is used for the Threat defense virtual instance's health check
}
ローカルホスト:ローカルホストでの AWS CLI を使用したインフラストラクチャ コンポーネントの設定
テンプレートでは、Threat Defense Virtual および Management Center の Lambda レイヤと暗号化されたパスワードは作成されません。次の手順を使用して、各コンポーネントを設定します。AWS CLI の詳細については、「AWS コマンドラインインターフェイス」を参照してください。
手順
ステップ 1 |
Lambda レイヤ zip ファイルを作成します。 Linux ホストに Python フォルダを作成し、Lambda レイヤを作成します。 |
ステップ 2 |
(任意)Threat Defense Virtual および Management Center の暗号化パスワードを作成します。 Infrastructure_gwlb.yaml テンプレートファイルに KMS ARN 値が入力されている場合は、Threat Defense Virtual および Management Center で設定するパスワードを暗号化する必要があります。AWS
KMS コンソールを使用してキー ARN を特定するには、Finding the key ID and key ARN [英語] を参照してください。ローカルホストで、次の AWS CLI コマンドを実行してパスワードを暗号化します。
CiphertextBlob の値は暗号化されたパスワードです。このパスワードは、infrastructure_gwlb.yaml ファイルの NGFWv パスワード(Threat Defense Virtual パスワード)または Auto Scale 自動化の FMC パスワード(Management Center パスワード)パラメータの値として使用します。このパスワードは、CloudWatch にメトリックを公開するための FMC パスワードの値としても使用できます。
|
ローカルホスト:target フォルダの作成
次のコマンドを使用して、Amazon S3 バケットにアップロードする必要があるファイルを含む target フォルダを作成します。
python3 make.py build
ローカルホストに「target」という名前のフォルダが作成されます。target フォルダには、Auto Scale ソリューションの展開に必要な zip ファイルと yaml ファイルが含まれています。
ローカルホスト:Amazon S3 バケットへの AWS GWLB Auto Scale ソリューション展開ファイルのアップロード
次のコマンドを使用して、target ディレクトリにあるすべてのファイルを Amazon S3 バケットにアップロードします。
$ cd ./target
$ aws s3 cp . s3://demo-us-bkt --recursive
Amazon CloudFormation コンソール:GWLB を使用した Threat Defense Virtual の Auto Scale ソリューションの展開
手順
ステップ 1 |
AWS 管理コンソールで、 の順に選択し、テンプレートによって作成されたスタックをクリックします。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 2 |
の順にクリックします。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 3 |
[テンプレートファイルのアップロード(Upload a template file)] を選択し、[ファイルの選択(Choose File)] をクリックして、target フォルダから deploy_ngfw_autoscale_with_gwlb.yaml を選択します。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 4 |
[Next] をクリックします。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 5 |
[スタックの詳細の指定(Specify stack details)] ページで、スタックの名前を入力します。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 6 |
deploy_ngfw_autoscale_with_gwlb.yaml テンプレートの入力パラメータの値を指定します。 スタック名:Threat-Defense-Virtual
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 7 |
[スタックオプションの設定(Configure Stack Options)] ウィンドウで [次へ(Next)] をクリックします。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 8 |
[確認(Review)] ページで設定を確認して確定します。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 9 |
[スタックの作成(Create Stack)] をクリックして deploy_ngfw_autoscale_with_gwlb.yaml テンプレートを展開し、スタックを作成します。 |
Amazon EC2 コンソール:Auto Scale グループのインスタンス数の編集
デフォルトでは、Auto Scale グループの Threat Defense Virtual インスタンスの最小数と最大数はそれぞれ 0 と 2 に設定されています。要件に応じて各値を変更します。
手順
ステップ 1 |
AWS 管理コンソールで、 の順に選択し、[Auto Scalingグループ(Auto Scaling Groups)] をクリックします。 |
ステップ 2 |
作成した Auto Scaling グループを選択し、[編集(Edit)] をクリックして、要件に応じて [必要な容量(Desired capacity)]、[最小容量(Minimum capacity)]、[最大容量(Maximum capacity)] フィールドの値を変更します。各値は、Auto Scaling 機能のために起動する Threat Defense Virtual インスタンスの数に対応します。[必要な容量(Desired capacity)] を、最小容量値と最大容量値の範囲内の値に設定します。 |
ステップ 3 |
[更新(Update)]をクリックします。 |
![]() (注) |
Threat Defense Virtual インスタンスを 1 つだけ起動し、そのインスタンスが想定どおりに動作しているか確認することを推奨します。その後、要件に応じて追加のインスタンスを起動できます。 |
Amazon VPC ダッシュボードコンソール:GWLB エンドポイントの作成およびカスタマー VPC のルーティングの設定
両方の CloudFormation テンプレートを展開後、GWLB エンドポイントを作成し、カスタマー VPC のルーティングを設定する必要があります。
GWLB エンドポイントの作成
手順
ステップ 1 |
AWS 管理コンソールで、 の順に選択します。 |
ステップ 2 |
[エンドポイントサービスの作成(Create Endpoint Service)] をクリックします。 |
ステップ 3 |
[ロードバランサタイプ(Load balancer type)] で [ゲートウェイ(Gateway)] を選択します。 |
ステップ 4 |
[使用可能なロードバランサ(Available load Balancers)] で、Auto Scale の展開の一部として作成されたゲートウェイロードバランサを選択します。 |
ステップ 5 |
[作成(Create)] をクリックします。 |
ステップ 6 |
新たに作成したエンドポイントサービスのサービス名をコピーします。 |
ステップ 7 |
の順に選択します。 |
ステップ 8 |
[エンドポイントの作成(Create endpoint)] をクリックします。 |
ステップ 9 |
[サービスカテゴリ(Service category)] で [その他のエンドポイントサービス(Other endpoint services)] を選択します。 |
ステップ 10 |
[サービス名(Service name)] にサービスの名前を入力し、[サービスの確認( Verify service)] を選択します。 |
ステップ 11 |
[VPC] フィールドで、エンドポイントを作成する VPC、[アプリケーションVPC(App VPC)] を選択します。 |
ステップ 12 |
[サブネット(Subnets)] で、エンドポイントを作成するサブネット、[出力サブネット(Egress subnet)] を選択します。 |
ステップ 13 |
[IPアドレスタイプ(IP address type)] で [IPv4] オプションを選択して、エンドポイント ネットワーク インターフェイスに IPv4 アドレスを割り当てます。 |
ステップ 14 |
[エンドポイントの作成(Create endpoint)] をクリックします。 |
ステップ 15 |
の順に選択し、[エンドポイント接続(Endpoint Connections)] タブをクリックし、事前に作成した [エンドポイントID(Endpoint ID)] を選択して、[アクション(Actions)] > [エンドポイント接続要求の受け入れ(Accept endpoint connection request)] の順にクリックします。 |
カスタマー VPC のルーティングの設定
手順
ステップ 1 |
AWS 管理コンソールで、 の順に選択します。 |
ステップ 2 |
入力ルートテーブルを作成し、次の手順を実行します。
|
ステップ 3 |
アプリケーションサーバーがあるサブネットのルートテーブルを選択し、次の手順を実行します。
|
ステップ 4 |
ゲートウェイロードバランサのエンドポイントがあるサブネットのルートテーブルを選択し、次の手順を実行します。
|
Amazon CloudWatch:展開の検証
テンプレートの展開が成功したら、Amazon CloudWatch コンソールに移動して、ログが収集され、必要なアラームが作成されていることを確認します。
ログ
ログファイルを確認して、Management Center の接続に関する問題をトラブルシューティングします。
手順
ステップ 1 |
AWS 管理コンソールで、 の順に選択します。 |
ステップ 2 |
[ロググループ(Log groups)] をクリックし、表示されているいずれかのロググループをクリックしてログを表示します。 |
アラーム
必要なアラームが Amazon CloudWatch コンソールで作成されていることを確認します。
手順
ステップ 1 |
AWS 管理コンソールで、 の順に選択します。 |
ステップ 2 |
の順にクリックして、スケールアウトおよびスケールイン機能をトリガーする条件とともにアラームのリストを表示します。 |