We close the content delivery chapter with protection against attacks. Your website is already fast (CloudFront) and encrypted (ACM), but the internet is full of malicious traffic: bots, hackers, attack attempts. The WAF (Web Application Firewall) is the shield that filters out that harmful traffic before it reaches your application. Integrated with CloudFront, it protects your site at the edge of the network.

What is a WAF

A WAF (Web Application Firewall) is a firewall specialized in web applications. Unlike Security Groups (Chapter 4), which filter by ports and IPs at the network level, the WAF understands HTTP and examines the content of web requests to detect and block attacks.

   Internet traffic
   ┌─────────────────────────┐
   │ ✓ legitimate users       │
   │ ✗ malicious bots         │ ──► [ WAF ] ──► only legitimate traffic passes ──► your website
   │ ✗ attack attempts        │      (filters)
   │ ✗ abusive scrapers       │
   └─────────────────────────┘

Analogy: the WAF is like the security bouncer at a nightclub. He checks everyone who wants to enter: lets in regular customers, but stops those looking for trouble (those carrying weapons, the troublemakers). He inspects who enters and with what intention, not just the door.

What does a WAF protect against?

The WAF defends against the most common web application attacks, many of them from the famous OWASP Top 10 (the list of the most critical web vulnerabilities):

  • SQL Injection: attempts to "sneak in" malicious commands to your database through forms or URLs.
  • Cross-Site Scripting (XSS): attempts to inject harmful scripts into your website to attack other users.
  • Malicious bots: automated programs that crawl, copy content, or look for vulnerabilities.
  • Brute force attacks: repeated attempts to guess passwords.
  • Abusive request spikes: too many requests from the same source (rate limiting).

How it works: the rules

The WAF works with rules that define what to block and what to allow. There are two ways to get them:

AWS managed rules (the easiest)

AWS offers predefined rule groups maintained by their security experts. By enabling them, your website is protected against the most common threats, without you having to be a security expert. AWS constantly updates them as new threats appear.

To start, this is recommended: enable AWS managed rules (for example, the "Core" set and the "known bad inputs" set) and you'll have solid protection with very little effort.

Custom rules (your own)

You can also create your own rules for your specific case:

  • Block or allow by IP: ban specific IPs or allow only certain ones (a blacklist or whitelist).
  • Block by country (geo): if your business is only national, you can block traffic from countries where you only receive attacks.
  • Rate limiting: "if an IP makes more than 1,000 requests in 5 minutes, block it." Excellent against bots and brute force.
  • Filter by content: block requests with suspicious patterns in the URL, headers, etc.
Rate limiting rule:
  Does an IP make more than 1000 requests in 5 min?
     → YES: temporarily block it (probably a bot)
     → NO: let it through

Why integrate it with CloudFront

Here's the advantage of combining WAF with CloudFront (subchapter 16.2): by putting it in the CDN, filtering happens at the edge of the network (the edge locations), far from your application.

Attacker ──► Edge location (WAF filters here) ──✗ blocked
                                                  │
User ───► Edge location (WAF approves) ──✓──► your application

Double benefit:

  • Malicious traffic is blocked at the edge, before it travels to your server. Your application doesn't even notice the attack.
  • Since filtering is distributed worldwide, it absorbs large-scale attacks without saturating your origin.

Real world example: an online store suffers a bot attack trying to test thousands of stolen cards on its payment form. With WAF integrated into CloudFront, a rate limiting rule detects massive requests from the same IPs and blocks them at the edge locations, far from the store. The store's servers continue to function normally for real customers, without even noticing the attack.

WAF and the others: a layered defense

The WAF does not replace other protections; it adds to them, forming a defense in depth (a concept we will expand on in Chapter 23):

Layer What it protects Level
WAF Web application attacks (SQL injection, XSS, bots) Application (HTTP)
Security Groups (Ch. 4) Which ports/IPs reach your resources Network
Network ACLs (Ch. 6) Traffic at the subnet level Network
IAM (Ch. 7) Who can do what in AWS Identity

Each layer covers a different aspect. Together, they make your application much harder to attack.

What you should remember

  • A WAF (Web Application Firewall) is a firewall that understands HTTP and filters malicious web traffic by examining the content of requests (unlike Security Groups, which filter by network). It's like the "security bouncer" of your website.
  • It protects against common OWASP Top 10 attacks: SQL injection, XSS, malicious bots, brute force, and abusive spikes.
  • It works with rules: AWS managed rules provide solid protection without being an expert (recommended to start), and you can add custom rules (block by IP/country, rate limiting...).
  • Integrated with CloudFront, it filters malicious traffic at the edge of the network, far from your application, and absorbs large-scale attacks.
  • The WAF is part of a layered defense along with Security Groups, Network ACLs, and IAM.

You've finished Chapter 16! Your application is now fast, secure, and protected for the internet. In Chapter 17 we close Part IV with containers on AWS: Docker, ECR, ECS, and EKS, another fundamental way to deploy applications.

Cloud, AWS & Terraform — From Zero to Expert

Chapter 1 · What is cloud computing

Chapter 2 · The cloud market and major providers

Chapter 3 · Regions, availability zones and edge

Chapter 4 · Compute: EC2

Chapter 5 · Storage: S3

Chapter 6 · Networking: VPC

Chapter 7 · Identity and access: IAM

Chapter 8 · Managed databases

Chapter 9 · Why Infrastructure as Code

Chapter 10 · HCL: the Terraform language

Chapter 11 · Providers and state

Chapter 12 · Your first real infrastructure in Terraform

Chapter 13 · Load balancing and auto scaling

Chapter 14 · Serverless with Lambda

Chapter 15 · Messaging and events

Chapter 16 · Content delivery and DNS

Chapter 17 · Containers on AWS

Chapter 18 · Modules: reuse and composition

Chapter 19 · Workspaces and environment management

Chapter 20 · Remote backends and locking

Chapter 21 · Infrastructure testing

Chapter 22 · Terraform in CI/CD

Chapter 23 · Defense in depth

Chapter 24 · Observability: logs, metrics and traces

Chapter 25 · Cost optimization

Chapter 26 · High availability and disaster recovery

Chapter 27 · AWS Well-Architected Framework

Chapter 28 · Serverless architectures at scale

Chapter 29 · Data platforms on AWS

Chapter 30 · Multi-account and landing zones

Chapter 31 · Platform Engineering and Internal Developer Platform

Chapter 32 · Relevant AWS certifications

Chapter 33 · Projects to consolidate what you've learned

Chapter 34 · Resources and community

© Copyright 2024. All rights reserved