Как мониторинг сети спас мой сервер от майнера: реальный кейс с CVE-2025-66478

В управлении IT-инфраструктурой существует золотое правило: "Ты не можешь управлять тем, что не измеряешь". Обычно мы ограничиваемся проверкой доступности сайта (UP/DOWN), но дьявол кроется в деталях. Такие показатели, как Jitter (джиттер), Packet Loss (потеря пакетов), задержка UDP и пропускная способность канала, являются не просто метриками качества связи — это отличные индикаторы здоровья (и безопасности) вашего сервера.

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

Инцидент: "Странная картина" на дашборде

Для тестирования надежности каналов связи с нашим сервисом я установил на одну из тестовых VPS наш пример — Мониторинг Jitter и Packet Loss. Это скрипт на Node.js, который отслеживает качество соединения.

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

Вот как это выглядело в реальном времени:

А вот детальный разбор графика, который открыл мне глаза на происходящее:

widget_desc

Что нам говорят эти цифры?

  1. Зона №1 (Начало заражения): Мы видим резкий скачок Packet Loss до 100%. Скорее всего, в этот момент вредоносный скрипт скачивал инсталлятор майнера. Канал был либо полностью забит загрузкой, либо скрипт намеренно ограничил сетевую активность, чтобы скрыть коммуникацию с управляющим сервером (C&C). Из-за этого связь с нашей приемной частью примера мониторинга Jitter прервалась.
  2. Зона №2 (Активная фаза): Пошли огромные задержки (Latency/Ping) и высокий Jitter. Почему? Мониторинг рассчитывает задержку на клиенте: время от отправки пакета до его возвращения. Майнер занял все ресурсы процессора, и сервер просто не успевал вовремя обрабатывать и декодировать сетевые пакеты, создавая искусственную очередь и лаги.
  3. Зона №3 (Финал): График обрывается — это момент, когда я, осознав взлом, принудительно выключил VPS.

Расследование

Увидев график, я попытался зайти на сервер по SSH. Консоль "тормозила", были долгие задержки на простые команды. Кое-как запустив утилиту top, я увидел причину:

  • nodejs: 50% CPU
  • xmrig: 50% CPU

Быстрый поиск подтвердил опасения: xmrig — это популярный майнер криптовалюты Monero. Сервер был взломан.

Как это произошло?

Недолго думая, я вспомнил, что на этой машине "крутился" старый, забытый проект на Next.js. Я благополучно забыл про него и не обновил вовремя, пропустив критическую рекомендацию NEXT.js Security Advisory: CVE-2025-66478.

Хакеры использовали эту уязвимость для удаленного выполнения кода (RCE) и установки майнера. К слову, я не единственный пострадавший — вот пример из x.com @SebastianB929, хотя автору того твита повезло больше, чем мне.

Почему важны уведомления?

Главный урок этой истории не в том, что нужно обновлять софт (это очевидно), а в том, что мониторинг без уведомлений — это просто красивые графики.

Если бы я настроил триггеры на аномально высокую задержку пинга или загрузку CPU, я бы получил уведомление в Telegram или на почту мгновенно, в момент №1 на графике. Это позволило бы остановить эксплуатацию сервера хакерами за считанные минуты, а не часы.

Резюме: Что нужно мониторить?

Не ждите инцидентов. Настройте мониторинг своих устройств прямо сейчас. Вот три базовых примера, которые помогут вам держать руку на пульсе:

  1. Базовое состояние железа: Используйте Мониторинг состояния ПК и сервера (CPU, RAM, Disk). Если процессор загружен на 100% без вашей команды — это сигнал тревоги.
  2. Качество сети: Настройте Мониторинг Jitter и Packet Loss. Как показал мой пример, сетевые аномалии часто являются следствием проблем с производительностью или безопасностью.
  3. Пропускная способность: Используйте Мониторинг сети с помощью iperf3, чтобы понимать, не утилизирует ли кто-то ваш канал под DDoS-атаку или скачивание данных.

И самое главное — всегда настраивайте уведомления в Viziot. Это сэкономит вам нервы, деньги и репутацию.