Basics
- AWS implementation of L7 or Application Layer firewall
- Web ACL by WAF for protecting AWS resources
- Web ACL has Rules that are grouped under Rule Groups
- WAF provides logs that can be stored in S3 or sent to CloudWatch logs or Kinesis Firehose
WebACL
- A default action either allows or blocks traffick that does not match Rules
- WebACL is either created for CloudFront (Global) or services like ALB,API GW,AppSync(Regional)
- Rules & Rule Groups are processed in order
- Rules have compute requirements. This is measured in Web ACL Capacity Units or WCU. The default limit for WCU is 1500
- Associating a new WebACL with a resource takes much longer than adjusting an existing WebACL
- A resource can have one WebACL but one WebACL can be associated with many resources
- AWS Outposts currently do not support WebACL
Rules & Rule Groups
- Rule Groups are either managed by AWS or a marketplace vendor or by yourself or Service Owned
- AWs Managed rule groups are generally free for WAF customers with some exceptions like AWA WAF Bot Control & Fraud Control Account Takeover protection groups
- One needs to define WCU capacity for each rule group. 1500 is the default
- Rules consist of
- Rule Type - Regular or Rate Bases
- Statement - What to Match, Count or Both
- WAF can only check for first 8192 bytes of the request body
- Action - Allow, Block, Count, Captcha, Custom Http Response, Label
- Allow is not allowed for rate based rules
- For Block custom can be custom header or response. Allows, Counts & Captch it can be customer header only. Custom Headers are prefixed with x-awsz-waf-
- Labels can be applied & can be used in multi stage rules
Pricing
- A Monthly charge per WebACL
- A monthly charge per rule in WebACL
- A monthly charge per Rule Group
- Charge per request per WebACL