DDoS давно перестал быть «проблемой больших»: сегодня даже небольшой сайт на промо‑кампании или локальном рынке может «словить» волну мусорного трафика и уйти в офлайн. Хорошая новость — 80% рисков закрываются простыми и недорогими мерами: правильный DNS, базовая фильтрация на периметре, кеширование, rate‑limit и дисциплина конфигураций. Эта статья — практическое руководство без маркетинговой магии: какие атаки бывают, что реально работает, что можно сделать за один вечер и как не переплатить сложностью.
Как работает (виды атак и где защищаться)
Слои модели и поверхности
- L3/L4 (сеть/транспорт): SYN‑flood, UDP‑flood, ICMP‑flood, фрагментация, отражённые амплификации (NTP, DNS, CLDAP и т.д.). Цель — забить канал/стек.
- L7 (приложение): HTTP‑flood, Slowloris/slow‑read, волны на тяжёлые эндпоинты (поиск, корзина), «Rapid Reset»/пилообразные атаки в HTTP/2 или шторм запросов в HTTP/3/QUIC. Цель — выжать CPU/БД/очереди.
Где фильтровать
- Перед вашим сервером — глобальная сеть фильтрации (Anycast) + CDN/WAF. Это самый эффективный и дешёвый для малого сайта уровень: чужой периметр принимает удар.
- На входе в площадку — фильтрация у провайдера/в дата‑центре, «чистый канал», ACL на бордере.
- На вашем сервере — системные лимиты, файрвол, веб‑сервер/прокси, кеш, ограничения приложений.
Ключ к устойчивости — мультислойная оборона: часть мусора не дойдёт до вашего дата‑центра, часть отрежется файрволом, остатки «проглотит» кеш и лимиты на приложении.
Почему важно (и почему «просто побольше мощности» не спасёт)
- Ширина канала — не броня. Атаки часто «узконаправленные»: бьют по таблицам состояний, воркерам TLS, очередям, heavy‑SQL. Удвоение CPU не спасёт от шторма медленных коннектов.
- Надёжность = репутация. Даже час офлайна в день запуска фичи сжигает маркетинговый бюджет и доверие пользователей.
- Цена ошибки. Ошибочная 301‑петля или отключённый кеш под нагрузкой эквивалентны DoS, только «своими руками». Правильные дефолты дешевле любой анти‑DDoS подписки.
Как выбрать меры защиты (приоритеты для малого сайта)
Ниже — последовательный план из 12 шагов, разбитых на три уровня. Делайте по порядку, останавливайтесь, когда риски и бюджет сходятся.
Уровень 1 — «Сделать за вечер» (минимум затрат)
- Грамотный DNS
- Два и более NS разных провайдеров/зон отказа.
- Толковые TTL: короткие (5–15 мин) для A/AAAA сайта, длинные для статического.
- Скрывайте «прямой» origin‑IP (не светите его в A‑записях подпроектов, почты, панели).
- CDN/Reverse‑Proxy перед сайтом
- Включите полный кеш статических ресурсов (долгий Cache-Control, ETag, gzip/brotli).
- Для популярных HTML включите «edge‑кеш» с коротким TTL и инвалидацией по релизу.
- Минимизируйте пропуск к origin — чем меньше запросов доходит до сервера, тем труднее вас «задавить».
- Базовый WAF/бот‑защита
- Разрешайте только нужные методы (GET/HEAD/POST), остальное блокируйте.
- Прячьте админку: доступ по IP/ASN/стране и/или обязательный challenge (JS/капча).
- Включите готовые правила против SQLi/XSS/сканеров и ограничения на частоту вызовов «дорогих» эндпоинтов.
- Rate‑limit на периметре и у себя
- Лимит по IP/префиксу/токену, отдельные квоты для тяжёлых операций (поиск, авторизация, отправка формы).
- Грейс‑период и «ведро токенов» (burst), чтобы не трогать честных пользователей.
- Кеш на уровне приложения
- Кешируйте HTML‑фрагменты, меню, превью, медленные виджеты.
- Вынесите сессии/кеш в Redis/мемкэш и держите «горячие» ключи в памяти.
- HTTP/2 и HTTP/3 — с ограничениями
- Ограничьте параллельность потоков/кадров, запретите медленные потоки без данных, включите защиту от «rapid reset».
- Отключите неиспользуемые «экзотические» функции, которые повышают площадь атаки.
Уровень 2 — «Неделя на приведение в порядок»
- Файрвол и сетевые лимиты
- nf_conntrack/таблицы состояний — с запасом и алертами, но с анти‑скан лимитами.
- SYN‑cookies и ограничение половинчатых коннектов, drop всего лишнего (старые протоколы, порты).
- Простейшие ACL: режем «злые» ASN/гео, где пользователей нет.
- Заткните «чёрные ходы» до origin
- Запретите прямой доступ к origin по IP: только через прокси/CDN (списки IP доверенных прокси, mTLS, firewall rules).
- Для админки/АПИ — отдельный поддомен со своим режимом доступа.
- Стабильный TLS
- Профили шифров без «зоопарка», HSTS, автоматическое продление сертификатов.
- Приоритизируйте современные шифры, ограничьте renegotiation/компрессию.
- Образцовый веб‑сервер/прокси
- Ограничения на размер заголовков/тела, таймауты ожидания, max соединений, лимиты воркеров/памяти.
- Здоровый keepalive и грамотные буферы, чтобы «slow‑read» не душил воркеры.
- Сигналы и алерты
- Мониторьте RPS, p95, 5xx, долю кеш‑HIT, количество открытых соединений, conntrack, SYN backlog.
- Алерты с консолидацией по корневой причине: один инцидент — один пейдж.
- Резервный сценарий (дефенсивная деградация)
- Подготовьте «лёгкую» версию главной страницы (без тяжёлых виджетов), которую можно быстро включить.
- Фолбэк для критичных API: очереди/кеш ответа/заглушки.
Уровень 3 — «Избыточность и готовность»
- Два независимых origin’а (актив‑пассив или актив‑актив) с синхронизацией.
- Geo‑балансировка и Anycast‑периметр.
- Разделение публичной и административной плоскости (разные домены/каналы/ключи).
- Учебные тревоги: раз в квартал симулируйте атаку (мягко) и измеряйте MTTA/MTTR.
Конкретика: рецепты для типовых атак
- SYN‑flood (L4): включить SYN‑cookies; увеличить backlog и таймауты полусоединений; на бордере/провайдере — фильтрация spoofed‑источников; лимит новых соединений/сек.
- UDP‑flood/амплификация: отрезать ненужные UDP‑сервисы; ограничить скорость/сек на порт; фильтры по известным отражателям; на периметре — «поглотитель» UDP.
- Slowloris/slow‑read (L7): лимит заголовков/тела, таймаут на первый байт, минимальная скорость клиента, ограничение параллельных запросов на IP, прерывание «висящих» соединений.
- HTTP‑flood по тяжёлым страницам: агрессивный кеш (edge+app), защита методом «капча/JS‑challenge» для подозрительных user‑agent/ASN, индивидуальный rate‑limit на эндпоинт, пред‑рендер и уменьшение веса ответа.
- Брутфорс/скрейпинг: поведенческие правила, блок по IP/ASN/гео, обязательный JS/капча при аномалиях, «мёдовые» эндпоинты для ловли сканеров, защита контента (robots/headers/замедление выдачи).
Ошибки, которые ломают устойчивость чаще, чем атаки
- Отсутствие кеша HTML (CMS рендерит каждую главную страницу заново).
- Origin доступен напрямую по IP и обходит WAF/CDN.
- Нет лимитов/таймаутов на веб‑сервере и в приложении.
- Открытые админки в интернете без IP‑фильтра или 2FA.
- Смешение статики и БД на одном диске/томе: всплеск логов/статик разоружает БД.
- Секреты и ключи в публичных репо → их используют для обхода проверок.
- Единый канал/точка отказа: один NS‑провайдер, одна зона, один балансировщик.
Чек‑лист «настроить за один вечер» (реально)
- Два NS, TTL 5–15 мин для A/AAAA сайта.
- Подключён периметр (CDN/WAF), origin скрыт и принимает трафик только от доверенных IP.
- Edge‑кеш статики + короткий кеш HTML, автоматическая инвалидация по релизу.
- Разрешены методы GET/HEAD/POST, админка — по IP + challenge.
- Rate‑limit на тяжёлых эндпоинтах, «ведро токенов» с burst.
- Ограничены заголовки/тело, выставлены таймауты (connect/read/send).
- SYN‑cookies включены, conntrack в алертах, drop «мусорных» портов.
- Мониторинг p95/5xx/кеш‑HIT/открытых соединений + алерты.
- Тест‑план: краткий стресс «ab/k6/locust» или мягкий challenge через периметр.
- Лёгкая страница/режим деградации — готов и задокументирован.
Инцидент‑плейбук: что делать, когда «горит»
- Подтвердить: несколько независимых проверок (из 2–3 регионов).
- Включить усиленные правила на периметре: «подозрительные» AS/гео → challenge, агрессивный rate‑limit на горячих эндпоинтах.
- Снизить нагрузку: повысить TTL кеша HTML/JSON, отложить фоновые тяжёлые задачи, включить лёгкую страницу.
- Защитить origin: временно закрыть прямой IP, расширить список доверенных сетей прокси, поднять лимиты conntrack/воркеров.
- Коммуникация: статус‑страница, короткие обновления пользователям («повышенная нагрузка, доступ восстановится»).
- Посмертный разбор: что пропустили алерты, где был «тонкий» узел, какие дефолты поменять.
Сколько это стоит (прагматично)
- $0–$20/мес: базовый CDN/WAF‑периметр, правил хватает для маленьких сайтов; edge‑кеш, простые rate‑лимиты, ограничение методов, IP‑фильтры.
- $20–$100/мес: плюс ботовая защита/челленджи, настраиваемые правила L7, отчёты и алерты, расширенные лимиты.
- $100+: премиальные функции, приоритетная фильтрация L3/L4, отдельные политики, geo‑балансировка, SLA.
На своей стороне — это несколько часов инженера на старт и редкие корректировки при изменении трафика.
Как измерять успех защиты
- Доступность (%) и ошибки (5xx/4xx) — по ключевым эндпоинтам.
- Латентность p95/p99 — не ухудшилась ли из‑за фильтрации.
- Коэффициент кеш‑HIT — цель > 80% по статике, > 50% по HTML в пиках.
- Доля запросов, ушедших в challenge/блок — показатель «шума» и эффективности правил.
- Загрузка origin (CPU/память/соединения) при сопоставимом RPS до/после.
Почему Unihost
Сеть и периметр. Маршрутизация и пиринг нацелены на низкую p95‑латентность; на периметре — фильтрация мусорного трафика. Приватные VLAN упрощают сегментацию публичной и административной плоскостей.
Серверы под нагрузку. NVMe Gen4/Gen5, быстрые CPU, предсказуемый uplink; синтез кеша (edge+app) и выделенные ресурсы под БД/очереди.
Безопасность по умолчанию. Шаблоны firewall/ACL, закрытие origin от прямого доступа, автоматические обновления TLS‑сертификатов, готовые правила для ограничения методов/заголовков/размеров.
Наблюдаемость. Интеграции с Prometheus/Grafana/ELK/OTel, алерты на conntrack/SYN backlog, статус‑страница и пост‑инцидентные отчёты.
Масштабируемость. Начните на VPS, переходите на выделенные серверы без смены провайдера и ломки схемы — конфигурации переедут вместе с инфраструктурой через IaC.
TL;DR
Для малого сайта защита от DDoS — это дисциплина и десяток правильных настроек, а не «покупка волшебной коробки». Спрячьте origin за периметром, дайте кешу делать свою работу, поставьте разумные лимиты, закройте админку, включите алерты и держите план деградации. В 8 из 10 случаев этого достаточно, чтобы выдержать всплески и «копеечные» атаки.
Попробуйте серверы Unihost — стабильная инфраструктура для ваших проектов.
Закажите VPS или выделенный сервер на Unihost, включите периметр‑защиту и кеш — и переживите следующую атаку без даунтайма.