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 или приложения.