waf.tf 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. module "waf" {
  2. source = "../../submodules/wafv2"
  3. # Custom to resource
  4. allowed_ips = [] # bypasses filters, so should not be needed/used unless warranted
  5. admin_ips = concat(local.zscalar_ips, local.admin_ips)
  6. additional_blocked_ips = [] # NOTE: There is a standard list in the submodule
  7. resource_arn = aws_alb.external.arn
  8. fqdns = [ # first entry in list will be the WAF name
  9. "${var.instance_name}.${var.dns_info["public"]["zone"]}"
  10. # example, to add additional valid hostnames
  11. # keys(module.public_dns_record_cust-auth-elb.forward),
  12. ]
  13. # Set to 'false' to set as 'count only'
  14. block_settings = {
  15. default = false, # Default action. False = count
  16. custom = false, # XDR Custom Rules. False = count
  17. admin = false, # /admin folder
  18. AWSManagedRulesCommonRuleSet = false,
  19. AWSManagedRulesAmazonIpReputationList = false,
  20. AWSManagedRulesKnownBadInputsRuleSet = false,
  21. AWSManagedRulesSQLiRuleSet = false,
  22. AWSManagedRulesLinuxRuleSet = false,
  23. AWSManagedRulesUnixRuleSet = false,
  24. }
  25. excluded_rules_AWSManagedRulesSQLiRuleSet = [
  26. ]
  27. excluded_rules_AWSManagedRulesUnixRuleSet = [
  28. ]
  29. excluded_rules_AWSManagedRulesLinuxRuleSet = [
  30. "LFI_URIPATH", # /web/config.js needed
  31. ]
  32. excluded_rules_AWSManagedRulesCommonRuleSet = [
  33. "SizeRestrictions_BODY", # for SAML
  34. "EC2MetaDataSSRF_BODY", # for SAML
  35. ]
  36. # These are passed through and should be the same for module
  37. tags = merge(local.standard_tags, var.tags)
  38. aws_partition = var.aws_partition
  39. aws_region = var.aws_region
  40. aws_account_id = var.aws_account_id
  41. }
  42. # Example: If you want to attach the WAF to an additional ALB
  43. #
  44. # Share a WAF for both services, should be cheaper due to scale, but can be easily separated out
  45. # using the commented section below, if the need arises.
  46. #resource "aws_wafv2_web_acl_association" "associate-auth-to-waf" {
  47. # resource_arn = aws_lb.searchhead-auth-alb.arn
  48. # web_acl_arn = module.waf.web_acl_id
  49. #}
  50. # Example: If you want a second WAF, that should be straightforward
  51. #module "waf-auth" {
  52. # source = "../../../submodules/wafv2"
  53. #
  54. # # Custom to resource
  55. # allowed_ips = [ ] # bypasses filters, so should not be needed/used unless warranted
  56. # additional_blocked_ips = [ ] # NOTE: There is a standard list in the submodule
  57. # resource_arn = aws_lb.searchhead-auth-alb.arn
  58. # fqdns = keys(module.public_dns_record_cust-auth-elb.forward) # first entry in list will be the WAF name
  59. #
  60. # # These are passed through and should be the same for module
  61. # tags = merge(local.standard_tags, var.tags)
  62. # aws_partition = var.aws_partition
  63. # aws_region = var.aws_region
  64. # aws_account_id = var.aws_account_id
  65. #}