AWS Network Firewallcommandes - AWS Control Tower

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS Network Firewallcommandes

[CT.NETWORK-FIREWALL.PR.1] Exiger que toute politique de AWS Network Firewall pare-feu soit associée à un groupe de règles

Ce contrôle vérifie s'il existe au moins un groupe de règles avec ou sans état associé à une politique de AWS Network Firewall pare-feu.

  • Objectif de contrôle : limiter l'accès au réseau

  • Mise en œuvre : règle de AWS CloudFormation garde

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::NetworkFirewall::FirewallPolicy

  • AWS CloudFormationrègle de garde : CT.NETWORK-FIREWALL.PR.1spécification des règles

Détails et exemples

Explication

Une politique de pare-feu définit la manière dont votre pare-feu surveille et gère le trafic dans Amazon Virtual Private Cloud (Amazon VPC). La configuration de groupes de règles apatrides et dynamiques permet de filtrer les paquets et les flux de trafic, et de définir les paramètres de gestion du trafic par défaut.

Remédiation en cas de défaillance des règles

Dans la FirewallPolicy définition, faites référence à un ou plusieurs groupes de règles dans StatefulRuleGroupReferences ouStatelessRuleGroupReferences.

Les exemples suivants montrent comment implémenter cette correction.

AWS Network FirewallPolitique de pare-feu - Exemple

AWS Network Firewallpolitique de pare-feu configurée avec des associations de groupes de règles dynamiques et apatrides. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "FirewallPolicy": { "Type": "AWS::NetworkFirewall::FirewallPolicy", "Properties": { "FirewallPolicyName": "sample-firewall-policy", "FirewallPolicy": { "StatelessDefaultActions": [ "aws:forward_to_sfe" ], "StatelessFragmentDefaultActions": [ "aws:drop" ], "StatefulRuleGroupReferences": [ { "ResourceArn": { "Ref": "StatefulRuleGroup" } } ], "StatelessRuleGroupReferences": [ { "ResourceArn": { "Ref": "StatelessRuleGroup" }, "Priority": 100 } ] } } } }

Exemple YAML

FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: sample-firewall-policy FirewallPolicy: StatelessDefaultActions: - aws:forward_to_sfe StatelessFragmentDefaultActions: - aws:drop StatefulRuleGroupReferences: - ResourceArn: !Ref 'StatefulRuleGroup' StatelessRuleGroupReferences: - ResourceArn: !Ref 'StatelessRuleGroup' Priority: 100

CT.NETWORK-FIREWALL.PR.1spécification des règles

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # netfw_policy_rule_group_associated_check # # Description: # This control checks whether there is at least one stateful or stateless rule group associated with an AWS Network Firewall firewall policy. # # Reports on: # AWS::NetworkFirewall::FirewallPolicy # # Evaluates: # AWS CloudFormation, AWS CloudFormation hook # # Rule Parameters: # None # # Scenarios: # Scenario: 1 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document does not contain any NetworkFirewall firewall policy resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a NetworkFirewall firewall policy resource # And: 'StatefulRuleGroupReferences' has not been provided in 'FirewallPolicy' # And: 'StatelessRuleGroupReferences' has not been provided in 'FirewallPolicy' # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a NetworkFirewall firewall policy resource # And: 'StatefulRuleGroupReferences' has not been provided in 'FirewallPolicy' # And: 'StatelessRuleGroupReferences' has been provided as an empty list # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a NetworkFirewall firewall policy resource # And: 'StatelessRuleGroupReferences' has not been provided in 'FirewallPolicy' # And: 'StatefulRuleGroupReferences' has been provided as an empty list # Then: FAIL # Scenario: 5 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a NetworkFirewall firewall policy resource # And: 'StatelessRuleGroupReferences' has been provided as an empty list # And: 'StatefulRuleGroupReferences' has been provided as an empty list # Then: FAIL # Scenario: 6 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a NetworkFirewall firewall policy resource # And: One or both of 'StatelessRuleGroupReferences' and 'StatefulRuleGroupReferences' have been provided as a # non-empty list # Then: PASS # # Constants # let NETFW_FIREWALL_POLICY_TYPE = "AWS::NetworkFirewall::FirewallPolicy" let INPUT_DOCUMENT = this # # Assignments # let netfw_firewall_policies = Resources.*[ Type == %NETFW_FIREWALL_POLICY_TYPE ] # # Primary Rules # rule netfw_policy_rule_group_associated_check when is_cfn_template(%INPUT_DOCUMENT) %netfw_firewall_policies not empty { check(%netfw_firewall_policies.Properties) << [CT.NETWORK-FIREWALL.PR.1]: Require any AWS Network Firewall firewall policy to have an associated rule group [FIX]: Within the 'FirewallPolicy' definition, refer to one or more rule groups in 'StatefulRuleGroupReferences' or 'StatelessRuleGroupReferences'. >> } rule netfw_policy_rule_group_associated_check when is_cfn_hook(%INPUT_DOCUMENT, %NETFW_FIREWALL_POLICY_TYPE) { check(%INPUT_DOCUMENT.%NETFW_FIREWALL_POLICY_TYPE.resourceProperties) << [CT.NETWORK-FIREWALL.PR.1]: Require any AWS Network Firewall firewall policy to have an associated rule group [FIX]: Within the 'FirewallPolicy' definition, refer to one or more rule groups in 'StatefulRuleGroupReferences' or 'StatelessRuleGroupReferences'. >> } # # Parameterized Rules # rule check(netfw_firewall_policy) { %netfw_firewall_policy { # Scenario 2 FirewallPolicy exists FirewallPolicy is_struct FirewallPolicy { # Scenario 3, 4, 5 and 6 StatefulRuleGroupReferences exists or StatelessRuleGroupReferences exists check_property_is_list_and_not_empty(StatefulRuleGroupReferences) or check_property_is_list_and_not_empty(StatelessRuleGroupReferences) } } } rule check_property_is_list_and_not_empty(property) { %property { this is_list this not empty } } # # Utility Rules # rule is_cfn_template(doc) { %doc { AWSTemplateFormatVersion exists or Resources exists } } rule is_cfn_hook(doc, RESOURCE_TYPE) { %doc.%RESOURCE_TYPE.resourceProperties exists }

CT.NETWORK-FIREWALL.PR.1exemples de modèles

Vous pouvez consulter des exemples d'artefacts de test PASS et FAIL pour les contrôles proactifs de l'AWS Control Tower.

Exemple PASS - Utilisez ce modèle pour vérifier la conformité de la création d'une ressource.

Resources: StatefulRuleGroup: Type: AWS::NetworkFirewall::RuleGroup Properties: RuleGroupName: Fn::Sub: ${AWS::StackName}-stateful-example Type: STATEFUL RuleGroup: RulesSource: RulesString: pass tcp 10.20.20.0/24 45400:45500 < 10.10.10.0/24 5203 (msg:"test";sid:1;rev:1;) Capacity: 100 StatelessRuleGroup: Type: AWS::NetworkFirewall::RuleGroup Properties: RuleGroupName: Fn::Sub: ${AWS::StackName}-stateless-example Type: STATELESS RuleGroup: RulesSource: StatelessRulesAndCustomActions: StatelessRules: [] Capacity: 100 FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: Fn::Sub: ${AWS::StackName}-example FirewallPolicy: StatelessDefaultActions: - aws:forward_to_sfe StatelessFragmentDefaultActions: - aws:drop StatefulRuleGroupReferences: - ResourceArn: Ref: StatefulRuleGroup StatelessRuleGroupReferences: - ResourceArn: Ref: StatelessRuleGroup Priority: 100

Exemple d'échec : utilisez ce modèle pour vérifier que le contrôle empêche la création de ressources non conformes.

Resources: FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: Fn::Sub: ${AWS::StackName}-example FirewallPolicy: StatelessDefaultActions: - aws:forward_to_sfe StatelessFragmentDefaultActions: - aws:drop

[CT.NETWORK-FIREWALL.PR.2] Exiger que toute politique de AWS Network Firewall pare-feu supprime ou transmette les paquets complets apatrides par défaut lorsqu'ils ne correspondent pas à une règle

Ce contrôle vérifie si une politique de AWS Network Firewall pare-feu est configurée avec une action par défaut sans état définie par l'utilisateur pour les paquets complets.

  • Objectif de contrôle : limiter l'accès au réseau

  • Mise en œuvre : règle de AWS CloudFormation garde

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::NetworkFirewall::FirewallPolicy

  • AWS CloudFormationrègle de garde : CT.NETWORK-FIREWALL.PR.2spécification des règles

Détails et exemples

Explication

Une politique de pare-feu définit la manière dont votre pare-feu surveille et gère le trafic dans Amazon VPC. Vous configurez des groupes de règles avec ou sans état pour filtrer les paquets et les flux de trafic. La valeur par défaut Pass peut autoriser le trafic involontaire.

Remédiation en cas de défaillance des règles

DansFirewallPolicy, incluez l'un des aws:drop ou aws:forward_to_sfe dansStatelessDefaultActions.

Les exemples suivants montrent comment implémenter cette correction.

AWS Network FirewallPolitique de pare-feu : premier exemple

AWS Network Firewallpolitique de pare-feu configurée avec une action par défaut sans état pour supprimer les paquets complets. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "FirewallPolicy": { "Type": "AWS::NetworkFirewall::FirewallPolicy", "Properties": { "FirewallPolicyName": { "Fn::Sub": "${AWS::StackName}-sample" }, "FirewallPolicy": { "StatelessFragmentDefaultActions": [ "aws:forward_to_sfe" ], "StatelessDefaultActions": [ "aws:drop" ] } } } }

Exemple YAML

FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: !Sub '${AWS::StackName}-sample' FirewallPolicy: StatelessFragmentDefaultActions: - aws:forward_to_sfe StatelessDefaultActions: - aws:drop

Les exemples suivants montrent comment implémenter cette correction.

AWS Network FirewallPolitique de pare-feu : deuxième exemple

AWS Network Firewallpolitique de pare-feu configurée avec une action par défaut sans état pour transférer les paquets complets au moteur de règles dynamiques pour une inspection plus approfondie. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "FirewallPolicy": { "Type": "AWS::NetworkFirewall::FirewallPolicy", "Properties": { "FirewallPolicyName": { "Fn::Sub": "${AWS::StackName}-sample" }, "FirewallPolicy": { "StatelessFragmentDefaultActions": [ "aws:forward_to_sfe" ], "StatelessDefaultActions": [ "aws:forward_to_sfe" ] } } } }

Exemple YAML

FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: !Sub '${AWS::StackName}-sample' FirewallPolicy: StatelessFragmentDefaultActions: - aws:forward_to_sfe StatelessDefaultActions: - aws:forward_to_sfe

CT.NETWORK-FIREWALL.PR.2spécification des règles

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # netfw_policy_default_action_full_packets_check # # Description: # This control checks whether an AWS Network Firewall firewall policy is configured with a user-defined stateless default action for full packets. # # Reports on: # AWS::NetworkFirewall::FirewallPolicy # # Evaluates: # AWS CloudFormation, AWS CloudFormation hook # # Rule Parameters: # None # # Scenarios: # Scenario: 1 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document does not contain any Network Firewall firewall policy resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall policy resource # And: 'StatelessDefaultActions' has not been provided in 'FirewallPolicy' # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall policy resource # And: 'StatelessDefaultActions' has been provided in 'FirewallPolicy' as an empty list # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall policy resource # And: 'StatelessDefaultActions' has been provided in 'FirewallPolicy' as a list that does not contain # one of 'aws:drop' or 'aws:forward_to_sfe' # Then: FAIL # Scenario: 5 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall policy resource # And: 'StatelessDefaultActions' has been provided in 'FirewallPolicy' as a list that contains either # 'aws:drop' or 'aws:forward_to_sfe' # Then: PASS # # Constants # let NETFW_FIREWALL_POLICY_TYPE = "AWS::NetworkFirewall::FirewallPolicy" let INPUT_DOCUMENT = this let ALLOWED_STATELESS_ACTIONS_LIST = [ "aws:drop", "aws:forward_to_sfe" ] # # Assignments # let netfw_firewall_policies = Resources.*[ Type == %NETFW_FIREWALL_POLICY_TYPE ] # # Primary Rules # rule netfw_policy_default_action_full_packets_check when is_cfn_template(%INPUT_DOCUMENT) %netfw_firewall_policies not empty { check(%netfw_firewall_policies.Properties) << [CT.NETWORK-FIREWALL.PR.2]: Require any AWS Network Firewall firewall policy to drop or forward stateless full packets by default when they do not match a rule [FIX]: Within 'FirewallPolicy', include one of 'aws:drop' or 'aws:forward_to_sfe' in 'StatelessDefaultActions'. >> } rule netfw_policy_default_action_full_packets_check when is_cfn_hook(%INPUT_DOCUMENT, %NETFW_FIREWALL_POLICY_TYPE) { check(%INPUT_DOCUMENT.%NETFW_FIREWALL_POLICY_TYPE.resourceProperties) << [CT.NETWORK-FIREWALL.PR.2]: Require any AWS Network Firewall firewall policy to drop or forward stateless full packets by default when they do not match a rule [FIX]: Within 'FirewallPolicy', include one of 'aws:drop' or 'aws:forward_to_sfe' in 'StatelessDefaultActions'. >> } # # Parameterized Rules # rule check(netfw_firewall_policy) { %netfw_firewall_policy { # Scenario 2 FirewallPolicy exists FirewallPolicy is_struct FirewallPolicy { StatelessDefaultActions exists # Scenario 3 StatelessDefaultActions is_list StatelessDefaultActions not empty # Scenario 4 and 5 some StatelessDefaultActions[*] { this in %ALLOWED_STATELESS_ACTIONS_LIST } } } } # # Utility Rules # rule is_cfn_template(doc) { %doc { AWSTemplateFormatVersion exists or Resources exists } } rule is_cfn_hook(doc, RESOURCE_TYPE) { %doc.%RESOURCE_TYPE.resourceProperties exists }

CT.NETWORK-FIREWALL.PR.2exemples de modèles

Vous pouvez consulter des exemples d'artefacts de test PASS et FAIL pour les contrôles proactifs de l'AWS Control Tower.

Exemple PASS - Utilisez ce modèle pour vérifier la conformité de la création d'une ressource.

Resources: FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: Fn::Sub: ${AWS::StackName}-example FirewallPolicy: StatelessFragmentDefaultActions: - aws:forward_to_sfe StatelessDefaultActions: - aws:drop

Exemple d'échec : utilisez ce modèle pour vérifier que le contrôle empêche la création de ressources non conformes.

Resources: FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: Fn::Sub: ${AWS::StackName}-example FirewallPolicy: StatelessFragmentDefaultActions: - aws:pass StatelessDefaultActions: - aws:pass

[CT.NETWORK-FIREWALL.PR.3] Exiger que toute politique de AWS Network Firewall pare-feu supprime ou transfère les paquets fragmentés par défaut lorsqu'ils ne correspondent pas à une règle d'apatridie

Ce contrôle vérifie si une politique de AWS Network Firewall pare-feu est configurée avec une action par défaut pour supprimer ou transférer des paquets fragmentés, lorsque les paquets ne correspondent pas à une règle d'apatridie.

  • Objectif de contrôle : limiter l'accès au réseau

  • Mise en œuvre : règle de AWS CloudFormation garde

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::NetworkFirewall::FirewallPolicy

  • AWS CloudFormationrègle de garde : CT.NETWORK-FIREWALL.PR.3spécification des règles

Détails et exemples

Explication

Une politique de pare-feu définit la manière dont votre pare-feu surveille et gère le trafic dans Amazon VPC. Vous configurez des groupes de règles avec ou sans état pour filtrer les paquets et les flux de trafic. La valeur par défaut Pass peut autoriser le trafic involontaire.

Remédiation en cas de défaillance des règles

DansFirewallPolicy, incluez l'un des aws:drop ou aws:forward_to_sfe dansStatelessFragmentDefaultActions.

Les exemples suivants montrent comment implémenter cette correction.

AWS Network FirewallPolitique de pare-feu : premier exemple

AWS Network Firewallpolitique de pare-feu configurée avec une action par défaut sans état pour supprimer les paquets fragmentés. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "FirewallPolicy": { "Type": "AWS::NetworkFirewall::FirewallPolicy", "Properties": { "FirewallPolicyName": { "Fn::Sub": "${AWS::StackName}-sample" }, "FirewallPolicy": { "StatelessDefaultActions": [ "aws:forward_to_sfe" ], "StatelessFragmentDefaultActions": [ "aws:drop" ] } } } }

Exemple YAML

FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: !Sub '${AWS::StackName}-sample' FirewallPolicy: StatelessDefaultActions: - aws:forward_to_sfe StatelessFragmentDefaultActions: - aws:drop

Les exemples suivants montrent comment implémenter cette correction.

AWS Network FirewallPolitique de pare-feu : deuxième exemple

AWS Network Firewallpolitique de pare-feu configurée avec une action par défaut sans état pour transférer les paquets fragmentés au moteur de règles dynamiques pour une inspection plus approfondie. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "FirewallPolicy": { "Type": "AWS::NetworkFirewall::FirewallPolicy", "Properties": { "FirewallPolicyName": { "Fn::Sub": "${AWS::StackName}-sample" }, "FirewallPolicy": { "StatelessDefaultActions": [ "aws:forward_to_sfe" ], "StatelessFragmentDefaultActions": [ "aws:forward_to_sfe" ] } } } }

Exemple YAML

FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: !Sub '${AWS::StackName}-sample' FirewallPolicy: StatelessDefaultActions: - aws:forward_to_sfe StatelessFragmentDefaultActions: - aws:forward_to_sfe

CT.NETWORK-FIREWALL.PR.3spécification des règles

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # netfw_policy_default_action_fragment_packets_check # # Description: # This control checks whether an AWS Network Firewall firewall policy is configured with a default action to drop or forward fragmented packets, when the packets do not match a stateless rule. # # Reports on: # AWS::NetworkFirewall::FirewallPolicy # # Evaluates: # AWS CloudFormation, AWS CloudFormation hook # # Rule Parameters: # None # # Scenarios: # Scenario: 1 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document does not contain any Network Firewall firewall policy resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall policy resource # And: 'StatelessFragmentDefaultActions' has not been provided in 'FirewallPolicy' # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall policy resource # And: 'StatelessFragmentDefaultActions' has been provided in 'FirewallPolicy' as an empty list # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall policy resource # And: 'StatelessFragmentDefaultActions' has been provided in 'FirewallPolicy' as a list that does not contain # one of 'aws:drop' or 'aws:forward_to_sfe' # Then: FAIL # Scenario: 5 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall policy resource # And: 'StatelessFragmentDefaultActions' has been provided in 'FirewallPolicy' as a list that contains either # 'aws:drop' or 'aws:forward_to_sfe' # Then: PASS # # Constants # let NETFW_FIREWALL_POLICY_TYPE = "AWS::NetworkFirewall::FirewallPolicy" let ALLOWED_STATELESS_FRAGMENT_ACTIONS_LIST = [ "aws:drop", "aws:forward_to_sfe" ] let INPUT_DOCUMENT = this # # Assignments # let netfw_firewall_policies = Resources.*[ Type == %NETFW_FIREWALL_POLICY_TYPE ] # # Primary Rules # rule netfw_policy_default_action_fragment_packets_check when is_cfn_template(%INPUT_DOCUMENT) %netfw_firewall_policies not empty { check(%netfw_firewall_policies.Properties) << [CT.NETWORK-FIREWALL.PR.3]: Require any AWS Network Firewall firewall policy to drop or forward fragmented packets by default when they do not match a stateless rule [FIX]: Within 'FirewallPolicy', include one of 'aws:drop' or 'aws:forward_to_sfe' in 'StatelessFragmentDefaultActions'. >> } rule netfw_policy_default_action_fragment_packets_check when is_cfn_hook(%INPUT_DOCUMENT, %NETFW_FIREWALL_POLICY_TYPE) { check(%INPUT_DOCUMENT.%NETFW_FIREWALL_POLICY_TYPE.resourceProperties) << [CT.NETWORK-FIREWALL.PR.3]: Require any AWS Network Firewall firewall policy to drop or forward fragmented packets by default when they do not match a stateless rule [FIX]: Within 'FirewallPolicy', include one of 'aws:drop' or 'aws:forward_to_sfe' in 'StatelessFragmentDefaultActions'. >> } # # Parameterized Rules # rule check(netfw_firewall_policy) { %netfw_firewall_policy { # Scenario 2 FirewallPolicy exists FirewallPolicy is_struct FirewallPolicy { # Scenario 2 and 3 StatelessFragmentDefaultActions exists StatelessFragmentDefaultActions is_list StatelessFragmentDefaultActions not empty # Scenario 4 and 5 some StatelessFragmentDefaultActions[*] { this in %ALLOWED_STATELESS_FRAGMENT_ACTIONS_LIST } } } } # # Utility Rules # rule is_cfn_template(doc) { %doc { AWSTemplateFormatVersion exists or Resources exists } } rule is_cfn_hook(doc, RESOURCE_TYPE) { %doc.%RESOURCE_TYPE.resourceProperties exists }

CT.NETWORK-FIREWALL.PR.3exemples de modèles

Vous pouvez consulter des exemples d'artefacts de test PASS et FAIL pour les contrôles proactifs de l'AWS Control Tower.

Exemple PASS - Utilisez ce modèle pour vérifier la conformité de la création d'une ressource.

Resources: FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: Fn::Sub: ${AWS::StackName}-example FirewallPolicy: StatelessDefaultActions: - aws:forward_to_sfe StatelessFragmentDefaultActions: - aws:drop

Exemple d'échec : utilisez ce modèle pour vérifier que le contrôle empêche la création de ressources non conformes.

Resources: FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: Fn::Sub: ${AWS::StackName}-example FirewallPolicy: StatelessDefaultActions: - aws:pass StatelessFragmentDefaultActions: - aws:pass

[CT.NETWORK-FIREWALL.PR.4] Exiger qu'un groupe de AWS Network Firewall règles contienne au moins une règle

Ce contrôle vérifie si un groupe de règles AWS Network Firewall apatrides contient des règles.

  • Objectif de contrôle : limiter l'accès au réseau

  • Mise en œuvre : règle de AWS CloudFormation garde

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::NetworkFirewall::RuleGroup

  • AWS CloudFormationrègle de garde : CT.NETWORK-FIREWALL.PR.4spécification des règles

Détails et exemples

Explication

Un groupe de règles contient des règles qui définissent la manière dont votre pare-feu traite le trafic dans votre VPC. Un groupe de règles vide et apatride, lorsqu'il est présent dans une politique de pare-feu, peut donner l'impression que le groupe de règles traitera le trafic. Toutefois, lorsque le groupe de règles apatrides est vide, il ne traite pas le trafic.

Considérations d'utilisation
  • Ce contrôle s'applique uniquement aux groupes de règles AWS Network Firewall apatrides.

Remédiation en cas de défaillance des règles

Fournissez une ou plusieurs règles AWS Network Firewall apatrides au sein de la RuleGroup.RulesSource.StatelessRulesAndCustomActions.StatelessRules propriété.

Les exemples suivants montrent comment implémenter cette correction.

AWS Network FirewallGroupe de règles - Exemple

AWS Network Firewallgroupe de règles configuré avec une règle apatride. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "NetworkFirewallRuleGroup": { "Type": "AWS::NetworkFirewall::RuleGroup", "Properties": { "RuleGroupName": { "Fn::Sub": "${AWS::StackName}-sample" }, "Capacity": 100, "Description": "Sample rule group", "Type": "STATELESS", "RuleGroup": { "RulesSource": { "StatelessRulesAndCustomActions": { "StatelessRules": [ { "RuleDefinition": { "MatchAttributes": { "Sources": [ { "AddressDefinition": "0.0.0.0/0" } ], "Destinations": [ { "AddressDefinition": "10.0.0.0/8" } ], "SourcePorts": [ { "FromPort": 15000, "ToPort": 30000 } ], "DestinationPorts": [ { "FromPort": 443, "ToPort": 443 } ], "Protocols": [ 6 ] }, "Actions": [ "aws:forward_to_sfe" ] }, "Priority": 1 } ] } } } } } }

Exemple YAML

NetworkFirewallRuleGroup: Type: AWS::NetworkFirewall::RuleGroup Properties: RuleGroupName: !Sub '${AWS::StackName}-sample' Capacity: 100 Description: Sample rule group Type: STATELESS RuleGroup: RulesSource: StatelessRulesAndCustomActions: StatelessRules: - RuleDefinition: MatchAttributes: Sources: - AddressDefinition: '0.0.0.0/0' Destinations: - AddressDefinition: 10.0.0.0/8 SourcePorts: - FromPort: 15000 ToPort: 30000 DestinationPorts: - FromPort: 443 ToPort: 443 Protocols: - 6 Actions: - aws:forward_to_sfe Priority: 1

CT.NETWORK-FIREWALL.PR.4spécification des règles

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # netfw_stateless_rule_group_not_empty_check # # Description: # This control checks whether an AWS Network Firewall stateless rule group contains rules. # # Reports on: # AWS::NetworkFirewall::RuleGroup # # Evaluates: # AWS CloudFormation, AWS CloudFormation hook # # Rule Parameters: # None # # Scenarios: # Scenario: 1 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document does not contain any Network Firewall rule group resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall rule group resource # And: 'Type' is not equal to 'STATELESS' # Then: SKIP # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall rule group resource # And: 'Type' is 'STATELESS' # And: 'RuleGroup.RulesSource.StatelessRulesAndCustomActions' has not been provided # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall rule group resource # And: 'Type' is 'STATELESS' # And: 'RuleGroup.RulesSource.StatelessRulesAndCustomActions' has been provided # And: 'StatelessRules' has not been provided within 'StatelessRulesAndCustomActions' or has been provided with # an empty list value # Then: FAIL # Scenario: 5 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall rule group resource # And: 'Type' is 'STATELESS' # And: 'RuleGroup.RulesSource.StatelessRulesAndCustomActions' has been provided # And: 'StatelessRules' has been provided within 'StatelessRulesAndCustomActions' as a non-empty list value # Then: PASS # # Constants # let NETFW_RULE_GROUP_TYPE = "AWS::NetworkFirewall::RuleGroup" let INPUT_DOCUMENT = this # # Assignments # let netfw_rule_group = Resources.*[ Type == %NETFW_RULE_GROUP_TYPE ] # # Primary Rules # rule netfw_stateless_rule_group_not_empty_check when is_cfn_template(%INPUT_DOCUMENT) %netfw_rule_group not empty { check(%netfw_rule_group.Properties) << [CT.NETWORK-FIREWALL.PR.4]: Require any AWS Network Firewall rule group to contain at least one rule [FIX]: Provide one or more AWS Network Firewall stateless rules within the 'RuleGroup.RulesSource.StatelessRulesAndCustomActions.StatelessRules' property. >> } rule netfw_stateless_rule_group_not_empty_check when is_cfn_hook(%INPUT_DOCUMENT, %NETFW_RULE_GROUP_TYPE) { check(%INPUT_DOCUMENT.%NETFW_RULE_GROUP_TYPE.resourceProperties) << [CT.NETWORK-FIREWALL.PR.4]: Require any AWS Network Firewall rule group to contain at least one rule [FIX]: Provide one or more AWS Network Firewall stateless rules within the 'RuleGroup.RulesSource.StatelessRulesAndCustomActions.StatelessRules' property. >> } # # Parameterized Rules # rule check(netfw_rule_group) { %netfw_rule_group[ # Scenario 2 Type exists Type == "STATELESS" ] { # Scenario 3 RuleGroup exists RuleGroup is_struct RuleGroup { RulesSource exists RulesSource is_struct RulesSource { StatelessRulesAndCustomActions exists StatelessRulesAndCustomActions is_struct StatelessRulesAndCustomActions { # Scenarios 4 and 5 StatelessRules exists StatelessRules is_list StatelessRules not empty } } } } } # # Utility Rules # rule is_cfn_template(doc) { %doc { AWSTemplateFormatVersion exists or Resources exists } } rule is_cfn_hook(doc, RESOURCE_TYPE) { %doc.%RESOURCE_TYPE.resourceProperties exists }

CT.NETWORK-FIREWALL.PR.4exemples de modèles

Vous pouvez consulter des exemples d'artefacts de test PASS et FAIL pour les contrôles proactifs de l'AWS Control Tower.

Exemple PASS - Utilisez ce modèle pour vérifier la conformité de la création d'une ressource.

Resources: NetworkFirewallRuleGroup: Type: AWS::NetworkFirewall::RuleGroup Properties: RuleGroupName: Fn::Sub: ${AWS::StackName}-example Capacity: 100 Description: Example rule group Type: STATELESS RuleGroup: RulesSource: StatelessRulesAndCustomActions: StatelessRules: - RuleDefinition: MatchAttributes: Sources: - AddressDefinition: 0.0.0.0/0 Destinations: - AddressDefinition: 10.0.0.0/8 SourcePorts: - FromPort: 15000 ToPort: 30000 DestinationPorts: - FromPort: 443 ToPort: 443 Protocols: - 6 Actions: - aws:forward_to_sfe Priority: 1

Exemple d'échec : utilisez ce modèle pour vérifier que le contrôle empêche la création de ressources non conformes.

Resources: NetworkFirewallRuleGroup: Type: AWS::NetworkFirewall::RuleGroup Properties: RuleGroupName: Fn::Sub: ${AWS::StackName}-example Capacity: 100 Description: Example rule group Type: STATELESS RuleGroup: RulesSource: StatelessRulesAndCustomActions: StatelessRules: []

[CT.NETWORK-FIREWALL.PR.5] Exiger le déploiement d'un AWS Network Firewall pare-feu sur plusieurs zones de disponibilité

Ce contrôle vérifie si un AWS Network Firewall pare-feu est déployé dans plusieurs zones de disponibilité (AZ), afin de permettre le basculement automatique entre les zones de disponibilité.

  • Objectif de contrôle : améliorer la résilience

  • Mise en œuvre : règle de AWS CloudFormation garde

  • Comportement de contrôle : proactif

  • Types de ressources : AWS::NetworkFirewall::Firewall

  • AWS CloudFormationrègle de garde : Spécification de la règle CT.NETWORK-FIREWALL.PR.5

Détails et exemples

Explication

L'infrastructure AWS mondiale est construite autour Régions AWS de zones de disponibilité. Régions AWSfournir plusieurs zones de disponibilité (AZ), physiquement séparées et isolées. Ces zones d'accès sont connectées par un réseau à faible latence, à haut débit et hautement redondant. Vous pouvez concevoir et exploiter des applications et des bases de données qui basculent automatiquement entre les zones de disponibilité sans interruption. Les zones de disponibilité sont plus hautement disponibles, tolérantes aux pannes et évolutives que les infrastructures traditionnelles à un ou plusieurs centres de données.

Remédiation en cas de défaillance des règles

Dans le SubnetMappings paramètre, fournissez au moins deux entrées qui font référence à des sous-réseaux dans différentes zones de disponibilité.

Les exemples suivants montrent comment implémenter cette correction.

AWS Network FirewallPare-feu - Exemple

Un AWS Network Firewall pare-feu configuré pour être déployé sur deux sous-réseaux dans différentes zones de disponibilité. L'exemple est présenté en JSON et en YAML.

Exemple JSON

{ "Firewall": { "Type": "AWS::NetworkFirewall::Firewall", "Properties": { "FirewallName": "SampleFirewall", "FirewallPolicyArn": { "Ref": "FirewallPolicy" }, "VpcId": { "Ref": "VPC" }, "Description": "Sample firewall", "SubnetMappings": [ { "SubnetId": { "Ref": "SubnetOne" } }, { "SubnetId": { "Ref": "SubnetTwo" } } ] } } }

Exemple YAML

Firewall: Type: AWS::NetworkFirewall::Firewall Properties: FirewallName: SampleFirewall FirewallPolicyArn: !Ref 'FirewallPolicy' VpcId: !Ref 'VPC' Description: Sample firewall SubnetMappings: - SubnetId: !Ref 'SubnetOne' - SubnetId: !Ref 'SubnetTwo'

Spécification de la règle CT.NETWORK-FIREWALL.PR.5

# ################################### ## Rule Specification ## ##################################### # # Rule Identifier: # netfw_multi_az_enabled_check # # Description: # This control checks whether an AWS Network Firewall firewall is deployed across multiple Availability Zones (AZs), to permit automatic failover between AZs. # # Reports on: # AWS::NetworkFirewall::Firewall # # Evaluates: # AWS CloudFormation, AWS CloudFormation hook # # Rule Parameters: # None # # Scenarios: # Scenario: 1 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document does not contain any Network Firewall firewall resources # Then: SKIP # Scenario: 2 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall resource # And: 'SubnetMappings' has not been specified or specified as an empty list # Then: FAIL # Scenario: 3 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall resource # And: 'SubnetMappings' has been specified # And: The number of entries in 'SubnetMappings' is less than two (< 2) # Then: FAIL # Scenario: 4 # Given: The input document is an AWS CloudFormation or AWS CloudFormation hook document # And: The input document contains a Network Firewall firewall resource # And: 'SubnetMappings' has been specified # And: The number of entries in 'SubnetMappings' is greater than or equal to two (>= 2) # Then: PASS # # Constants # let NETFW_FIREWALL_FIREWALL_TYPE = "AWS::NetworkFirewall::Firewall" let INPUT_DOCUMENT = this # # Assignments # let netfw_firewalls = Resources.*[ Type == %NETFW_FIREWALL_FIREWALL_TYPE ] # # Primary Rules # rule netfw_multi_az_enabled_check when is_cfn_template(%INPUT_DOCUMENT) %netfw_firewalls not empty { check(%netfw_firewalls.Properties) << [CT.NETWORK-FIREWALL.PR.5]: Require an AWS Network Firewall firewall to be deployed across multiple Availability Zones [FIX]: In the SubnetMappings parameter, provide at least two entries that refer to subnets in different Availability Zones. >> } rule netfw_multi_az_enabled_check when is_cfn_hook(%INPUT_DOCUMENT, %NETFW_FIREWALL_FIREWALL_TYPE) { check(%INPUT_DOCUMENT.%NETFW_FIREWALL_FIREWALL_TYPE.resourceProperties) << [CT.NETWORK-FIREWALL.PR.5]: Require an AWS Network Firewall firewall to be deployed across multiple Availability Zones [FIX]: In the SubnetMappings parameter, provide at least two entries that refer to subnets in different Availability Zones. >> } # # Parameterized Rules # rule check(netfw_firewall) { %netfw_firewall { # Scenario 2 SubnetMappings exists SubnetMappings is_list SubnetMappings not empty # Scenarios 3 and 4 SubnetMappings[0] exists SubnetMappings[1] exists } } # # Utility Rules # rule is_cfn_template(doc) { %doc { AWSTemplateFormatVersion exists or Resources exists } } rule is_cfn_hook(doc, RESOURCE_TYPE) { %doc.%RESOURCE_TYPE.resourceProperties exists }

Exemples de modèles CT.NETWORK-FIREWALL.PR.5

Vous pouvez consulter des exemples d'artefacts de test PASS et FAIL pour les contrôles proactifs de l'AWS Control Tower.

Exemple PASS - Utilisez ce modèle pour vérifier la conformité de la création d'une ressource.

Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 SubnetOne: Type: AWS::EC2::Subnet Properties: VpcId: Ref: VPC CidrBlock: 10.0.0.0/24 AvailabilityZone: Fn::Select: - 0 - Fn::GetAZs: "" SubnetTwo: Type: AWS::EC2::Subnet Properties: VpcId: Ref: VPC CidrBlock: 10.0.1.0/24 AvailabilityZone: Fn::Select: - 1 - Fn::GetAZs: "" FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: Fn::Sub: ${AWS::StackName}-example-firewall-policy FirewallPolicy: StatelessDefaultActions: - aws:forward_to_sfe StatelessFragmentDefaultActions: - aws:forward_to_sfe Description: Example firewall policy Firewall: Type: AWS::NetworkFirewall::Firewall Properties: FirewallName: Fn::Sub: ${AWS::StackName}-example-firewall FirewallPolicyArn: Ref: FirewallPolicy VpcId: Ref: VPC Description: Example firewall SubnetMappings: - SubnetId: Ref: SubnetOne - SubnetId: Ref: SubnetTwo

Exemple d'échec : utilisez ce modèle pour vérifier que le contrôle empêche la création de ressources non conformes.

Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 SubnetOne: Type: AWS::EC2::Subnet Properties: VpcId: Ref: VPC CidrBlock: 10.0.0.0/24 AvailabilityZone: Fn::Select: - 0 - Fn::GetAZs: "" FirewallPolicy: Type: AWS::NetworkFirewall::FirewallPolicy Properties: FirewallPolicyName: Fn::Sub: ${AWS::StackName}-example-firewall-policy FirewallPolicy: StatelessDefaultActions: - aws:forward_to_sfe StatelessFragmentDefaultActions: - aws:forward_to_sfe Description: Example firewall policy Firewall: Type: AWS::NetworkFirewall::Firewall Properties: FirewallName: Fn::Sub: ${AWS::StackName}-example-firewall FirewallPolicyArn: Ref: FirewallPolicy VpcId: Ref: VPC Description: Example firewall SubnetMappings: - SubnetId: Ref: SubnetOne