Introduction
DDoS attacks can cripple services. In 2026, attackers routinely launch terabit-per-second floods using botnets of compromised IoT devices, residential routers, and cloud VMs. The largest recorded DDoS peaked at 5.6 Tbps in 2024, and campaigns routinely exceed 1 Tbps. Most attacks are still under 10 Gbps, but application-layer attacks of millions of requests per second are routine.
This guide covers the complete taxonomy of DDoS attacks, defense strategies at every layer, mitigation techniques, provider selection, and building resilient infrastructure. DDoS defense is a well-understood discipline — but you have to defend against three very different categories of attack, each requiring different tools.
Understanding DDoS Attacks
What Is a DDoS Attack?
DDoS stands for Distributed Denial of Service. The goal is simple: make your service unavailable by overwhelming it — with traffic, with malformed packets, or with expensive requests. “Distributed” means the attack comes from many sources at once, often thousands or millions of compromised devices.
Attack Types
DDoS attacks are categorized by which OSI layer they target:
volumetric_attacks:
description: "Saturate network bandwidth with massive traffic"
layer: "Layer 3/4"
examples:
- "UDP Flood"
- "ICMP Flood"
- "DNS/NTP/Memcached Amplification"
measured: "Gbps or Tbps"
protocol_attacks:
description: "Exploit protocol weaknesses to exhaust state"
layer: "Layer 3/4"
examples:
- "SYN Flood"
- "ACK Flood"
- "Ping of Death"
measured: "Mpps (packets per second)"
application_layer_attacks:
description: "Overwhelm application logic with valid-looking requests"
layer: "Layer 7"
examples:
- "HTTP Flood"
- "Slowloris"
- "Slow POST / RUDY"
- "Credential Stuffing"
measured: "Requests per second"
Why Mpps Often Matters More Than Tbps
Network engineers instinctively think about bandwidth (bps), but modern DDoS attacks often win on packets per second (pps), not raw bandwidth. Every packet — regardless of size — consumes CPU cycles: interrupt handling, kernel network stack traversal, routing table lookup, and connection state management.
A 10 Gbps link carries a maximum of 14.88 Mpps of minimum-size (64-byte) Ethernet frames. A SYN flood using 64-byte packets at 14.88 Mpps sends 10 Gbps of traffic but consumes packet-processing slots at 18x the rate of large-packet traffic on the same bandwidth. This is why mitigation systems must handle hundreds of Mpps, not just peak bandwidth.
Attack Vector Example
# Simple SYN flood (for understanding only)
# Never execute actual attacks
def syn_flood(target_ip, target_port, duration):
"""Concept: Send many SYN packets without completing handshake"""
# In reality, use hping3 or similar tools
# This is pseudocode for understanding
pass
The Three Attack Categories in Depth
Volumetric Attacks (Layer 3/4)
The simplest and most common type. Volumetric attacks try to saturate your bandwidth — if your transit link is 10 Gbps and the attacker pushes 50 Gbps, no legitimate packet can squeeze through.
Common techniques:
| Technique | Description | Mitigation |
|---|---|---|
| UDP flood | Random UDP packets at random ports | Rate limit per source, drop unexpected ports |
| ICMP flood | Ping floods with large payloads | Rate limit ICMP at edge |
| DNS amplification | 40-byte query → 3,000-byte response (70x) | Block inbound UDP port 53, RRL |
| NTP amplification | 234-byte request → 48,000-byte response (206x) | Block inbound UDP port 123 |
| Memcached amplification | 15-byte request → 1MB response (51,000x) | Never expose memcached, block UDP 11211 |
| Carpet bombing | Spread across entire /24 to evade per-IP limits | Upstream scrubbing, FlowSpec |
Defenses: Upstream scrubbing absorbs the flood before it reaches your network. BGP blackholing announces the attacked /32 with a community that tells upstream to drop all traffic to it. Anycast distributes your service across many PoPs so no single one is overwhelmed. Massive bandwidth headroom — buying more capacity than you’ll ever need — is expensive but effective.
# iptables: rate limit UDP and drop excess
iptables -A INPUT -p udp -m limit --limit 500/s --limit-burst 1000 -j ACCEPT
iptables -A INPUT -p udp -j DROP
# Block unsolicited DNS responses (amplification defense)
iptables -A INPUT -p udp --sport 53 -m state --state NEW -j DROP
Protocol Attacks (Layer 3/4)
Protocol attacks abuse the way TCP, UDP, and other protocols work to exhaust state on your servers, firewalls, or load balancers — even at relatively low bandwidth.
| Technique | Mechanism | Mitigation |
|---|---|---|
| SYN flood | Open millions of half-open TCP connections | SYN cookies, connection rate limits |
| ACK flood | Spoofed ACKs force firewall lookups | Stateful firewall, drop NEW ACK |
| RST flood | Spoofed resets tear down connections | TCP sequence validation, tcp_rfc1337 |
| Fragment flood | Malformed fragments crash IP stacks | Fragment filtering |
| GRE flood | Overwhelm decapsulation processing | Drop GRE (protocol 47) if unused |
SYN cookies are the modern standard defense — the OS encodes connection state in the SYN-ACK sequence number so it doesn’t need to keep half-open connections:
# Enable SYN cookies (Linux)
sysctl -w net.ipv4.tcp_syncookies=1
# Increase SYN backlog and reduce timeout
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.ipv4.tcp_synack_retries=2
# Rate limit SYN packets
iptables -A INPUT -p tcp --syn -m limit --limit 100/s --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
Application-Layer Attacks (Layer 7)
The most sophisticated and hardest to detect. Layer 7 attacks send valid-looking requests to your application — but at a rate or pattern designed to exhaust resources. Individual requests look legitimate, so no bandwidth anomaly triggers upstream ISP alarms.
| Technique | Mechanism | Mitigation |
|---|---|---|
| HTTP flood | Millions of GET/POST to expensive endpoints | WAF, rate limiting, bot detection |
| Slowloris | Open connections, send headers slowly | Aggressive timeouts, event-driven servers |
| Slow POST | Send large Content-Length, drip body | Body size limits, transfer timeouts |
| Cache-busting | Random query strings bypass CDN caches | Normalize URLs, origin shielding |
| Credential stuffing | Brute-force logins exhaust auth capacity | CAPTCHA, MFA, IP reputation |
Mitigation strategies:
- Web Application Firewall (WAF) — fingerprint and block bad traffic by signature, behavior, or rate
- Bot detection — JavaScript challenges, browser fingerprinting, CAPTCHA
- Rate limiting per session — cap per-user request rate
- Caching aggressively — keep dynamic responses out of the origin path
- Origin shielding — only allow your CDN/WAF IPs to reach your origin
# nginx rate limiting for HTTP flood protection
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
location /api/ {
limit_req zone=api burst=20 nodelay;
}
# Limit connections per IP and set header timeout (Slowloris defense)
limit_conn_zone $binary_remote_addr zone=connlimit:10m;
limit_conn connlimit 20;
client_header_timeout 10s;
client_body_timeout 10s;
Defense Strategies
Multi-Layer Defense
defense_layers:
- name: "Edge/CDN"
purpose: "Absorb volumetric attacks, cache content"
tools: ["Cloudflare", "Akamai", "AWS CloudFront"]
- name: "Network Layer"
purpose: "Filter bad traffic, absorb floods"
tools: ["DDoS protection services", "Border firewalls", "Scrubbing centers"]
- name: "Application Layer"
purpose: "Block application attacks"
tools: ["WAF", "Rate limiting", "CAPTCHA", "Bot detection"]
mitigation_phases:
1. "Detection - Identify attack early"
2. "Diversion - Route traffic through scrubbing"
3. "Filtering - Block malicious requests"
4. "Analysis - Understand attack pattern"
5. "Return - Gradually return to normal"
How DDoS Scrubbing Works
Scrubbing is the dominant defense against volumetric and protocol attacks:
- Detection — flow telemetry (sFlow, NetFlow, IPFIX) detects an anomaly
- Diversion — BGP route advertisement reroutes traffic for the attacked prefix to a scrubbing center
- Cleaning — the scrubbing center filters out malicious traffic and forwards only legitimate packets
- Re-injection — clean traffic flows back to your network through a GRE tunnel or direct cross-connect
Modern scrubbing infrastructures handle multi-Tbps attacks across globally distributed PoPs.
Always-On vs On-Demand
| Mode | Traffic Flow | Cost | Protection |
|---|---|---|---|
| Always-on | All traffic through scrubber | Higher | Highest — no diversion delay |
| On-demand | Direct until attack detected | Lower | 30-120s diversion delay |
Best practice: always-on for critical services, on-demand for less critical ones. Look for sub-10-second mitigation in your provider.
BGP Blackholing (RTBH)
Remotely Triggered Blackhole is the simplest DDoS response: drop all traffic to the attacked IP. You announce a /32 with a special community (typically 666 or a provider-specific value), and your upstream drops everything destined for that IP.
This stops the attack from saturating your pipe — but it also takes the attacked service completely offline. It’s a sacrifice play, useful when only one IP is being targeted and the alternative is the entire network going down.
Challenge-Based Mitigation
For L7 attacks, network-layer scrubbing is insufficient. Challenge-based mitigation presents clients with computational or behavioral challenges:
| Challenge Type | Description | User Impact |
|---|---|---|
| CAPTCHA | Human visual recognition | High friction |
| JavaScript challenge | Browser solves puzzle, sets cookie | Transparent to real users |
| Proof-of-Work | Client solves SHA-256 hash puzzle | ~100ms added latency |
AI/ML Behavioral Defense
Static rules and signature matching struggle against adaptive attacks. Modern DDoS mitigation platforms use machine learning to establish baseline behavioral profiles:
- Normal requests per second per endpoint
- Geographic distribution of legitimate users
- Typical request size distributions
- Expected protocol field values (TTL ranges, window sizes)
- Session-level behavior (time on page, navigation patterns)
When observed traffic deviates from baseline, the ML model adjusts mitigation thresholds automatically. Adaptive rate limiting targets specific source ASNs, URI paths, or request patterns rather than blanket blocking that harms legitimate users.
Cloudflare DDoS Protection
# Cloudflare configuration
# Under Attack Mode
# Enable in Cloudflare dashboard or via API
# Rate limiting
rules = [
{
"id": "rate-limit-1",
"action": "block",
"expression": "ip.src eq 10.0.0.0/8",
"config": {
"target": "ip",
"rate": 100,
"period": 60
}
}
]
# JavaScript challenge for suspicious traffic
challenge_rules = [
{
"action": "js_challenge",
"expression": "cf.threat_score gt 10"
}
]
Cloudflare operates a global anycast network with multi-Tbps scrubbing capacity. Its network absorbs most volumetric and many Layer 7 attacks. For non-HTTP services (game servers, custom protocols), you need a dedicated scrubber.
AWS Shield
# AWS DDoS protection layers
aws_protection:
- name: "AWS Shield Standard"
included: "All AWS customers"
protects:
- "Layer 3/4 attacks"
- "DDoS attacks on CloudFront, Route 53"
- name: "AWS Shield Advanced"
cost: "$3,000/month"
protects:
- "All Standard protections"
- "Application-layer DDoS"
- "24/7 DDoS Response Team"
- "DDoS cost protection"
Implementation
Rate Limiting at Edge
# Cloudflare Workers rate limiting
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const ip = request.headers.get('CF-Connecting-IP')
// Check rate limit
const limit = 100 // requests per minute
const key = `rate_limit:${ip}`
const current = await RATE_LIMIT.get(key)
if (current && parseInt(current) >= limit) {
return new Response('Rate limit exceeded', {
status: 429,
headers: {
'Retry-After': '60'
}
})
}
// Increment counter
await RATE_LIMIT.put(key, (current ? parseInt(current) + 1 : 1), { expirationTtl: 60 })
return fetch(request)
}
IP Reputation System
# IP reputation checking
class IPReputation:
"""Check IP reputation"""
def __init__(self):
self.blocklist = set()
self.allowlist = set()
def is_malicious(self, ip):
if ip in self.allowlist:
return False
if ip in self.blocklist:
return True
# Check threat intelligence feeds
return self.check_threat_feeds(ip)
def check_threat_feeds(self, ip):
# Check various threat intelligence sources
# - AbuseIPDB
# - Project Honey Pot
# - Spamhaus
pass
def get_score(self, ip):
"""Get threat score (0-100)"""
score = 0
# Check if in any blocklist
if ip in self.blocklist:
score += 50
# Check geographic risk
# Check attack history
# Check if proxy/VPN
return score
Choosing a DDoS-Protected Provider
| Criterion | What to Look For |
|---|---|
| Network capacity | Multi-Tbps scrubbing capacity |
| Detection time | Under 30s is good, under 10s is excellent |
| Mitigation time | How fast does the scrubber start cleaning? |
| Layer 7 protection | Pure network scrubbing won’t stop HTTP floods |
| Always-on option | For revenue-critical services |
| BGP community support | For blackholing and FlowSpec |
| Reporting | Post-attack reports for understanding |
| SLA | Uptime guarantees during attacks |
Attack Metrics and Cost Analysis
Cost of Downtime
| Service Type | Cost per Hour of Downtime | Impact |
|---|---|---|
| E-commerce | $100K-300K | Lost sales, cart abandonment |
| SaaS B2B | $25K-100K | SLA penalties, churn |
| Ad-supported | $10K-50K | Lost impressions |
| Financial services | $500K-1M+ | Trading disruption, compliance |
| Gaming | $50K-200K | Player churn, reputation |
A 2-hour DDoS outage on a mid-size e-commerce platform can cost $200K-600K in lost revenue alone, not counting recovery and reputation damage.
Mitigation Cost Comparison
| Protection Level | Monthly Cost | Protection |
|---|---|---|
| CDN + basic DDoS | $20-200 | Volumetric, some L7 |
| Managed DDoS service | $500-5,000 | Full volumetric + protocol |
| Always-on scrubbing | $1,000-10,000+ | Full protection, no diversion delay |
| Enterprise protection | $5,000-50,000+ | Multi-vector, 24/7 SOC |
Basic always-on scrubbing typically adds 10-30% to bandwidth costs. Specialized always-on with Layer 7 WAF can be more.
Real-World Attack Examples
| Attack | Year | Scale | Target | Impact |
|---|---|---|---|---|
| Memcached amplification | 2018 | 1.35 Tbps | GitHub | ~17,000 servers, 20 min |
| Largest recorded DDoS | 2024 | 5.6 Tbps | Cloudflare customer | UDP flood from IoT botnet |
| Record pps attack | 2024 | 100M+ pps | Various | Packet-rate exhaustion |
| Ransom DDoS (RDoS) | 2026 | Routine | Various | Extortion campaigns |
Monitoring and Detection
Key Metrics to Track
def detect_ddos_anomaly(traffic_stats):
"""Detect potential DDoS based on traffic anomalies."""
alerts = []
# Bandwidth anomaly
if traffic_stats['bps'] > 2 * traffic_stats['baseline_bps']:
alerts.append({
'type': 'volumetric',
'metric': f"Bandwidth {traffic_stats['bps']/1e9:.1f} Gbps vs baseline {traffic_stats['baseline_bps']/1e9:.1f} Gbps"
})
# Packet rate anomaly
if traffic_stats['pps'] > 3 * traffic_stats['baseline_pps']:
alerts.append({
'type': 'protocol',
'metric': f"Packet rate {traffic_stats['pps']/1e6:.1f} Mpps vs baseline {traffic_stats['baseline_pps']/1e6:.1f} Mpps"
})
# SYN/ACK ratio anomaly
syn_ack_ratio = traffic_stats['syn_count'] / max(traffic_stats['ack_count'], 1)
if syn_ack_ratio > 3:
alerts.append({
'type': 'syn_flood',
'metric': f"SYN/ACK ratio {syn_ack_ratio:.1f} (normal < 1)"
})
# Connection rate anomaly
if traffic_stats['connections_per_sec'] > 5 * traffic_stats['baseline_cps']:
alerts.append({
'type': 'connection_flood',
'metric': f"Connection rate {traffic_stats['connections_per_sec']}/s vs baseline {traffic_stats['baseline_cps']}/s"
})
return alerts
Monitoring Tools
| Tool | Layer | Detection Capability | Integration |
|---|---|---|---|
| NetFlow/sFlow | L3/L4 | Bandwidth, flow anomalies | All major routers |
| vnStat / nload | L3/L4 | Real-time traffic | Linux |
| CloudWatch/Grafana | L3-L7 | Custom metrics | AWS, self-hosted |
| WAF analytics | L7 | Request patterns, bot behavior | Cloudflare, AWS WAF |
| SIEM (Splunk, ELK) | L3-L7 | Correlated threat detection | Enterprise |
Rate Limiting Strategies
Fixed Window vs Token Bucket
| Strategy | Description | Pros | Cons |
|---|---|---|---|
| Fixed window | Reset counter every N seconds | Simple | Burst at window edge |
| Sliding window | Continuous window tracking | Smooth | More complex |
| Token bucket | Refill tokens at fixed rate | Allows bursts | Tuning needed |
| Leaky bucket | Fixed output rate | Very smooth | Rejects bursts |
| Adaptive | ML-based thresholds | Handles legit spikes | Requires baseline |
class TokenBucketRateLimiter:
"""Token bucket rate limiter for API endpoints."""
def __init__(self, rate, burst):
self.rate = rate # tokens per second
self.burst = burst # max tokens
self.tokens = burst
self.last_refill = time.time()
def allow(self):
"""Check if request is allowed."""
now = time.time()
elapsed = now - self.last_refill
self.tokens = min(self.burst, self.tokens + elapsed * self.rate)
self.last_refill = now
if self.tokens >= 1:
self.tokens -= 1
return True
return False
Layer-Specific Defense Configuration
Application Layer (L7) Defense Stack
# Complete L7 DDoS defense stack
defense_stack:
layer7:
cdn_caching: "Cache all static + semi-dynamic content"
waf: "OWASP CRS ruleset, PL2 default"
bot_management: "JS challenge + browser fingerprinting"
rate_limiting: "Per-IP, per-session, per-endpoint"
api_protection: "Schema validation, auth, quotas"
origin_shielding: "Only CDN IPs can reach origin"
load_balancing: "Distribute across multiple origins"
Origin Protection Checklist
- Only CDN/WAF IP ranges allowed to reach origin
- No direct public access to origin servers
- Rate limiting at every layer (CDN, WAF, app, DB)
- Aggressive timeouts for slow connections
- Request body size limits
- Caching headers configured for static content
- TLS termination at edge (not origin)
Security Hardening for Botnets
Prevent Becoming an Attacker
Compromised devices form the botnets that power DDoS attacks. Your infrastructure should not become part of the problem:
| Control | Purpose |
|---|---|
| BCP 38 / source-address validation | Prevent spoofed-source traffic leaving your network |
| Close open DNS resolvers | Prevent DNS amplification |
| Disable NTP monlist | Prevent NTP amplification |
| Never expose memcached to internet | Prevent 51,000x amplification |
| Disable UPnP on public devices | Prevent SSDP amplification |
| Patch IoT devices | Reduce botnet recruitment |
| Monitor outbound traffic | Detect anomalous outbound floods |
Multi-Vector Attack Defense
The most dangerous DDoS attacks in 2026 are multi-vector: they combine a volumetric UDP flood to stress the network with a simultaneous L7 HTTP flood targeting a specific endpoint, while a Slowloris campaign occupies remaining server connections. Single-layer defenses fail against this approach.
Building a resilient defense requires defense-in-depth: network-layer scrubbing to handle volumetric attacks, protocol-layer defenses for state exhaustion, and intelligent L7 inspection for application attacks. No single control is sufficient against modern multi-vector campaigns.
Best Practices
# DDoS protection best practices
infrastructure:
- "Use CDN with DDoS protection"
- "Enable rate limiting globally"
- "Design for partial failure"
- "Maintain spare capacity"
- "Implement BCP 38 (source-address validation)"
- "Enable SYN cookies at every public-facing host"
- "Set sane connection limits on all servers"
- "Deploy BGP FlowSpec for fine-grained drops"
monitoring:
- "Monitor traffic patterns"
- "Set up alerts for anomalies"
- "Track pps and rps, not just bandwidth"
- "Test defenses regularly"
- "Have runbooks ready"
- "Predefine steps for common attack types"
response:
- "Have incident response plan"
- "Contact provider early"
- "Document everything"
- "Post-mortem after attack"
- "Practice response through tabletop exercises"
Incident Response Runbook
1. DETECT: Monitor flow telemetry, receive alert
2. ASSESS: Determine attack type and scale (volumetric/protocol/L7)
3. DIVERT: If volumetric, trigger BGP diversion or blackhole
4. MITIGATE: Enable L7 defenses (rate limiting, JS challenge, WAF rules)
5. COMMUNICATE: Update status page, notify stakeholders
6. ANALYZE: Capture attack data for post-mortem
7. RESTORE: Gradually return traffic to normal after attack subsides
8. DOCUMENT: Write post-mortem, update runbooks and rules
Testing and Validation
DDoS Testing Tools
| Tool | Purpose | Risk Level |
|---|---|---|
| hping3 | Protocol-level packet generation | High |
| LOIC/HOIC | Volumetric floods (avoid) | Very high |
| Slowloris | Connection exhaustion testing | Medium |
| OWASP ZAP | L7 application attack testing | Low-Medium |
| MHDDoS | Multi-vector testing | High |
| Cloud-based load testing | Simulated high traffic | Low |
Warning: Only test your own infrastructure with explicit authorization. Testing against third parties is illegal.
Test Checklist
- Verify SYN flood protection (SYN cookies enabled)
- Test UDP flood absorption at CDN edge
- Confirm rate limiting activates during traffic spikes
- Validate JS challenge / CAPTCHA during L7 attacks
- Test BGP blackhole / diversion triggers
- Verify monitoring alerts fire within 30s
- Time the diversion-to-mitigation transition
- Confirm origin servers stay isolated from direct access
The Cost of Not Protecting
| Scenario | Cost |
|---|---|
| 2-hour outage, e-commerce | $200K-600K lost revenue |
| Ransom DDoS payment | $5K-100K+ (no guarantee of stop) |
| SLA breach penalties | $50K-500K |
| Customer churn | 10-20% of affected users |
| Recovery and forensic work | $10K-50K |
| Reputation damage | Long-term, hard to quantify |
The math is clear: even basic CDN-level DDoS protection ($20-200/month) is vastly cheaper than the cost of a single significant outage.
DDoS Protection Decision Guide
Service exposed to public internet?
├── Yes → HTTP/HTTPS service?
│ ├── Yes → CDN with DDoS protection
│ │ ├── Critical revenue service?
│ │ │ ├── Yes → Always-on scrubbing + WAF
│ │ │ └── No → On-demand scrubbing
│ │ └── Add: rate limiting, bot management, origin shielding
│ └── No (game servers, custom protocols) → Dedicated scrubber
├── No → Internal service → Minimal protection needed
└── All services → Monitoring, runbooks, incident response plan
Best Practices Checklist
Infrastructure
- Use CDN with DDoS protection for all public services
- Enable rate limiting globally (edge + application)
- Design for partial failure (graceful degradation)
- Maintain spare capacity (10-20% headroom)
- Implement BCP 38 source-address validation
- Enable SYN cookies on all public hosts
- Set sane connection limits on all servers
- Isolate origin servers from direct public access
Monitoring
- Monitor traffic patterns (bps, pps, rps, SYN/ACK ratio)
- Set up alerts for anomalies (30s detection target)
- Test defenses regularly (quarterly)
- Have runbooks ready (documented steps)
- Track both peak and sustained metrics
Response
- Have incident response plan
- Contact provider early (they have tools you don’t)
- Document everything during incident
- Conduct post-mortem after attack
- Practice response through tabletop exercises
DDoS Protection Resources
| Resource | Type | URL |
|---|---|---|
| OWASP DDoS Prevention Cheat Sheet | Guide | owasp.org |
| Cloudflare DDoS Protection Docs | Documentation | developers.cloudflare.com |
| AWS Shield Documentation | Documentation | aws.amazon.com/shield |
| CISA DDoS Guidance | Government guide | cisa.gov |
| NIST DDoS Mitigation Guidelines | Standards | nist.gov |
Summary
Key takeaways for DDoS protection in 2026:
- Three attack categories — volumetric (bps), protocol (pps), application (rps) — each needs different defenses
- Defense-in-depth — CDN edge, network scrubbing, protocol defenses, WAF, bot detection
- Monitor the right metrics — pps and rps often matter more than bandwidth
- Design for failure — graceful degradation, spare capacity, runbooks
- Choose providers carefully — detection time, mitigation speed, L7 capability, SLA
- Don’t become a botnet member — implement BCP 38, close amplifiers
- Test regularly — tabletop exercises, quarterly attack simulations
Conclusion
DDoS protection requires multiple layers:
- Edge: CDN absorbs volumetric attacks
- Network: Filter at network perimeter
- Application: Rate limiting, WAF, bot detection
- Planning: Response plans and runbooks
The three attack categories require different defenses. A mitigation rule that stops a UDP flood will do nothing against an HTTP flood. Understanding the specific characteristics of each attack type is essential for choosing the right mitigation method.
Invest in DDoS protection services for production applications. Most attacks are short — under 10 minutes — designed as smoke screens or extortion, but some last for days. The cost of not having protection, measured in lost revenue and reputation, is usually far higher than the cost of protection.
Decision Matrix: When to Deploy Each Defense
| Scenario | Recommended Defense | Priority |
|---|---|---|
| Static website | CDN + basic rate limiting | High |
| E-commerce | Full stack: CDN, WAF, scrubbing, bot detection | Critical |
| API service | WAF, rate limiting, schema validation | High |
| Game server | Dedicated scrubber, UDP protection | Critical |
| Internal tool | Firewall, minimal protection | Low |
| Financial service | Enterprise protection, 24/7 SOC | Critical |
Continuous Improvement
DDoS protection is not a one-time deployment. Attack patterns evolve continuously. Review your defenses quarterly:
- Analyze recent attack trends and new amplification vectors
- Update WAF rules (OWASP CRS releases)
- Re-baseline ML detection thresholds
- Test new attack simulations
- Update runbooks and incident response plans
- Review provider SLAs and costs
Frequently Asked Questions
Q: How big is a typical DDoS attack in 2026? A: Most attacks are still under 10 Gbps, but record-setting attacks now exceed 5 Tbps and 100 million packets per second. Application-layer attacks of millions of requests per second are routine.
Q: Can a CDN protect me from DDoS? A: For HTTP traffic, yes — major CDNs absorb most volumetric and many Layer 7 attacks. For non-HTTP services (game servers, custom protocols), you need a dedicated scrubber.
Q: What is the difference between DoS and DDoS? A: DoS comes from a single source; DDoS comes from many sources simultaneously. Modern attacks are essentially always distributed.
Q: How long do DDoS attacks last? A: Most are short — under 10 minutes — designed as smoke screens or extortion. Some last for days, especially during disputes or politically motivated campaigns.
Q: Is DDoS protection expensive? A: Basic always-on scrubbing typically adds 10-30% to bandwidth costs. The cost of not having it — measured in lost revenue and reputation — is usually far higher.
Q: What’s the best DDoS protection strategy? A: Defense-in-depth: CDN at the edge, scrubbing for volumetric attacks, protocol defenses for state exhaustion, and WAF + bot detection for application attacks. No single control is sufficient.
Defense Configuration Reference
# Complete DDoS defense configuration checklist
defense_config:
edge:
cdn: true
always_on_scrubbing: false
on_demand_scrubbing: true
detection_timeout_seconds: 30
network:
bgp_flow_spec: true
syn_cookies: true
connection_rate_limit: 10000
blackhole_community: "666"
application:
waf_ruleset: "owasp_crs_pl2"
rate_limit_rps: 100
bot_detection: true
js_challenge_enabled: true
origin_shielding: true
request_body_limit_kb: 16
monitoring:
bps_threshold: 2.0
pps_threshold: 3.0
syn_ack_ratio_threshold: 3.0
alert_webhook: true
status_page: true
Related Articles
- Zero Trust Architecture
- Web Application Firewall
- Network Security Best Practices
- Cloud Security Posture Management
Comments