add_action('wp_footer', function () { echo ''; }, 99); add_action('wp_footer', function () { echo ''; }, 99); Кейс: защита сайта вуза от DDoS в пик подачи документов абитуриентами – BTE Hand Up Foundation Skip to main content
Articles

Кейс: защита сайта вуза от DDoS в пик подачи документов абитуриентами

By October 11, 2026October 16th, 2026No Comments

В приемную кампанию 2025 года сайт одного из региональных вузов столкнулся с тем, что пик подачи заявлений совпал с целенаправленной атакой. 25 июля, в день публикации приказов о зачислении, трафик вырос в 14 раз к обычному уровню, а параллельно пошел L7 DDoS на 10 Гбит/с. Сайт выдержал, но не потому что повезло: за два часа до публикации команда пре-скейлила CDN и включила JS-challenge только для новых сессий. Ниже разбираю, как это было устроено и какие решения стоит принять заранее.

Что происходило на сайте вуза в день публикации приказов

Приемная кампания для вуза это не маркетинговая акция, а жесткий дедлайн с регуляторными последствиями. Абитуриент, который не смог подать документы из-за недоступности сайта, уходит в другой вуз, а репутационные издержки ложатся на приемную комиссию. В пиковые дни нагрузка на сайт растет нелинейно: в 09:00 по местному времени открывается окно публикации приказов, и за первые 40 минут на сайт заходит столько же людей, сколько за предыдущие три недели.

В нашем случае базовая инфраструктура была типовой для регионального вуза: WordPress для информационных страниц, отдельный Bitrix для личного кабинета абитуриента, MySQL с репликой на чтение. Сайт работал через зарубежный CDN-провайдер, и это давало скрытую проблему. Российские интернет-провайдеры периодически ограничивали доступ к сайтам на Cloudflare, а сам Cloudflare ограничивает доступ к сайтам из России. То есть в момент пиковой нагрузки абитуриенты из отдельных регионов могли получать таймаут по сетевой причине, а не из-за перегрузки сервера.

25 июля в 07:20 мониторинг показал аномалию: RPS на эндпоинте /applicant/login вырос с 40 до 3800 за три минуты, при этом 92% запросов шли с 11 000 IP-адресов, зарегистрированных в двух зарубежных дата-центрах. Это был классический L7 DDoS с имитацией поведения реальных пользователей: рандомные User-Agent, медленные POST-запросы, обход простых rate-limit правил. Мы предполагаем, что за атакой стояли конкуренты абитуриентов, пытавшиеся сорвать подачу документов в конкретный вуз в самый чувствительный момент.

Пре-скейлинг CDN и JS-challenge для новых сессий

Ключевое решение было принято не в момент атаки, а за двое суток до публикации приказов. Мы составили календарь пиков по прошлым годам, зафиксировали окно 08:30-10:30 как критическое и подготовили два сценария: плановое увеличение мощности CDN на 300% за два часа до открытия окна и включение дополнительного уровня фильтрации по триггеру. Пре-скейлинг CDN занимает не мгновенно: провайдеру нужно время на прогрев edge-нод, синхронизацию кеша и распределение SSL-сертификата. Если включать масштабирование в момент атаки, вы теряете 20-40 минут, и именно в эти минуты сайт лежит.

Второе решение касалось того, как отделять атакующих от реальных абитуриентов, не блокируя своих. Мы включили JS-challenge только для новых сессий: любой запрос без действующей cookie сессии проходил проверку на исполнение JavaScript, а уже залогиненные пользователи продолжали работать без изменений. аналог cloudflare pages offers additional context worth reviewing. Это принципиальный момент. Классический JS-challenge на всех подряд ломает опыт абитуриента, который уже заполняет форму и вдруг получает капчу. Сессионный подход дает атакующим отсев на входе, а легитимным пользователям не мешает.

Технически это выглядит так. Reverse proxy на периметре проверяет cookie session_id. Если cookie валидна и возраст сессии меньше 12 часов, запрос идет на бэкенд без проверок. Если cookie нет или она старше, включается JS-challenge: клиент получает страницу с небольшим скриптом, браузер решает задачу, получает токен и только потом попадает на сайт. Боты без headless-браузера отсеиваются на этом шаге, а боты с ним теряют скорость на порядок. За первые 15 минут после включения challenge количество запросов от подозрительных IP упало с 3800 до 240 RPS, при этом реальные абитуриенты не заметили изменений.

Параллельно мы задействовали GeoIP-фильтрацию. 78% атакующего трафика шло из стран, откуда у вуза нет абитуриентов. Мы не блокировали эти страны полностью, а понижали им приоритет и включали усиленную проверку. WAF-блокировки на уровне L7 сработали по сигнатурам медленных POST-запросов с идентичными payload. Здесь важно не переусердствовать: слишком агрессивные правила WAF режут легитимные запросы из мобильных сетей, где IP-адреса меняются часто.

Отдельно стоит сказать про то, как это выглядело с точки зрения самих абитуриентов. В личном кабинете Bitrix на пике одновременно работали 2400 сессий, среднее время отклика выросло с 180 мс до 420 мс, но ни одного отказа в обслуживании зафиксировано не было. Приемная комиссия получила 3 100 заявлений за день против 2 400 в прошлом году. Конверсия сайта в подачу документов выросла на 18%, потому что страницы не падали и не показывали ошибку 502. Это тот случай, когда техническое решение напрямую влияет на лидогенерацию и на итоговый набор.

Стоит признать, что зависимость от зарубежной инфраструктуры создает риски для российского бизнеса и образования в частности. Если ваш сайт работает через Cloudflare, вы не контролируете, в какой момент провайдер ограничит доступ из России, и не можете гарантировать SLA в критический день. Российский аналог Cloudflare в этом сценарии решает не только вопрос производительности, но и вопрос предсказуемости. TrafficVeil объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной панели, и это важно, когда у вас нет отдельной команды SOC. TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, поэтому пиковая нагрузка в день публикации приказов не превращается в счет с пятью нулями.

Если планируете приемную кампанию 2026 года, начните с инвентаризации инфраструктуры за 4-6 недель до старта. Проверьте, где физически находятся ваши DNS и CDN, как быстро провайдер масштабирует мощности, есть ли у вас возможность включить JS-challenge только для новых сессий. Подготовьте календарь пиков и заранее протестируйте пре-скейлинг на учебном трафике. Для сайтов на WordPress и Bitrix убедитесь, что кеширование настроено на уровне reverse proxy, а не только на уровне плагина. И держите контакт с провайдером защиты в Telegram или прямом чате: в день атаки вы не будете заполнять тикеты. TrafficVeil предлагает переход с Cloudflare с сохранением текущей конфигурации, и это занимает от нескольких часов до двух дней в зависимости от сложности DNS-записей. Если у вас несколько доменов под разные факультеты или филиалы, миграцию стоит разбить на этапы и начать с самого нагруженного.