Финансовый риск
От 50 000 до 300 000 рублей в час из-за недоступности сайта для клиентов при атаке на прикладном уровне (L7), перерасхода ресурсов CPU/RAM хостинга.
Влияние на KPI
Снижение конверсии заказов. Медленный отклик сайта (TTFB) ухудшает поведенческие факторы и пессимизирует поисковый трафик из Google и Яндекса.
Уровень критичности
Высокий
Кому поручить
DevOps-инженер / Бэкенд-разработчик
TL;DR: SYN Flood эксплуатирует механизм TCP handshake, заполняя таблицу соединений сервера полуоткрытыми сессиями. Защита: SYN cookies, rate limiting, фильтрация на уровне L4.
Время чтения: 12 мин | Уровень: Средний
Что такое SYN Flood
SYN Flood — это атака на транспортный уровень (L4), которая злоупотребляет процессом установки TCP-соединения. Атакующий отправляет тысячи SYN-пакетов с поддельными IP-адресами, но никогда не завершает handshake.
Почему это работает
TCP требует трёхэтапного рукопожатия (three-way handshake):
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ │
│ ──── SYN ──────────────▶ │ 1. Клиент инициирует
│ │
│ ◀──── SYN-ACK ───────── │ 2. Сервер выделяет ресурсы
│ │ и ждёт ACK
│ ──── ACK ──────────────▶ │ 3. Соединение установлено
│ │
Проблема: на шаге 2 сервер выделяет память под соединение и начинает ждать ACK. Если ACK не приходит (а он не придёт, потому что IP поддельный), сервер держит это «полуоткрытое» соединение 75 секунд по умолчанию.
Математика атаки
Вывод: даже атака на 1 Мбит/с может положить незащищённый сервер.
Анатомия пакета
┌────────────────────────────────────────────────────────┐
│ IP Header (20 bytes) │
├────────────────────────────────────────────────────────┤
│ Source IP: 192.168.x.x (spoofed) │
│ Dest IP: victim_server │
│ Protocol: TCP (6) │
├────────────────────────────────────────────────────────┤
│ TCP Header (20 bytes) │
├────────────────────────────────────────────────────────┤
│ Source Port: random (1024-65535) │
│ Dest Port: 80/443/etc │
│ Sequence: random │
│ Flags: SYN=1, ACK=0, FIN=0, RST=0 │
│ Window: 65535 │
└────────────────────────────────────────────────────────┘
Признаки SYN Flood в логах
# Проверка полуоткрытых соединений
netstat -an | grep SYN_RECV | wc -l
# Если > 100 — подозрительно
# Если > 1000 — точно атака
# tcpdump: ищем SYN без ACK
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0' -c 100
# Много пакетов с разных IP на один порт = атака
Уровни защиты
Уровень 1: Настройка ядра Linux
# /etc/sysctl.conf
# Включить SYN cookies (ОБЯЗАТЕЛЬНО)
net.ipv4.tcp_syncookies = 1
# Уменьшить таймаут полуоткрытых соединений
net.ipv4.tcp_synack_retries = 2
# Увеличить backlog queue
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# Включить TCP timestamps (нужно для SYN cookies)
net.ipv4.tcp_timestamps = 1
# Применить
sysctl -p
SYN Cookies — как это работает:
┌─────────────────────────────────────────────────────────┐
│ Без SYN Cookies │
├─────────────────────────────────────────────────────────┤
│ SYN → Сервер создаёт запись в таблице → ждёт ACK │
│ Память расходуется на каждый SYN │
├─────────────────────────────────────────────────────────┤
│ С SYN Cookies │
├─────────────────────────────────────────────────────────┤
│ SYN → Сервер вычисляет криптографический cookie │
│ → Отправляет SYN-ACK с cookie в sequence number │
│ → НЕ сохраняет состояние │
│ ACK → Сервер проверяет cookie → создаёт соединение │
│ Память расходуется только на валидные соединения! │
└─────────────────────────────────────────────────────────┘
Уровень 2: iptables / nftables
# Rate limit новых соединений
iptables -A INPUT -p tcp --syn -m limit --limit 100/s --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
# Защита от спуфинга (только если знаете свои сети)
iptables -A INPUT -s 10.0.0.0/8 -j DROP # RFC 1918
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
# SYNPROXY (ядро 3.12+)
iptables -t raw -A PREROUTING -p tcp --dport 80 --syn -j CT --notrack
iptables -A INPUT -p tcp --dport 80 -m state --state INVALID,UNTRACKED \
-j SYNPROXY --sack-perm --timestamp --wscale 7 --mss 1460
iptables -A INPUT -p tcp --dport 80 -m state --state INVALID -j DROP
Уровень 3: nginx / HAProxy
nginx.conf:
http {
# Лимит соединений с одного IP
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
limit_conn conn_limit 100;
# Лимит запросов
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
server {
limit_req zone=req_limit burst=20 nodelay;
# Таймауты для защиты от Slowloris
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 15s;
send_timeout 10s;
}
}
Уровень 4: Облачная защита
Когда локальной защиты недостаточно:
Схема многоуровневой защиты
┌──────────────────┐
│ Атакующий │
│ (Ботнет) │
└────────┬─────────┘
│
│ SYN Flood
│ 10 Гбит/с
▼
┌─────────────────────────────────────────────────────────────┐
│ УРОВЕНЬ 1: Облачный провайдер (Cloudflare/AWS Shield) │
│ ├── Anycast: распределение по 300+ точкам │
│ ├── Автоматическое распознавание паттернов │
│ └── Фильтрация 95% мусора │
└────────────────────────────┬────────────────────────────────┘
│ 500 Мбит/с
│ (осталось 5%)
▼
┌─────────────────────────────────────────────────────────────┐
│ УРОВЕНЬ 2: Edge / Load Balancer │
│ ├── SYNPROXY на HAProxy │
│ ├── Rate limiting по IP │
│ └── Географическая фильтрация │
└────────────────────────────┬────────────────────────────────┘
│ 50 Мбит/с
│ (легитимный + остаток атаки)
▼
┌─────────────────────────────────────────────────────────────┐
│ УРОВЕНЬ 3: Сервер приложений │
│ ├── SYN cookies (sysctl) │
│ ├── iptables rate limiting │
│ └── nginx limit_conn │
└────────────────────────────┬────────────────────────────────┘
│
│ Чистый трафик
▼
┌─────────────────────────────────────────────────────────────┐
│ Приложение работает нормально │
└─────────────────────────────────────────────────────────────┘
Мониторинг и алерты
Prometheus + Alertmanager
# prometheus/rules/ddos.yml
groups:
- name: ddos_alerts
rules:
- alert: HighSynRecvConnections
expr: node_netstat_Tcp_CurrEstab > 10000
for: 1m
labels:
severity: warning
annotations:
summary: "Возможная SYN Flood атака"
description: "Более 10000 соединений в состоянии ожидания"
- alert: SynFloodAttack
expr: rate(node_netstat_Tcp_InSegs[1m]) > 100000
for: 30s
labels:
severity: critical
annotations:
summary: "SYN Flood атака в процессе"
description: "Входящий трафик TCP превышает 100k пакетов/сек"
Grafana Dashboard
Ключевые метрики для дашборда:
node_netstat_Tcp_CurrEstab— текущие соединенияnode_netstat_TcpExt_SyncookiesSent— отправленные SYN cookiesnode_netstat_TcpExt_SyncookiesRecv— полученные ответы на cookiesnode_netstat_TcpExt_SyncookiesFailed— неудачные проверки (атака)
Чек-лист защиты от SYN Flood
Что дальше?
Если вы защитились от SYN Flood, следующий шаг — защита от L7-атак:
- 📖 HTTP Flood: как отличить ботов от пользователей
- 📖 Slowloris: атака на соединения
- 🔍 TCP handshake в глоссарии
- 🔍 SYN cookies в глоссарии
Нужна помощь с настройкой? Бесплатный аудит защиты →
- Последнее обновление: февраль 2026*
Практическая экспертиза AntiDDoS.su
Практическая экспертиза AntiDDoS.su Этот материал подготовлен инженерами безопасности AntiDDoS.su. Мы специализируемся на отражении распределенных атак любой сложности, аудите безопасности инфраструктуры и настройке отказоустойчивых систем. 🛡️ Важная информация: Если ваш ресурс находится под атакой или нуждается в профессиональном аудите защиты — обратитесь к экспертам AntiDDoS.su для оперативной помощи.
Скопируйте эти вопросы и отправьте вашему техническому директору (CTO) или руководителю разработки:
- Настроена ли WAF-фильтрация для отсечения ботов с помощью JS-челленджей без показа капчи реальным пользователям?
- Защищен ли веб-сервер от атак типа Slowloris путем оптимизации HTTP Keep-Alive таймаутов?
- Проверено ли наше приложение на защиту от атак типа HTTP Request Smuggling и отравления кэша?
Словарь по теме
Cloudflare Pro
Тарифный план Cloudflare для малого и среднего бизнеса. Включает базовый WAF, защиту от DDoS уровня 3-4, оптимизацию изображений и мобильную оптимизацию.
Load Balancer
Распределяет входящие запросы между несколькими серверами. Обеспечивает отказоустойчивость и масштабирование.
Rate Limiting
Ограничение количества запросов с одного IP-адреса за определённый период времени. Первая линия защиты от ботов, брутфорса и простых DDoS-атак.
Alertmanager
Компонент Prometheus для обработки алертов — группировка, дедупликация, маршрутизация уведомлений.
Prometheus
Система мониторинга и сбора метрик. Собирает данные с серверов, хранит временные ряды, поддерживает алерты.
Cloudflare
Популярный сервис CDN и защиты от DDoS. Бесплатный план включает базовую защиту, SSL, и ускорение загрузки через глобальную сеть из 300+ дата-центров.
SYN Flood
Атака на сетевом уровне (L4), при которой атакующий отправляет множество SYN-пакетов, не завершая TCP-рукопожатие. Исчерпывает таблицу соединений сервера.
L7 атака
Атака на прикладном уровне (HTTP). Атакующий отправляет валидные HTTP-запросы, которые выглядят как обычные пользователи, но нагружают тяжёлые endpoint'ы.