はじめに
本書では、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 にルーティングされてから、逆方向にルーティングされる方法を示しています。
インバウンドトラフィック検査 |
|
---|---|
|
インターネットゲートウェイ(IGW)が、インターネットからトラフィックを受信します。 |
|
トラフィックが、入力ルートテーブルのルートに従ってゲートウェイロードバランサのエンドポイント(GWLBe)にルーティングされます。 |
|
GWLBe が、Security Virtual Private Cloud(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 ソリューションを展開するワークフローを示しています。
ワークスペース |
手順 |
|
---|---|---|
ローカルホスト |
||
Amazon CloudFormation コンソール |
||
Management Center |
||
ローカルホスト |
||
ローカルホスト |
||
ローカルホスト |
||
ローカルホスト |
||
Amazon CloudFormation コンソール |
||
Amazon EC2 コンソール |
||
Amazon VPC コンソール |
||
Amazon VPC コンソール |
前提条件
-
GitHub リポジトリを GitHub からローカルホストに複製します。このリポジトリには、cisco-ftdv/autoscale/aws の以下のファイルが含まれています。
-
Lambda レイヤの作成に使用される Python(.py)ファイル。
-
必要に応じて、スタティックルートを追加し、ネットワークパラメータをカスタマイズするために使用される configuration.json ファイル。
-
make.py から zip ファイルを生成します。
-
展開には *.yaml ファイルが必要です。
-
-
/templates フォルダのクラウド形成テンプレート:
-
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 にログインします。Management Center で 2 つのユーザーアカウントを作成する必要があります。1 つは Autoscale 自動化用で、もう 1 つはユーザーが CloudWatch にメトリックを公開するためのものです。 |
ステップ 2 |
を選択します。 |
ステップ 3 |
新しいユーザを作成するには、以下の手順を実行します。
|
ステップ 4 |
[パスワード(Password)] および [パスワードの確認(Confirm Password)] フィールドに値を入力します。 この値は、このユーザに設定したパスワード オプションに準拠している必要があります。 |
ステップ 5 |
[ユーザーロールの設定(User Role Configuration)] エリアで、[管理者(Administrator)] チェックボックスをオンにします。 Autoscale ソリューションテンプレートの展開時に使用するため、これらのユーザーログイン情報をメモします。これらのユーザーログイン情報は、FMC 自動化の設定および FMC デバイスグループメトリックの公開の設定で入力する必要があります。 |
ステップ 6 |
[保存(Save)] をクリックします。 |
ホストオブジェクトの作成
手順
ステップ 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)] をクリックします。 |
デバイスグループの追加
Management Center を使用すると、デバイスをグループ化して、複数のデバイスへのポリシーの展開やアップデートのインストールを簡単に実行できます。グループに属するデバイスのリストは、展開または縮小表示できます。
手順
ステップ 1 |
の順に選択します。 |
ステップ 2 |
[追加(Add)] ドロップダウン メニューから、[グループの追加(Add Group)] を選択します。 |
ステップ 3 |
既存のグループを編集するには、編集するグループの [編集(Edit)](編集アイコン)をクリックします。 |
ステップ 4 |
[名前(Name)] に aws-ngfw-autoscale-dg と入力します。 |
ステップ 5 |
[OK] をクリックして、デバイス グループを追加します。 |
セキュリティゾーンの作成
手順
ステップ 1 |
を選択します。 |
ステップ 2 |
オブジェクトタイプのリストから、[インターフェイス(Interface)] を選択します。 |
ステップ 3 |
をクリックします。 |
ステップ 4 |
[名前(Name)] に「Inside-sz」と入力します。 |
ステップ 5 |
[インターフェイスタイプ(Interface Type)] ドロップダウンリストから [ルーテッド(Routed)] を選択します。 |
ステップ 6 |
[保存(Save)] をクリックします。 |
ステップ 7 |
同様に、ステップ 1 ~ 6 を繰り返して Outside-sz を作成する必要があります。 |
ヘルスチェックプローブのポート 22(SSH)の有効化
ヘルスチェックプローブにポート 22(SSH)を使用している場合は、次の手順を実行して、ヘルスチェックプローブのポートを有効にします。
手順
ステップ 1 |
の順に選択します。 |
ステップ 2 |
ポリシー名を指定します。 |
ステップ 3 |
[ターゲットデバイス(Targeted Devices)] ドロップダウンリストから、作成したデバイスグループ(aws-ngfw-autoscale-dg)を選択します。 |
ステップ 4 |
[保存(Save)] をクリックします。 |
ステップ 5 |
新しく作成したポリシーをクリックし、左側のペインから [SSHアクセス(SSH Access)] を選択します。 |
ステップ 6 |
[+ Add] をクリックします。 |
ステップ 7 |
[IPアドレス(IP Address)] ドロップダウンリストから、[任意(any)] を選択します。 |
ステップ 8 |
[使用可能なゾーン/インターフェイス(Available Zones/Interfaces)] ウィンドウで、[Outside-sz] を選択します。 |
ステップ 9 |
[追加(Add)] をクリックして、選択したインターフェイスを [選択したゾーン/インターフェイス(Selected Zones/Interfaces)] ウィンドウに追加します。 |
ステップ 10 |
[OK] をクリックします。 |
ステップ 11 |
[保存(Save)] をクリックします。 |
基本的なアクセス コントロール ポリシーの作成
新しいアクセス コントロール ポリシーを作成すると、そのポリシーにデフォルトのアクションと設定が含まれます。ポリシーを作成すると、要件に合わせてポリシーを調整できるよう、すぐに編集セッションに移行します。
手順
ステップ 1 |
を選択します。 |
ステップ 2 |
[新しいポリシー(New Policy)] をクリックします。 |
ステップ 3 |
一意の名前(aws-asg-policy)と説明を入力します。 |
ステップ 4 |
最初の [デフォルトアクション(Default Action)]:[すべてのトラフィックをブロック(Block all traffic)] を指定します。 |
ステップ 5 |
[保存(Save)] をクリックします。 |
ステップ 6 |
ページの右上にある [ターゲットデバイス(Targeted Devices)] をクリックして、ポリシーを割り当てます。 |
ステップ 7 |
使用可能なデバイスから [aws-ngfw-autoscale-dg] を選択します。 |
ステップ 8 |
[ポリシーへの追加(Add to Policy)] をクリックし、[OK] をクリックしてポリシーに追加します。 |
ステップ 9 |
作成した新しいポリシーの [編集(Edit)] アイコンをクリックします。 |
ステップ 10 |
[ルールの追加(Add Rule)] をクリックします。 |
ステップ 11 |
次のパラメータを設定します。
|
ステップ 12 |
[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-asg-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": "TenGigabitEthernet0/0", // Threat defense virtual inside interface NIC Name - GigabitEthernet for c4 instance types, and TenGigabitEthernet for c5 instance types)
"fmcOutsideNic": "TenGigabitEthernet0/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": "TenGigabitEthernet0/0"
},
{
"managementOnly": "false",
"MTU": "1500",
"securityZone": {
"name": "Outside-sz"
},
"mode": "NONE",
"ifname": "outside",
"name": "TenGigabitEthernet0/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
}
(注) |
Threat Defense Virtual を Management Center Virtualに登録するためにプライベート IP を使用するには、cisco-ftdv/autoscale/aws/lambda-python-files/ にある constant.py ファイルの次の行を変更します。
|
Ubuntu ホスト: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 フォルダの作成
ローカルホストで複製されたリポジトリに含まれる cisco-ftdv/autoscale/aws/ に移動し、次のコマンドを実行して、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 仮想インスタンスを 1 つだけ起動し、そのインスタンスが Autoscale グループで [サービス中(InService)] であり、Management Center Virtual に登録されていることを確認するようお勧めします。その後、要件に応じて追加のインスタンスを起動できます。 |
Amazon VPC ダッシュボードコンソール:GWLB エンドポイントの作成およびカスタマー VPC のルーティングの設定
両方の CloudFormation テンプレートを展開後、GWLB エンドポイントを作成し、カスタマー VPC のルーティングを設定する必要があります。
GWLB エンドポイントの作成
手順
ステップ 1 |
AWS 管理コンソールで、 の順に選択します。 |
ステップ 2 |
[エンドポイントサービスの作成(Create Endpoint Services)] をクリックします。 |
ステップ 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 |
の順にクリックして、スケールアウトおよびスケールイン機能をトリガーする条件とともにアラームのリストを表示します。 |