Как мы вытащили сайт uCoz из атаки с 200 тысячами запросов в минуту

Юрий Герук 2025-11-20 10
Как мы вытащили сайт uCoz из атаки с 200 тысячами запросов в минуту

Содержание

    Есть такой особый момент в работе поддержки. Ты сидишь спокойно, пьешь чай, ковыряешь какой то шаблон, и тут пишет клиент. У него все висит. Не просто тупит, а висит так, что даже админка не хочет пускать. В первый миг кажется, что сервер просто просел. Во второй уже понимаешь, что нет, это не просадка. Это кто то очень уверенный решил устроить на сайте клиента цирк с конями.

    Открываю Cloudflare и сразу видно. График не растет, он прыгает вверх как бешеный. Пачки запросов идут на одни и те же страницы. Пустые юзер агенты, мусорные страны, обрывы по времени и поток который на обычный трафик даже не похож. На месте клиента любой бы подумал что сайт умер. Но нет, сайт жив. Просто его насильно держат под водой.

    С чего вся эта карусель началась

    Клиент пишет, что магазин зависает. Страницы грузятся через раз. Иногда открываются, иногда нет. Ошибки 522 и 524 прыгают туда сюда как пинг понг. Сразу ясно. Это не техническая неполадка. Это кто то долбит сайт как в последний раз.

    Захожу в анализ. Атака идет по модели L7. Бьют не по железу, а по самому сайту. То есть боты имитируют реальных посетителей, но в таком количестве, что любой проект начинает захлебываться.

    Запросы летят пачками. До двухсот тысяч за минуту. Идут на главную, на разделы, на все что можно схватить. Пытаются забить очереди, пытаются провалиться внутрь. Смотрю на страны откуда идет трафик. Клиентов у него там нет. Никогда не было и не будет. Но кто то очень хочет устроить ему веселую ночь.

    Решения надо принимать быстро, иначе сайт просто упадет окончательно

    Первое что включил это Cloudflare в режиме прокси. Не просто поставить значок облака, а включить его так, чтобы CF реально взял трафик на себя. Но просто включить мало. Нужно сразу резать поток.

    Полетели правила.

    Конкретные меры которые спасли сайт

    Жесткий rate limit

    Поставили ограничение. Десять запросов на десять секунд с одного адреса. Все что выше, Cloudflare отбрасывает моментально. Настоящий пользователь выбирает несколько страниц, кликает спокойно, читает. Бот так не умеет. Он всегда жрет трафик как пылесос. Тут они начали отваливаться пачками.

    Фильтр по странам

    Регионов куда клиент даже не отправляет, больше не подпускали. Сделал жесткую чистку. Сайт сразу стал дышать свободнее. Мусорные страны создавали больше половины нагрузки.

    Отключение старых HTTP версий

    Боты с древних систем любят старые протоколы. Эти версии мы отключили. Мусор ушел моментально. Платформа перестала принимать запросы от старых скриптов.

    Блокировка ASN

    Посмотрели какие автономные системы генерируют основной поток. Два сомнительных хостера, одна площадка для накрутки и один дешевый дата центр. Заблокировали все четыре. Поток рухнул как карточный дом.

    JavaScript Challenge

    Выставили проверку на самые больные точки. Главная. Магазин. Категории товаров. Разделы которые боты долбили сильнее всего. Настоящий человек проходит проверку даже не замечая. Бот не умеет выполнять скрипты и вылетает.

    Кэширование

    Статичные разделы полностью залили в кэш через CF. Это снизило нагрузку на сервер uCoz. Cloudflare стал сам выдавать ответы, даже не трогая платформу, и сервер наконец получил возможность выдохнуть.

    Что происходило на стороне uCoz

    Система тоже работала. Часть мусора резалась на сетевом уровне. Подозрительные соединения сбрасывались. Ряд запросов просто не проходил вверх по цепочке. Но атака такого уровня идет не в секунды. Тут нужна была защита на внешнем уровне, чтобы сервер не утонул окончательно.

    Когда Cloudflare начал перекрывать поток, нагрузка на платформу ушла вниз. Статистика перестала дрожать. Очереди начали очищаться. Ошибки 522 и 524 стали пропадать.

    Через пятнадцать минут график опустился. Через тридцать стал ровным. Через час сайт работал идеально.

    Что осталось включенным после стабилизации

    Полный набор защиты мы не оставили. Но вот что закрепили навсегда:

    • более мягкий rate limit
    • запрет старых HTTP
    • чистка мусорных стран
    • блокировка подозрительных ASN
    • челлендж на отдельные подозрительные адреса
    • кэширование статичных точек

    Теперь если атака повторится, она даже не приблизится к сайту.

    Итог этой истории

    Сайт на uCoz не падает просто так. Он реально держит серьезные атаки. Но если Cloudflare включен только ради галочки, это никакая не защита. Это просто украшение.

    Настоящая защита создается правилами. Ограничениями. Блокировками. Челленджами. Кэшированием. Контролем стран. Контролем ASN. Пока все это не настроено, любой мусор может положить сайт.

    Этот кейс показал главное. Интернет может быть шумным, но когда защита работает правильно, даже две сотни тысяч запросов в минуту превращаются в обычный день.

    Если кому то кажется что это случайность, то они просто никогда не видели сайт который атакуют всерьез.

    Вот такая история. Честная, рабочая, без украшений.

    Лицензия: CC BY-SA 4.0

     

    Автор: Юрий Герук

    Похожие материалы:

    Комментарии