DDoS-защита VPS — это то, о чём вспоминают, когда сайт уже лежит, а график трафика похож на вертикальную стену. Между тем защита сервера от атак — вещь многослойная: часть работы берёт на себя сетевая инфраструктура хостера (фильтрация L3/L4), а часть всегда остаётся на стороне администратора (уровень приложения, L7). В этой статье разберём, как классифицируются DDoS-атаки по уровням модели OSI, что именно отсекает фильтрация L3/L4, почему она не спасает от HTTP-флуда — и что настроить на самом VPS, чтобы пережить атаку с минимальными потерями.
Что такое DDoS-атака и почему «D» имеет значение
DoS (Denial of Service) — атака, цель которой не взломать сервер, а сделать его недоступным: исчерпать канал, память, процессор или лимит соединений. DDoS — распределённая версия той же атаки: трафик идёт не с одной машины, а с тысяч заражённых устройств (ботнета) — от взломанных серверов до IP-камер и роутеров.
Распределённость — главная проблема для защиты. Заблокировать один IP тривиально. Когда же запросы приходят с десятков тысяч адресов из разных стран и каждый по отдельности выглядит безобидно, простые чёрные списки перестают работать — нужен анализ трафика по сигнатурам и поведению.
Мотивация атакующих разная: недобросовестная конкуренция, вымогательство, месть, «стресс-тесты» по заказу. Важно понимать: под атаку может попасть и маленький сайт, и Telegram-бот, и игровой сервер — последние страдают особенно часто.
Уровни атак: L3, L4 и L7 простыми словами
DDoS-атаки принято классифицировать по уровням сетевой модели OSI. Для практики важны три:
| Уровень | Что это | Типичные атаки | Что страдает |
|---|---|---|---|
| L3 — сетевой | IP-пакеты, маршрутизация | ICMP flood, IP-фрагментация, атаки с амплификацией | Канал и сетевое оборудование |
| L4 — транспортный | TCP и UDP | SYN flood, UDP flood, ACK flood | Таблица соединений, стек TCP/IP сервера |
| L7 — приложений | HTTP(S), DNS, игровые протоколы | HTTP flood, медленные запросы (slowloris), тяжёлые запросы к поиску/API | Веб-сервер, PHP, база данных |
Ключевые механики, которые стоит понимать:
- SYN flood (L4). Атакующий шлёт массу TCP-пакетов SYN («хочу соединиться»), но никогда не завершает рукопожатие. Сервер держит полуоткрытые соединения, таблица переполняется — новые клиенты не могут подключиться, при этом канал может быть почти свободен.
- UDP flood (L3/L4). Поток UDP-пакетов на случайные или конкретные порты. UDP не требует установки соединения, поэтому генерировать такой мусор дёшево. Классическая беда игровых серверов.
- Амплификация (L3/L4). Атакующий отправляет маленький запрос открытому DNS- или NTP-серверу, подставив в поле отправителя IP жертвы, — а ответ, в разы или в десятки раз больше запроса, прилетает на ваш сервер. Так небольшой ботнет разгоняет атаку до серьёзных объёмов.
- HTTP flood (L7). Тысячи с виду обычных GET/POST-запросов к сайту. Каждый запрос легитимен по форме, но вместе они кладут PHP и базу данных. Для сетевого фильтра такой трафик почти неотличим от наплыва реальных посетителей.
Как работает фильтрация L3/L4 на стороне хостера
Смысл фильтрации L3/L4 в том, что мусорный трафик отбрасывается до того, как дойдёт до вашего VPS, — на сетевой инфраструктуре провайдера. Это принципиально: если атака забивает канал, бороться с ней средствами самого сервера уже поздно, пакеты надо резать выше по маршруту.
Упрощённо конвейер выглядит так:
- Мониторинг трафика. Система защиты постоянно наблюдает за потоком к каждому IP: пакеты в секунду, биты в секунду, соотношение типов пакетов. У каждого сервера есть привычный профиль трафика.
- Детекция аномалии. Резкий всплеск PPS, шквал SYN без завершённых рукопожатий, поток UDP на нетипичные порты — триггеры, по которым трафик к атакуемому IP заворачивается на очистку.
- Фильтрация. На узлах очистки трафик прогоняется через набор проверок: сигнатуры известных атак, валидность TCP-флагов и заголовков, лимиты по частоте с одного источника, проверки подлинности соединения (например, SYN cookies / SYN proxy — сервер-фильтр сам отвечает на SYN и пропускает дальше только тех, кто корректно завершил рукопожатие).
- Доставка чистого трафика. Легитимные пакеты идут на ваш VPS, мусор отбрасывается. Для посетителей сайт продолжает работать.
Такая базовая DDoS-защита L3/L4 входит во все московские VPS-тарифы Cheap-Host — от Start за 450 ₽/мес до Ultra, без доплат. Типовые SYN/UDP/ICMP-флуды она снимает автоматически, и в большинстве случаев владелец сервера об атаке узнаёт постфактум, если вообще узнаёт.
Почему L3/L4-фильтр не ловит атаки на приложение
Сетевой фильтр видит пакеты и соединения, но не «понимает» смысла HTTP-запросов, тем более внутри TLS-шифрования. HTTP-флуд с реальных браузероподобных клиентов проходит все проверки уровня L3/L4: рукопожатие честное, заголовки валидные. Отличить бота от человека здесь можно только на уровне приложения — по поведению, частоте запросов, JavaScript-проверкам. Поэтому L7-защита — это WAF, CDN-прослойки, rate limiting и капчи — отдельный слой, который выстраивается поверх сетевой фильтрации.
Что настроить на самом VPS: слой L7 своими руками
Правило простое: объёмные атаки — забота хостера, прикладные — ваша. Минимальный набор для Ubuntu 24.04:
1. Ограничьте частоту запросов в Nginx
Rate limiting отсекает клиентов, которые запрашивают страницы неестественно часто. В http {} объявите зону, в location — примените:
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
server {
location / {
limit_req zone=perip burst=20 nodelay;
}
}
10 запросов в секунду с одного IP с запасом хватает живому человеку, а примитивный HTTP-флуд с малого числа адресов упрётся в лимит и начнёт получать 503.
2. Прикройте лишние порты файрволом
Чем меньше открытых портов, тем меньше поверхность атаки. Базовая настройка UFW:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Подробный разбор — в статье о настройке файрвола UFW на Ubuntu. Помните об ограничении: локальный файрвол фильтрует то, что уже дошло до сервера, от забитого канала он не спасает.
3. Включите автоматическую блокировку по логам
Fail2ban читает логи и банит IP, которые ведут себя как боты: перебирают пароли, долбят одни и те же URL, ловят массовые 404. Установка: sudo apt install fail2ban. Как настроить фильтры — в статье о Fail2ban и блокировке подбора паролей.
4. Спрячьте реальный IP за прокси-слоем
Если перед сервером стоит CDN или reverse-proxy-сервис с anti-DDoS, атакующий видит IP прослойки, а не вашего VPS. Важно при этом закрыть прямой доступ к серверу файрволом, разрешив HTTP-трафик только с адресов прослойки, — иначе атака придёт в обход неё.
5. Наблюдайте за трафиком
Атаку, замеченную на первой минуте, пережить проще. Быстрая диагностика:
# сводка по соединениям, в т.ч. полуоткрытым (SYN-RECV)
ss -s
# топ IP по числу соединений к серверу
ss -tn state established | awk 'NR>1 {print $4}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
Для постоянного наблюдения подойдут netdata или связка с алертами в Telegram — этому посвящена статья о мониторинге VPS своими руками.
Отдельный случай: игровые серверы
Игровые серверы — любимая цель школьных «стрессеров»: протоколы работают по UDP, а обиженный игрок с доступом к дешёвому сервису атак — явление регулярное. Для игрового сервера критично, чтобы у хостера была именно сетевая UDP-фильтрация: локальными средствами UDP-флуд не отбить. Специфику — от настройки правил под конкретные игры до защиты от гриферов — мы разбираем в статье о защите игрового сервера от атак.
Чек-лист: DDoS-устойчивость VPS за один вечер
- Убедитесь, что у хостера есть фильтрация L3/L4 (у Cheap-Host она включена во все VPS-тарифы по умолчанию).
- Закройте файрволом все порты, кроме используемых.
- Включите limit_req в Nginx для публичных страниц и форм.
- Поставьте fail2ban с фильтрами под SSH и веб-сервер.
- По возможности спрячьте реальный IP за CDN/прокси и ограничьте прямой доступ.
- Настройте мониторинг трафика и алерты — атаку нужно увидеть раньше пользователей.
- Запишите контакт поддержки хостера: при объёмной атаке решает скорость реакции на стороне сети.
FAQ
Защищает ли фильтрация L3/L4 от всех DDoS-атак?
Нет. Она отсекает сетевые и транспортные атаки: SYN flood, UDP flood, ICMP flood, амплификацию. HTTP-флуд и другие атаки уровня приложения проходят её насквозь, потому что выглядят как легитимный трафик. Против L7 работают WAF, CDN, rate limiting и fail2ban.
Как понять, что сервер под DDoS-атакой?
Сайт резко замедлился или лёг; входящий трафик или PPS выросли в разы без роста реальных посетителей; в ss -s много соединений SYN-RECV; в логах веб-сервера шквал однотипных запросов с разных IP. Для сравнения нагрузки пригодятся iftop, vnstat и подсчёт соединений через ss.
Поможет ли файрвол UFW или iptables против DDoS?
Частично. Локальный файрвол фильтрует пакеты уже на вашей машине, поэтому от объёмной атаки, забившей канал, не спасёт — такой трафик надо резать на инфраструктуре хостера. Но против слабых атак, сканирования и брутфорса он эффективен и обязателен.
Есть ли DDoS-защита на тарифах Cheap-Host?
Да, все московские VPS-тарифы включают базовую защиту L3/L4 без доплат — начиная со Start за 450 ₽/мес. L7-слой для сайта (rate limiting, fail2ban, внешний прокси) настраивается самостоятельно.
Что делать, если атака всё равно положила сайт?
Определите тип атаки по логам и статистике соединений. L7 — включайте rate limiting, баньте активные подсети, подключайте проверку браузера через внешний сервис. Забит канал — пишите в поддержку хостера: фильтровать объёмный флуд можно только до сервера. Поддержка Cheap-Host на связи 24/7: support@cheap-host.onl.
Вывод
DDoS-защита VPS — это два слоя, и работают они только вместе. Фильтрация L3/L4 на стороне хостера снимает сетевые атаки — SYN/UDP/ICMP-флуды и амплификацию — ещё до того, как они дойдут до сервера. Слой L7 — rate limiting, файрвол, fail2ban, прокси-прослойка — вы выстраиваете сами, и на это достаточно одного вечера по чек-листу выше.
Если вы выбираете сервер с учётом защиты — у Cheap-Host базовая DDoS-защита L3/L4 включена во все VPS-тарифы: для сайта или API хорошо подходит Pro за 750 ₽/мес (12 vCPU, 16 ГБ RAM, NVMe) — запас ресурсов помогает переживать и те всплески, что доходят до сервера. KVM, безлимитный трафик, деплой за 45–60 секунд, поддержка 24/7 без шаблонных ответов.