Защита VPS от SYN-флуд-атаки: настройка ядра, iptables и ipset

Защита VPS от SYN-флуд-атаки: настройка ядра, iptables и ipset

SYN-флуд — одна из самых распространённых DDoS-атак на уровне TCP. Она способна парализовать работу сайта за минуты. В этой статье разберёмся, как определить атаку, какие настройки помогут её отразить и как усилить защиту VPS от SYN-флуда на уровне ядра, iptables и ipset.

Введение

SYN-флуд — это разновидность DDoS-атаки, при которой злоумышленник засыпает сервер множеством «неоконченных» TCP-соединений. Серверу приходится резервировать ресурсы под каждое из них, из-за чего быстро заполняется очередь запросов и система становится недоступной для легальных клиентов.

Чаще всего атака направлена на порт 80 (HTTP), но может задевать и другие сервисы. Ниже — рабочие способы защиты, которые можно применить на VPS без использования внешнего оборудования.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

Как распознать 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 и аналогичных сервисов, разрешённых в России.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях