Czym jest atak DNS flood?
DNS flood to rodzaj rozproszonego ataku odmowy usługi (DDoS), który przeciąża infrastrukturę DNS przez wysyłanie ogromnej liczby zapytań DNS do serwerów DNS, takich jak autorytatywne serwery nazw lub resolvery rekursywne. Celem jest wyczerpanie zasobów serwera, wyłączenie usługi DNS i uniemożliwienie legalnym użytkownikom rozwiązywania nazw domen.
Skutki ataków DNS flood
Gdy serwery DNS zostaną przeciążone:
Normal operation:
User → DNS query → DNS server → Response → Website loads
During DNS flood:
User → DNS query → DNS server (overwhelmed, no response)
→ Website doesn't load (even though web server is fine)
Skutki:
- Witryny stają się niedostępne (nawet gdy ich serwery WWW działają)
- Dostarczanie poczty kończy się niepowodzeniem (wyszukiwanie rekordów MX nie działa)
- Interfejsy API i usługi zależne od DNS stają się niedostępne
- Szkody uboczne dotykają współdzielonej infrastruktury DNS
Typy ataków DNS flood
Bezpośredni zalew zapytań DNS
Atakujący wysyła prawidłowe zapytania DNS na dużą skalę:
Botnet → Millions of DNS queries → Target DNS server
Query examples:
example.com A
www.example.com A
random1.example.com A
random2.example.com A
...millions more...
Cechy:
- Prawidłowe zapytania DNS (trudne do filtrowania)
- Często dotyczą losowych subdomen (omijają cache)
- Wykorzystują botnety do rozproszonego ataku
Atak amplifikacyjny DNS
Wykorzystuje resolvery rekursywne do wzmocnienia ruchu ataku:
1. Attacker sends small query to open resolver
2. Spoofs source IP as victim's IP
3. Resolver sends large response to victim
4. Attacker amplifies bandwidth 28-54x
Przykład:
Attacker sends: 60-byte query for TXT record (ANY query)
Resolver sends: 3000-byte response to victim
Amplification: 50x
Zalew NXDOMAIN
Zapytania dotyczą nieistniejących domen, aby ominąć cache:
Query: random-12345.example.com (doesn't exist)
Server must check authoritative zone every time
Cannot be cached (NXDOMAIN responses often have low TTL)
Consumes more server resources than cached responses
Atak na domenę widmo
Zapytania dotyczą prawidłowych domen, które nie odpowiadają:
Attacker: Queries resolver for slow/non-responsive domains
Resolver: Waits for timeout, consumes resources
Result: Resolver resource exhaustion
Atak losowych subdomen
Zapytania dotyczą losowych subdomen, aby uniknąć trafień w cache:
Query: abc123random.example.com
Query: xyz789random.example.com
Query: def456random.example.com
Each is unique → cache miss → authoritative query
Overwhelms authoritative nameservers
Wektory i techniki ataku
Ataki z użyciem botnetu
Compromised devices:
- IoT devices (cameras, routers)
- Infected computers
- Hacked servers
Distributed attack:
10,000 bots × 100 queries/sec = 1 million queries/sec
Ataki odbiciowe
Attacker spoofs victim's IP
Sends queries to many open resolvers
Resolvers respond to victim with large answers
Victim receives amplified traffic
Zalewy w warstwie aplikacji
Legitimate-looking queries
Difficult to distinguish from real traffic
May target specific resource-intensive query types
Wykrywanie ataków DNS flood
Nietypowa liczba zapytań
Normal baseline: 10,000 queries/second
During attack: 500,000+ queries/second
Monitoruj:
# Check query rate (BIND)
rndc status | grep "queries resulted"
# Analyze query logs
tail -f /var/log/named/queries.log | wc -l
Wysoki odsetek NXDOMAIN
Normal: 5-10% NXDOMAIN responses
Attack: 50-90% NXDOMAIN responses (random subdomain flood)
Rozkład źródłowych adresów IP
Legitimate: Diverse source IPs, geographic spread
Attack: Concentrated sources, unusual geographic patterns
Wzorce zapytań
Legitimate: Repetitive queries (common domains cached)
Attack: Unique queries (random strings, no cache benefit)
Pogorszenie czasu odpowiedzi
Normal: < 50ms response time
Under attack: > 1000ms or timeouts
Ograniczanie ataków DNS flood
Obrona na poziomie infrastruktury
#### DNS Anycast
Rozkładaj ruch między wiele lokalizacji geograficznych:
Single IP address (e.g., 1.2.3.4) announced from multiple locations
Attack traffic automatically routed to nearest server
Load distributed across global network
Harder to overwhelm all locations simultaneously
Korzyści:
- Automatyczne rozkładanie obciążenia
- Odporność geograficzna
- Absorpcja ruchu ataku
#### Rozbudowana infrastruktura DNS
Capacity: 10x normal peak traffic
Reserves: Handle sudden spikes
Auto-scaling: Add capacity during attacks
#### Ograniczanie tempa odpowiedzi
# BIND rate limiting (response-rate limiting)
rate-limit {
responses-per-second 10;
window 5;
slip 2;
};
Ogranicza liczbę odpowiedzi z tego samego źródła, aby zapobiegać atakom amplifikacyjnym.
#### Filtrowanie zapytań
# Block ANY queries (common in amplification)
# Block excessively long queries
# Block known-malicious patterns
Przykład BIND:
# Block ANY queries
match-query {
type ANY;
action drop;
};
Obrona na poziomie dostawcy DNS
#### DNSSEC
DNSSEC nie zapobiega bezpośrednio zalewom, ale:
- Zapobiega zatruciu cache podczas ataków
- Zachowuje integralność w warunkach ataku
#### Konfiguracja ukrytego mastera
Master server (hidden): 10.0.0.1 (not publicly known)
Slave servers (public): ns1.example.com, ns2.example.com
Attackers target slaves
Master remains operational
Can quickly update slaves if needed
#### Zapora DNS / IDS
Analyze queries in real-time
Block suspicious patterns
Whitelist known-good clients
Blacklist attack sources
Ochrona na poziomie aplikacji
#### Ograniczanie liczby odpowiedzi (RRL)
Limit identical responses to same client
Prevents amplification attacks
Slip mode: Occasionally allow queries through (to not break legitimate recursive resolvers)
Konfiguracja BIND:
options {
rate-limit {
responses-per-second 5;
referrals-per-second 5;
nodata-per-second 5;
nxdomains-per-second 5;
errors-per-second 5;
window 5;
};
};
#### Optymalizacja cache
Increase cache size to absorb repeated queries
Longer TTLs where appropriate (trade-off with agility)
Prefetch popular records
#### Filtrowanie zapytań
# Drop queries for non-existent zones
# Block queries from known-bad sources
# Rate-limit per-source queries
Obrona na poziomie sieci
#### Odcięcie trasą BGP (blackholing)
Route attack traffic to null0
Sacrifice availability to preserve infrastructure
Last resort when attack overwhelms capacity
#### Filtrowanie u operatora upstream
Coordinate with ISP to filter attack traffic
Source IP validation (prevent spoofing)
Traffic scrubbing centers
#### Usługi ochrony przed DDoS
Cloudflare, Akamai, AWS Shield
Absorb attack traffic before reaching your servers
Global capacity to withstand large attacks
Dobre praktyki odporności DNS
Korzystaj z wielu dostawców DNS
Primary provider: Cloudflare
Secondary provider: AWS Route 53
If one is attacked/down, other continues serving
Different infrastructure reduces single point of failure
Wdróż DNSSEC
Protects against DNS spoofing/cache poisoning
Maintains integrity during attacks
Build trust even under attack conditions
Monitoruj wydajność DNS
Real-time query rates
Response times
NXDOMAIN percentages
Geographic distribution of queries
Error rates
Narzędzia: Grafana + Prometheus, Datadog, AWS CloudWatch
Regularnie testuj przepustowość
Load testing: Can infrastructure handle 10x traffic?
Failover testing: Do secondary providers activate correctly?
Attack simulation: Test mitigation strategies
Wyłącz rekursję na serwerach autorytatywnych
# BIND
recursion no;
Autorytatywne serwery nazw nie powinny działać jako resolvery rekursywne.
Ogranicz transfery stref
# BIND
allow-transfer { 10.0.0.2; 10.0.0.3; }; # Only specific slaves
Uniemożliwia atakującym zrzut całej strefy.
Aktualizuj oprogramowanie
Regularly update DNS server software
Patch known vulnerabilities
Subscribe to security advisories
Reagowanie na aktywny atak DNS flood
Działania natychmiastowe
1. Potwierdź, że trwa atak
# Check query rate
rndc status
# Check load
top
2. Włącz ograniczanie tempa
# BIND: Enable RRL if not already active
rndc addzone rate-limit
3. Skontaktuj się z dostawcą ochrony DDoS
- Aktywuj usługi oczyszczania
- Przekieruj ruch przez sieć ograniczającą atak
4. Przeanalizuj wzorce ataku
# Top query types
grep "query" /var/log/named/queries.log | awk '{print $6}' | sort | uniq -c | sort -rn | head -20
# Top queried domains
grep "query" /var/log/named/queries.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
5. Zablokuj oczywiste źródła ataku
# Identify top source IPs
grep "query" /var/log/named/queries.log | awk '{print $5}' | cut -d# -f1 | sort | uniq -c | sort -rn | head -50
# Block at firewall
iptables -A INPUT -s ATTACKER_IP -j DROP
Działania średnioterminowe
1. Skaluj infrastrukturę
- Dodaj przepustowość serwerów nazw
- Rozłóż ruch przez Anycast, jeśli nie jest jeszcze używany
2. Wdróż dodatkowe filtrowanie
- Blokuj wzorce zapytań charakterystyczne dla ataku
- Dodaj znane, zaufane źródła do białej listy
3. Skoordynuj działania z dostawcami
- Dostawca ISP/hostingu
- Dostawca DNS
- Usługa ochrony przed DDoS
4. Udokumentuj atak
- Przechwyty pakietów
- Logi
- Wykresy ruchu
- Do analizy po incydencie i celów prawnych
Analiza po ataku
1. Oceń skuteczność zastosowanych ograniczeń
2. Zidentyfikuj słabe punkty infrastruktury
3. Zaktualizuj procedury reagowania na incydenty
4. Rozważ długoterminowe usprawnienia (DNS u wielu dostawców, większa przepustowość)
Kwestie prawne i zgłaszanie
Zgłaszanie organom ścigania
- FBI IC3 (USA): ic3.gov
- Lokalne jednostki do walki z cyberprzestępczością
- Działy nadużyć operatorów ISP
Gromadzenie dowodów
# Packet captures
tcpdump -i eth0 -w dns-attack.pcap port 53
# Full query logs
tar -czf attack-logs-$(date +%Y%m%d).tar.gz /var/log/named/
# Traffic graphs/screenshots
# System resource usage
Ataki DNS flood stanowią poważne zagrożenie dla usług internetowych, lecz odpowiednia infrastruktura, monitoring i strategie ograniczania mogą zminimalizować ich skutki.