Hvad er DDoS?

Definition

DDoS (Distributed Denial of Service) er en type cyberangreb, hvor angriberen forsøger at gøre en online service utilgængelig ved at overbelaste den med trafik fra flere kilder.

Sådan fungerer DDoS angreb

DDoS Angrebsflow
1. Angriber inficerer tusindvis af enheder (botnet)
2. Koordineret angreb startes fra alle inficerede enheder
3. Målserveren overbelastes med requests
4. Legitime brugere kan ikke få adgang til servicen
5. Servicen bliver utilgængelig (denial of service)

Formål med DDoS angreb

  • Ødelægge forretningsdrift og omsætning
  • Distraktionsangreb (mens andre angreb udføres)
  • Afpresning og løsepenge
  • Konkurrencefordel
  • Politisk aktivisme
  • Demonstration af magt

Typer af DDoS Angreb

Volume-baserede angreb

UDP Flood

Sender store mængder UDP-pakker til tilfældige porte på målserveren, hvilket forbruger båndbredde og serverressourcer.

ICMP Flood

Overbelaster målet med ICMP Echo Request (ping) pakker, der forbruger både indgående og udgående båndbredde.

Protocol angreb

SYN Flood

Udnytter TCP handshake processen ved at sende mange SYN requests uden at fuldfører forbindelsen, hvilket udtømmer serverens connection table.

SYN Flood Process
# Normal TCP Handshake:
Client -> Server: SYN
Server -> Client: SYN-ACK
Client -> Server: ACK (Connection established)

# SYN Flood Attack:
Attacker -> Server: SYN (fake source IP)
Server -> Fake IP: SYN-ACK (never reaches destination)
Server waits for ACK... (connection table fills up)

Application Layer angreb

HTTP Flood

Sender tilsyneladende legitime HTTP requests til webserveren for at overbelaste den med processeringskrav.

Slowloris

Holder mange forbindelser åbne til målserveren ved at sende partielle HTTP requests meget langsomt.

Opdagelse af DDoS Angreb

Advarsselssignaler

  • Pludselig stigning i netværkstrafik
  • Langsom eller utilgængelig hjemmeside
  • Høj CPU eller RAM forbrug
  • Uventede fejlmeddelelser
  • Timeout fejl fra brugere

Overvågningsværktøjer

Linux Overvågningskommandoer
# Kontroller netværkstrafik
netstat -i

# Se aktive forbindelser
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

# Overvåg båndbreddeforbrug
iftop -i eth0

# Se systembelastning
htop

# Kontroller log filer
tail -f /var/log/nginx/access.log | grep "POST\|GET"

Automatisk Detection

Rate Limiting

Implementer automatisk detection baseret på anmodningsrate pr. IP-adresse over en bestemt tidsperiode.

Forebyggelse af DDoS Angreb

Netværksniveau beskyttelse

IPtables Firewall Regler
# Begræns SYN flood angreb
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# Begræns ICMP ping
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

# Bloker common attack patterns
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

Fail2Ban konfiguration

/etc/fail2ban/jail.local
[http-get-dos]
enabled = true
port = http,https
filter = http-get-dos
logpath = /var/log/nginx/access.log
maxretry = 300
findtime = 300
bantime = 600
action = iptables[name=HTTP, port=http, protocol=tcp]

Web Server Optimering

Nginx DDoS Beskyttelse
# Rate limiting
http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    limit_conn_zone $binary_remote_addr zone=addr:10m;
}

server {
    # Anvend rate limiting
    limit_req zone=one burst=5;
    limit_conn addr 10;
    
    # Timeout indstillinger
    client_body_timeout 5s;
    client_header_timeout 5s;
    
    # Buffer begrænsninger
    client_body_buffer_size 200K;
    client_header_buffer_size 2k;
    large_client_header_buffers 3 1k;
}

Afbødningsteknikker

Load Balancing

Fordel trafikken

Brug load balancers til at fordele indkommende trafik på tværs af flere servere, så ingen enkelt server bliver overbelastet.

HAProxy Load Balancer Konfiguration
global
    daemon
    maxconn 4096

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend web_frontend
    bind *:80
    bind *:443 ssl crt /path/to/certificate.pem
    redirect scheme https if !{ ssl_fc }
    default_backend web_servers

backend web_servers
    balance roundrobin
    option httpchk GET /health
    server web1 192.168.1.10:80 check
    server web2 192.168.1.11:80 check
    server web3 192.168.1.12:80 check

Caching Strategier

Redis Cache Implementering
# Redis konfiguration for caching
# /etc/redis/redis.conf

maxmemory 2gb
maxmemory-policy allkeys-lru
save 900 1
save 300 10
save 60 10000

# Nginx caching
location / {
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;
    proxy_cache my_cache;
    proxy_pass http://backend;
}

Geo-blocking

Nginx GeoIP Blokering
http {
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    
    map $geoip_country_code $allowed_country {
        default yes;
        CN no;
        RU no;
        KP no;
    }
}

server {
    if ($allowed_country = no) {
        return 403;
    }
}

Cloudflare DDoS Beskyttelse

Setup og Konfiguration

1

Opret Cloudflare Konto

Registrer dig på cloudflare.com og tilføj dit domæne

2

Skift Nameservere

Opdater dine DNS nameservere til Cloudflares nameservere

3

Aktivér Proxy (Orange Cloud)

Sørg for at din A/AAAA/CNAME records har orange cloud aktiveret

Sikkerhedsindstillinger

Cloudflare Firewall Regler
# Page Rules for DDoS protection
Cache Level: Cache Everything
Browser Cache TTL: 1 month
Security Level: High
Challenge Passage: 30 minutes

# Firewall Rules
(ip.geoip.country in {"CN" "RU" "KP"}) - Block
(cf.threat_score gt 10) - Challenge
(http.request.uri.path contains "/admin") - Challenge

Rate Limiting

Cloudflare Rate Limiting

Konfigurer rate limiting regler for at begrænse antallet af anmodninger pr. IP-adresse pr. minut.

Hardware Løsninger

Dedikerede DDoS Beskyttelses Appliances

  • Arbor Networks: Peakflow SP/TMS løsninger
  • Radware: DefensePro serien
  • A10 Networks: Thunder TPS serien
  • Fortinet: FortiDDoS appliances
  • F5 Networks: BIG-IP ASM/AFM

Scrubbing Centers

Hvordan det fungerer

Trafik rutes gennem scrubbing centers, hvor ondsindet trafik filtreres fra, og kun legitim trafik sendes videre til destinationen.

CDN og Anycast

CDN Fordele
# Anycast routing fordeler:
1. Geografisk distribueret - angreb påvirker kun nærmeste pop
2. Massive båndbreddekapacitet
3. Automatisk failover
4. Caching reducerer backend belastning
5. DDoS absorptionskapacitet

Overvågning og Alarmer

Grafana Dashboard Setup

Prometheus Metrics til DDoS Detection
# HTTP request rate
rate(nginx_http_requests_total[5m])

# Connection count
nginx_connections_active

# Error rate
rate(nginx_http_requests_total{status=~"4xx|5xx"}[5m])

# Bandwidth usage
rate(node_network_receive_bytes_total[5m]) * 8

Alarm Konfiguration

AlertManager Rules
# High traffic alert
- alert: HighTrafficRate
  expr: rate(nginx_http_requests_total[5m]) > 1000
  for: 2m
  labels:
    severity: warning
  annotations:
    summary: "High traffic detected"
    description: "{{ $value }} requests per second"

# DDoS Attack Detection
- alert: PossibleDDoS
  expr: rate(nginx_http_requests_total[1m]) > 5000
  for: 30s
  labels:
    severity: critical
  annotations:
    summary: "Possible DDoS attack detected"

Log Analysis

ELK Stack Log Processing
# Logstash configuration for nginx logs
filter {
  grok {
    match => { 
      "message" => "%{NGINXACCESS}" 
    }
  }
  
  if [response] >= 400 {
    mutate {
      add_tag => [ "error" ]
    }
  }
  
  # Detect potential DDoS patterns
  if [request] =~ /\/wp-admin|\/admin|\.php$/ {
    mutate {
      add_tag => [ "suspicious" ]
    }
  }
}

Incident Response Plan

Øjeblikkelig Respons

1

Bekræft Angrebet

Kontroller om det er et reelt DDoS angreb eller legitim trafikstigning

2

Aktiver Nødprocedurer

Implementer automatiske DDoS countermeasures og kontakt dit team

3

Kontakt ISP/CDN

Informer din internetudbyder eller CDN-leverandør om angrebet

Automatiske Scripts

DDoS Response Script
#!/bin/bash
# DDoS Emergency Response Script

# Check current connections
CONNECTIONS=$(netstat -ntu | wc -l)
THRESHOLD=1000

if [ $CONNECTIONS -gt $THRESHOLD ]; then
    echo "DDoS Attack Detected - $CONNECTIONS connections"
    
    # Block top attacking IPs
    netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10 | while read count ip; do
        if [ $count -gt 50 ]; then
            iptables -A INPUT -s $ip -j DROP
            echo "Blocked IP: $ip ($count connections)"
        fi
    done
    
    # Enable SYN cookies
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies
    
    # Reduce timeout values
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
    echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
    
    # Send alert
    curl -X POST "https://hooks.slack.com/webhook" \
         -d '{"text":"DDoS attack detected on '$(hostname)'"}'
fi

Post-Incident Analyse

  • Dokumenter angrebet (tidspunkt, varighed, intensitet)
  • Analysér angrebsvektorer og metoder
  • Evaluér responsens effektivitet
  • Opdater sikkerhedsforanstaltninger
  • Gennemgå og forbedre response plan

Vigtigt at Huske

DDoS angreb er ofte distraktionsangreb. Kontroller for andre sikkerhedsbrud mens I håndterer DDoS angrebet.

Best Practices Sammendrag

Proaktiv Beskyttelse

  • Implementer rate limiting på alle offentlige endpoints
  • Brug CDN/proxy tjenester som Cloudflare
  • Konfigurer firewall regler og IPS systemer
  • Hold software opdateret og patches installeret

Overvågning og Detection

  • Implementer real-time monitoring af netværkstrafik
  • Sæt up automatiske alerts for unormal aktivitet
  • Analysér logs regelmæssigt for patterns
  • Test dit DDoS response plan regelmæssigt

Incident Response

  • Hav en klar plan for DDoS response
  • Tren dit team i procedures
  • Hold kontaktoplysninger til ISP/CDN leverandører opdateret
  • Dokumenter alle incidents for fremtidig reference