Gymterview
middle

Какие существуют методы защиты от DDoS-атак?

DDoS (Distributed Denial of Service) — распределённая атака на отказ в обслуживании, при которой множество источников одновременно генерируют трафик к целевому серверу, делая его недоступным для легитимных пользователей. Защита строится на нескольких уровнях.

1. Защита на уровне ядра Linux (SYN Cookies)

SYN flood — атака, при которой злоумышленник отправляет SYN-пакеты, не завершая TCP handshake, исчерпывая ресурсы сервера.

Пример
# Включить SYN cookies
sudo sysctl -w net.ipv4.tcp_syncookies=1

# Увеличить очередь полуоткрытых соединений
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=65536

# Уменьшить количество повторных отправок SYN-ACK
sudo sysctl -w net.ipv4.tcp_synack_retries=2

2. Rate Limiting на уровне iptables

Пример
# Ограничение новых соединений
sudo iptables -A INPUT -p tcp --dport 443 -m connlimit --connlimit-above 100 -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -m limit --limit 25/sec --limit-burst 50 -j ACCEPT

3. Rate Limiting в Nginx

Конфигурация rate limiting в Nginx
# Определение зоны ограничения (10 запросов в секунду на IP)
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

server {
    location /api/ {
        # Ограничение запросов с буфером 20
        limit_req zone=api_limit burst=20 nodelay;

        # Ограничение одновременных соединений
        limit_conn conn_limit 10;

        # Код ответа при превышении лимита
        limit_req_status 429;

        proxy_pass http://backend;
    }
}

4. Rate Limiting в Spring Boot

Пример
// Использование bucket4j для rate limiting
@Bean
public FilterRegistrationBean<RateLimitFilter> rateLimitFilter() {
    Bandwidth limit = Bandwidth.classic(100,
        Refill.greedy(100, Duration.ofMinutes(1)));
    Bucket bucket = Bucket.builder().addLimit(limit).build();
    // ... настройка фильтра
}

5. Внешние сервисы защиты от DDoS

  • Cloudflare / AWS Shield / Akamai — фильтрация трафика на уровне CDN
  • Анти-DDoS от провайдера — фильтрация на уровне канала связи
  • WAF (Web Application Firewall) — фильтрация на уровне приложения

В production обычно используется многоуровневая защита: внешний Anti-DDoS-сервис + WAF + rate limiting на Nginx/API Gateway + защита на уровне приложения.

На собеседовании: интервьюер хочет услышать про многоуровневую защиту, а не только про один метод. Частая ошибка — упомянуть только Cloudflare и не знать, как настроить rate limiting на уровне Nginx или приложения.