Найти в Дзене
Пока не взломали

Коллега поделился болью

Семейный онлайн-бизнес, небольшой сайт, внезапно начинает захлёбываться. Заходит в логи — 400 000 уникальных IP за несколько часов колотят по главной странице. Для контекста: у них обычно 2-3 тысячи посетителей в день. Первая реакция — «Может это вирусный контент? Может нас кто-то упомянул?» Проверяет реферреры — тишина. Проверяет user agents — каша из Firefox, Chrome, Safari, всё как у людей. Вот только люди так не ходят: по 50 запросов в секунду с одного IP к одной и той же странице. Админ начинает банить через fail2ban. Через час понимает, что это как вычерпывать океан ложкой — IP меняются быстрее, чем он успевает добавлять правила. Переключается на ipset. Загружает 400 000 адресов в блэклист. Сервер начинает еле дышать от обработки такого количества записей… хотя стоп, мы же выше писали, что ipset держит миллионы без проблем. Здесь начинается классическая ошибка: вместо того чтобы резать на уровне raw table + ipset, коллега настраивал фильтры в iptables filter chain, да еще и fa

Коллега поделился болью. Семейный онлайн-бизнес, небольшой сайт, внезапно начинает захлёбываться. Заходит в логи — 400 000 уникальных IP за несколько часов колотят по главной странице. Для контекста: у них обычно 2-3 тысячи посетителей в день.

Первая реакция — «Может это вирусный контент? Может нас кто-то упомянул?» Проверяет реферреры — тишина. Проверяет user agents — каша из Firefox, Chrome, Safari, всё как у людей. Вот только люди так не ходят: по 50 запросов в секунду с одного IP к одной и той же странице.

Админ начинает банить через fail2ban. Через час понимает, что это как вычерпывать океан ложкой — IP меняются быстрее, чем он успевает добавлять правила. Переключается на ipset. Загружает 400 000 адресов в блэклист. Сервер начинает еле дышать от обработки такого количества записей… хотя стоп, мы же выше писали, что ipset держит миллионы без проблем.

Здесь начинается классическая ошибка: вместо того чтобы резать на уровне raw table + ipset, коллега настраивал фильтры в iptables filter chain, да еще и fail2ban пытался всё это контролировать. Результат предсказуем: CPU сгорел на обработке правил раньше, чем канал забился трафиком.

Финал истории: пришлось звать провайдера, просить upstream filtering. Провайдер включил базовую митигацию за 2 часа (!), атака прекратилась. Но самое грустное — админ до сих пор не знает, кто и зачем атаковал семейный бизнес. Рандомная проверка на прочность? Месть конкурента? Просто попали в список мишеней ботнета? Никогда не узнаем.