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-атак