Cisco Secure Firewall deployment in AWS in a Centralized and Distributed Architecture with GWLB using Terrform - Templates
This solution can be used to learn how to deploy Cisco Secure Firewall in an AWS environment as target devices to AWS Gateway Loadbalancer in order to inspect traffic to and from the applications running in AWS based on the usecases. The solution makes use of Cisco Secure Firewall AWS Terraform module, AWS Terraform provider, Cisco FMC Terraform provider and CDO Terraform to deploy the required resources, register the deployed FTDv instances to FMC (FMCv in AWS or cdFMC) and configure the required features on FMC.
Examples for the following usecases are provided to help you in your deployment in the examples folder:
- Centralized Architecture with existing service and existing spoke VPC with FMC
- Centralized Architecture with existing service and new spoke VPC with FMC
- Centralized Architecture with new service and new spoke VPC with Cloud-delivered FMC
- Distributed Architecture with outbound traffic
- Distributed Architecture with inbound traffic
- Multi VPC hub and spoke architecture for east-west traffic inspection
Note: The terraform example in the root folder is for the usecase Centralized Architecture with existing service and new spoke VPC with FMC
Name | Version |
---|---|
terraform | >= 0.13.5 |
aws | >= 2.7.0 |
fmc | <= 1.4.8 |
time | 0.10.0 |
Name | Version |
---|---|
fmc | <= 1.4.8 |
time | 0.10.0 |
Name | Source | Version |
---|---|---|
gwlb | CiscoDevNet/secure-firewall/aws//modules/gwlb | 1.0.28 |
gwlbe | CiscoDevNet/secure-firewall/aws//modules/gwlbe | 1.0.28 |
instance | CiscoDevNet/secure-firewall/aws//modules/firewall_instance | 1.0.28 |
nat_gw | CiscoDevNet/secure-firewall/aws//modules/nat_gw | 1.0.28 |
service_network | CiscoDevNet/secure-firewall/aws//modules/network | 1.0.28 |
spoke_network | CiscoDevNet/secure-firewall/aws//modules/network | 1.0.28 |
transitgateway | CiscoDevNet/secure-firewall/aws//modules/transitgateway | 1.0.28 |
Name | Description | Type | Default | Required |
---|---|---|---|---|
aws_access_key | AWS ACCESS KEY | string |
n/a | yes |
aws_secret_key | AWS SECRET KEY | string |
n/a | yes |
fmc_host | fmc public IP | string |
n/a | yes |
fmc_nat_id | FMC Registration NAT ID | string |
n/a | yes |
fmc_password | FMC User Password for API access | string |
n/a | yes |
fmc_username | FMC Username for API access | string |
n/a | yes |
ftd_admin_password | FTD Admin password | string |
n/a | yes |
reg_key | FTD registration key | string |
n/a | yes |
availability_zone_count | Spacified availablity zone count . | number |
2 |
no |
block_encrypt | boolean value to encrypt block or not | bool |
true |
no |
create_tgw | Boolean value to decide if transit gateway needs to be created | bool |
true |
no |
diag_subnet_cidr | List out diagonastic Subnet CIDR . | list(string) |
[ |
no |
diag_subnet_name | Specified diagonstic subnet names | list(string) |
[ |
no |
fmc_insecure_skip_verify | Condition to verify fmc certificate | bool |
true |
no |
fmc_ip | FMCv IP | string |
"" |
no |
ftd_size | FTD Instance Size | string |
"c5.xlarge" |
no |
ftd_version | Version of the FTD to be deployed | string |
"ftdv-7.2.7" |
no |
gwlb_name | name for Gateway loadbalancer | string |
"GWLB" |
no |
gwlb_tg_name | GWLB target group name | string |
"gwlb-tg" |
no |
gwlbe_subnet_cidr | List out GWLBE Subnet CIDR . | list(string) |
[ |
no |
gwlbe_subnet_name | List out GWLBE Subnet names . | list(string) |
[ |
no |
inscount | FTD instance count | number |
2 |
no |
inside_gw_ips | Inside subnet gateway IP | list(string) |
[ |
no |
inside_interface_sg | Can be specified multiple times for each ingress rule. | list(object({ |
[ |
no |
inside_subnet_cidr | List out inside Subnet CIDR . | list(string) |
[ |
no |
inside_subnet_name | Specified inside subnet names | list(string) |
[ |
no |
instances_per_az | Spacified no. of instance per az wants to be create . | number |
1 |
no |
keyname | key to be used for the instances | string |
"ln" |
no |
mgmt_interface_sg | Can be specified multiple times for each ingress rule. | list(object({ |
[ |
no |
mgmt_subnet_cidr | List of management Subnet CIDR . | list(string) |
[ |
no |
mgmt_subnet_name | Specified management subnet names | list(string) |
[ |
no |
ngw_subnet_cidr | List out NGW Subnet CIDR . | list(string) |
[ |
no |
ngw_subnet_name | List out NGW Subnet names . | list(string) |
[ |
no |
outside_interface_sg | Can be specified multiple times for each ingress rule. | list(object({ |
[ |
no |
outside_subnet_cidr | List out outside Subnet CIDR . | list(string) |
[ |
no |
outside_subnet_name | Specified outside subnet names | list(string) |
[ |
no |
region | AWS REGION | string |
"us-east-1" |
no |
service_create_igw | Boolean value to decide if to create IGW or not | bool |
false |
no |
service_igw_name | name of existing IGW to be used | string |
"service-vpc-igw" |
no |
service_vpc_name | Service VPC Name | string |
"Cisco-FMCv" |
no |
spoke_create_igw | Condition to create IGW . | bool |
true |
no |
spoke_igw_name | name of existing IGW to be used | string |
"spoke-igw" |
no |
spoke_subnet_cidr | List out spoke Subnet CIDR . | list(string) |
[ |
no |
spoke_subnet_name | List out spoke Subnet names . | list(string) |
[ |
no |
spoke_vpc_cidr | Specified CIDR for VPC . | string |
"10.0.0.0/16" |
no |
spoke_vpc_name | Specified VPC Name . | string |
"spoke-vpc" |
no |
tgw_subnet_cidr | List of Transit GW Subnet CIDR | list(string) |
[] |
no |
tgw_subnet_name | List of name for TGW Subnets | list(string) |
[ |
no |
transit_gateway_name | Name of the Transit Gateway created | string |
null |
no |
use_ftd_eip | boolean value to use EIP on FTD or not | bool |
false |
no |
Name | Description |
---|---|
instance_ip | Public IP address of the FTD instances |
internet_gateway | Internet Gateway ID |