SYN-флуд — одна из самых распространённых DDoS-атак на уровне TCP. Она способна парализовать работу сайта за минуты. В этой статье разберёмся, как определить атаку, какие настройки помогут её отразить и как усилить защиту VPS от SYN-флуда на уровне ядра, iptables и ipset.
Введение
SYN-флуд — это разновидность DDoS-атаки, при которой злоумышленник засыпает сервер множеством «неоконченных» TCP-соединений. Серверу приходится резервировать ресурсы под каждое из них, из-за чего быстро заполняется очередь запросов и система становится недоступной для легальных клиентов.
Чаще всего атака направлена на порт 80 (HTTP), но может задевать и другие сервисы. Ниже — рабочие способы защиты, которые можно применить на VPS без использования внешнего оборудования.
Как распознать SYN-флуд
Первый шаг — убедиться, что проблема именно в SYN-флуде. Проверим количество соединений в состоянии SYN_RECV:
netstat -n | grep SYN_RECV | wc -lЕсли число соединений превышает 100–200, скорее всего, идёт атака. Для более точной диагностики используйте:
ss -n state syn-recv | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | headЕсли список возглавляют IP-адреса с десятками соединений — это серьёзный повод принять меры.
Настройка ядра через sysctl
Оптимизируем сетевые параметры, чтобы быстрее обрабатывать и сбрасывать «подозрительные» соединения. Добавьте в /etc/sysctl.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_max_syn_backlog = 4096
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 5000
net.ipv4.ip_local_port_range = 1024 65535
net.netfilter.nf_conntrack_max = 262144
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 10Примените изменения:
sysctl -pЭти параметры позволяют сократить задержки при установке соединений, активировать защиту через SYN cookies и быстрее очищать очередь.
Защита iptables с ограничением соединений
Создаём правило, которое ограничит число одновременных подключений с одного IP-адреса:
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 32 -j DROPТакой лимит особенно эффективен, если к сайту обычно обращаются пользователи с небольшим числом одновременных соединений.
Фильтрация SYN по частоте через iptables
Ограничим скорость новых соединений:
iptables -N syn_flood
iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 10/second --limit-burst 30 -j RETURN
iptables -A syn_flood -j DROPЭто правило отбрасывает избыточные SYN-пакеты при высоком потоке.
4. Использование ipset для быстрой фильтрации IP
Устанавливаем ipset:
yum install -y ipsetСоздаём список атакующих IP:
ipset create blacklist hash:ipДобавим правило в iptables:
iptables -I INPUT -m set --match-set blacklist src -j DROPСоздадим скрипт, который будет искать подозрительные IP-адреса:
#!/bin/bash
for ip in $(ss -n state syn-recv | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | awk '$1 > 20 {print $2}'); do
  ipset add blacklist $ip
doneСохраняем ipset:
ipset save > /etc/sysconfig/ipsetВспомогательные меры
Даже при хорошей настройке ядра и файрвола важно дополнительно усилить защиту за счёт сервисов и решений на уровне приложений и инфраструктуры.
Эти меры помогают справляться с атаками, которые всё же проходят через базовые фильтры, и повышают общую устойчивость VPS к DDoS-нагрузке:
- Убедитесь, что на сервере работает fail2ban и настроены фильтры на web/dns/ssh-порты.
 - Используйте nginx как reverse proxy — он эффективнее справляется с SYN-флудом.
 - На уровне приложений можно использовать капчи или ограничение сессий на пользователя.
 - Если атака превышает 100 Мбит/с — рассмотрите подключение к провайдеру с DDoS-защитой.
 
Заключение
SYN-флуд — простая, но опасная атака, которая может парализовать любой VPS, не готовый к нагрузке. Однако с помощью правильной настройки ядра, iptables, ipset и мониторинга трафика можно эффективно защитить систему от перегрузки. Если атаки повторяются регулярно, стоит рассмотреть переход на тариф с аппаратной DDoS-защитой или использовать облачные фильтры от Cloudflare, DDoS-Guard и аналогичных сервисов, разрешённых в России.
Читайте в блоге:
- Как защитить VPS от DDoS-атак с помощью Cloudflare и iptables
 - Как защитить сайт на Bitrix от DDoS-атак и кражи данных
 - Безопасность WordPress на VPS: как защитить сайт от DDoS и хакеров
 - Отличия DoS от DDoS-атак
 

