3:15 ночи. Диски на data-нодах свежесобранного кластера OpenSearch пробивают 99% утилизации. Очередь в Kafka отстаёт на сорок миллионов сообщений. SOC-аналитики смотрят на бесконечно крутящийся лоадер в дашборде. Где-то в этот момент скрипт атакующего спокойно дампит NTDS.dit, потому что движок корреляции подавился спайком от файрволов и лёг. Так выглядела наша первая попытка собрать замену отвалившемуся энтерпрайзу из желудей и палок.
Свалить логи в OpenSearch или ClickHouse поверх Kafka — это не SIEM. Это просто очень дорогая онпрем-корзина для мусора, где вы никогда не найдёте инцидент до того, как данные утекут в даркнет.
Жизнь после Splunk и Elastic: SIEM и анализ логов на open-source с ИИ-детектом аномалий, когда лицензия отвалилась — это суровая реальность для инфраструктуры КИИ. Продление невозможно, лицензии в серой зоне, вендоры отрезали доступ к апдейтам. Импортозамещение SIEM 2026 стучится в дверь, ГосСОПКА требует отчётов, 187-ФЗ обязывает хранить всё on-prem. Попытки купить коробочный RU-SIEM часто разбиваются о космический ценник и примитивность встроенных ML-корреляций. Приходится строить своё, и на этом пути ломаются зубы.
Провал миграции со Splunk SPL и честная карта замен
Мы начинали классически, пытаясь собрать конструктор. Vector на сбор, Kafka как буфер, OpenSearch как хранилище и самописный батчевый движок алертинга. Анализ логов без Splunk сразу обнажил суровую правду: готового контента в опенсорсе нет. У вас больше нет тех тысяч изящных правил безопасности, которые работали из коробки и обновлялись вендором. Splunk SPL — это полноценный язык, на котором аналитик мог крутить данные как угодно. Мы попытались сделать автоматическую трансляцию SPL-запросов в синтаксис Lucene и DQL. Это был тотальный, безоговорочный провал.
Сложные джойны, статистические функции скользящего окна и сабсерчи просто не ложились на логику опенсорс-хранилищ. Миграция со Splunk SPL обернулась необходимостью переписывать всю логику детектирования с нуля руками. Дашборды пришлось собирать заново, продираясь через ограничения визуализации. Перенос двух тысяч ручных правил в YAML-формат создал идеальный шторм ложных срабатываний. Алерт-фатига накрыла SOC за первую же неделю: аналитики получали по триста уведомлений в час и просто начали игнорировать критические инциденты, утонув в белом шуме.
Выбор базы данных для сырых событий тоже оказался лотереей с отрицательным матожиданием. Loki прекрасен для дебага микросервисов, но абсолютно непригоден для секьюрити-контекста с тяжелыми поисками по IP и хешам файлов. OpenSearch терпим, но его UX для глубокого хантинга вызывает у безопасников физическую боль после интерфейса Splunk. ClickHouse переваривает невероятные объемы на вставку, но попробуйте написать там ad-hoc запрос с тремя джойнами по огромным индексам инцидентов — вы либо положите кластер по памяти, либо будете ждать ответа до утра. В итоге мы получили громоздкую неповоротливую систему, которая хранила петабайты, но не видела атаку в реальном времени.
Стрим-обработка и ML-детект аномалий в логах on-prem
Батч-процессинг для ИБ мертв. Вы не можете сложить 300 тысяч событий в секунду в базу, а потом раз в пять минут запускать по ним тяжелые селекты для поиска инцидентов. Пока индекс обновится, атакующий получит права доменного админа. Архитектура контура должна работать на лету. Мы радикально перестроили подход: ingestion через Vector, сырой поток в Kafka, а дальше — потоковая обработка на Apache Flink. И именно в Flink мы врезали слой машинного обучения.
Вместо того чтобы плодить регулярные выражения, мы развернули online-детект аномалий в потоке логов. Изоляционные леса и автоэнкодеры профилируют сетевой трафик и поведение пользователей прямо в оперативной памяти, до записи на диск. Модель оценивает вероятность того, что текущий вектор признаков — это целенаправленная активность, и выносит вердикт за миллисекунды. Кластеризация и дедупликация инцидентов тоже происходят в стриме. Если с тысячи серверов одновременно летит ошибка аутентификации, система схлопывает это в один мета-алерт с указанием скора аномальности, отсекая мусор.
Нагрузка, грабли кардинальности и дрейф нормы
Цифры после редизайна архитектуры говорят сами за себя. Вынеся аналитику в стрим, мы вышли на стабильные 450 тысяч EPS на входе. Задержка детекта — p95 latency — упала с двадцати минут при батчевом подходе до 1.2 секунды. Доля false positive сократилась с 85% до 12%, что позволило аналитикам наконец-то расследовать реальные угрозы. ML-слой взял на себя самую грязную работу по фильтрации аномалий.
Без тяжелых граблей не обошлось. Вылезла проблема взрывного роста кардинальности: динамические поля в логах облачных сервисов начали раздувать словари ClickHouse так, что метаданные стали занимать больше места, чем сами логи. Пришлось агрессивно резать сырые payload-данные на лету, оставляя только извлеченные ML-фичи для долгосрочного хранения. Ретеншн и стоимость владения петабайтами заставили внедрить жесткий тиринг: горячие данные живут неделю на NVMe, затем уезжают на дешевое S3-хранилище.
Самой большой головной болью стал concept drift — неизбежный дрейф «нормы». Алгоритм, отлично обученный на чистом трафике, начал сходить с ума и сыпать алертами во время легитимных обновлений инфраструктуры и массовых патч-вторников. Нам потребовалось выстроить сложный автоматический пайплайн непрерывного дообучения моделей на свежих данных с обязательной петлей обратной связи от дежурной смены SOC.
| Критерий | Классический Splunk Enterprise | Open-Source + Streaming ML |
|---|---|---|
| Скорость детекта (p95) | Зависит от расписания (минуты) | 1.2 секунды (в потоке) |
| Стоимость лицензирования | Сотни тысяч долларов за объем | Бесплатно (оплата только железа) |
| Управление правилами | Готовый контент, SPL-магия | ML-модели, хардкорная инженерия |
| False Positive Rate | Высокий (при ручных правилах) | Низкий (после тюнинга моделей) |
| Хранение | Дорогие проприетарные индексы | ClickHouse + S3 тиринг |
Замена Splunk на open-source с ИИ — это не установка очередного бинарника из репозитория, это полная пересборка инженерной культуры внутри ИБ-подразделения. Мы в Morana Labs проектируем такие realtime-ML контуры для инференса прямо на железе клиента, выжимая максимум из потоковой обработки и нейросетей. Когда объем событий пробивает потолок, а старых добрых лицензий больше нет, спасает только жесткая математика в стриме и архитектура, которая физически не может захлебнуться.