AWS Network Firewall Module which creates
- Stateful Firewall rule group with 5-tuple option
- Stateful Firewall rule group domain option
- Stateful firewall rule group with Suricta Compatible IPS rules option
- Statelless Firewall rule group
- Firewall Policy with attached above rule group
- Firewall Network
module "network_firewall" {
source = "mattyait/network-firewall/aws"
version = "0.1.2"
firewall_name = "example"
vpc_id = "vpc-27517c40"
prefix = "test"
#Passing Individual Subnet ID to have required endpoint
subnet_mapping = [
"subnet-da6b7ebd",
"subnet-a256d2fa"
]
fivetuple_stateful_rule_group = [
{
capacity = 100
name = "stateful"
description = "Stateful rule example1 with 5 tuple option"
rule_config = [{
description = "Pass All Rule"
protocol = "TCP"
source_ipaddress = "1.2.3.4/32"
source_port = 443
destination_ipaddress = "124.1.1.5/32"
destination_port = 443
direction = "any"
sid = 1
actions = {
type = "pass"
}
}]
},
]
# Stateless Rule Group
stateless_rule_group = [
{
capacity = 100
name = "stateless"
description = "Stateless rule example1"
rule_config = [{
priority = 1
protocols_number = [6]
source_ipaddress = "1.2.3.4/32"
source_from_port = 443
source_to_port = 443
destination_ipaddress = "124.1.1.5/32"
destination_from_port = 443
destination_to_port = 443
tcp_flag = {
flags = ["SYN"]
masks = ["SYN", "ACK"]
}
actions = {
type = "pass"
}
}]
}]
tags = {
Name = "example"
Environment = "Test"
Created_By = "Terraform"
}
}
Name | Version |
---|---|
terraform | >=1.0.3 |
aws | >= 4.50 |
Name | Version |
---|---|
aws | >= 4.50 |
No modules.
Name | Type |
---|---|
aws_cloudwatch_log_group.nfw | resource |
aws_networkfirewall_firewall.this | resource |
aws_networkfirewall_firewall_policy.this | resource |
aws_networkfirewall_logging_configuration.this | resource |
aws_networkfirewall_rule_group.domain_stateful_group | resource |
aws_networkfirewall_rule_group.fivetuple_stateful_group | resource |
aws_networkfirewall_rule_group.stateless_group | resource |
aws_networkfirewall_rule_group.suricata_stateful_group | resource |
Name | Description | Type | Default | Required |
---|---|---|---|---|
aws_managed_rule_group | List of AWS managed rule group arn | list(any) |
[] |
no |
description | Description for the resources | string |
"" |
no |
domain_stateful_rule_group | Config for domain type stateful rule group | any |
[] |
no |
firewall_name | firewall name | string |
"example" |
no |
firewall_policy_change_protection | (Option) A boolean flag indicating whether it is possible to change the associated firewall policy | string |
false |
no |
fivetuple_stateful_rule_group | Config for 5-tuple type stateful rule group | any |
[] |
no |
logging_config | logging config for cloudwatch logs created for network firewall | map(any) |
{} |
no |
prefix | The descriptio for each environment, ie: bin-dev | string |
n/a | yes |
stateless_default_actions | Default stateless Action | string |
"forward_to_sfe" |
no |
stateless_fragment_default_actions | Default Stateless action for fragmented packets | string |
"forward_to_sfe" |
no |
stateless_rule_group | Config for stateless rule group | any |
n/a | yes |
subnet_change_protection | (Optional) A boolean flag indicating whether it is possible to change the associated subnet(s) | string |
false |
no |
subnet_mapping | Subnet ids mapping to have individual firewall endpoint | list(string) |
n/a | yes |
suricata_stateful_rule_group | Config for Suricata type stateful rule group | any |
[] |
no |
tags | The tags for the resources | map(any) |
{} |
no |
vpc_id | VPC ID | string |
n/a | yes |
Name | Description |
---|---|
arn | Created Network Firewall ARN from network_firewall module |
endpoint_id | Created Network Firewall endpoint id |
endpoint_id_az | Map value with Availability Zone and Firewall endpoint id |
id | Created Network Firewall ID from network_firewall module |
subnet_id | Created Network Firewall subnet id |
sync_states | Created Network Firewall states |