Baselining внутренняя сеть traffi c (корпоративная) - PullRequest
2 голосов
/ 20 апреля 2020

Мы собираем сетевой трафик c с коммутаторов, используя Zeek, в виде «журналов подключений». Журналы соединений затем сохраняются в индексах Elasticsearch с помощью filebeat. Каждый журнал подключений представляет собой кортеж со следующими полями: (source_ip, destination_ip, порт, протокол, network_bytes, длительность). Есть еще несколько полей, но давайте пока просто рассмотрим вышеуказанные поля для простоты. Мы получаем 200 миллионов таких журналов каждый час для внутреннего трафика c. (Zeek позволяет нам идентифицировать внутренний трафик c через поле.) У нас есть около 200 000 активных IP-адресов.

Мы хотим переварить все эти журналы и создать график, где каждый узел является IP адрес и ребро (направлено, источник-назначение) представляет трафик c между двумя IP-адресами. Для каждого отдельного набора (порт, протокол) будет одно уникальное преимущество. Край будет иметь свойства: средняя продолжительность, среднее количество переданных байтов, количество гистограмм логов по часам дня.
Я попытался использовать агрегацию Elasticsearch, а также более новую технику Transform. Хотя оба работают теоретически, и я успешно проверил их на очень небольшом подмножестве IP-адресов, процессы просто не могут идти в ногу со всем нашим внутренним трафиком c. Например, переработка 1 часа журналов (около 200 миллионов журналов) с использованием Transform занимает около 3 часов.

Мой вопрос: является ли пост-обработка данных Elasticsearch правильным подходом к созданию этого графика? Или есть какой-то продукт, который мы можем использовать для этой работы? Кто-то предложил заглянуть в ntopng, но я не нашел этот конкретный случай использования c в их описании продукта. (Не уверен, что это актуально, но мы используем продукт ntop PF_RING в качестве внешнего интерфейса для Zeek). Есть ли другие продукты, которые делают работу из коробки? Спасибо.

1 Ответ

4 голосов
/ 20 апреля 2020

Какие проблемы или root причин вы пытаетесь выявить с помощью графика трафика Zeek восток-запад c?

Похоже, что более подходящий вариант использования, такой как определенный тип аутентификации c, или даже более крупный набор проблем, такой как расширение доступа к конечной точке, может лучше использовать хранилище, вычисления, память и другие ваши драгоценные время и ресурсы, нет?

Даже если вы действительно хотите коррелировать или группировать данные Zeek, попробуйте нормализовать их до OSSEM , и не будет никаких причин, скажем, собирать кортеж, когда вы можете собрать идентификатор сообщества вместо. Вы можете соотнести Zeek в большом с Suricata в маленьком. Возможно, лучшая архитектура данных будет VAST .

Kibana в своих последних итерациях имеет Graph , и даже более старая версия может поддерживать сторонний плагин kbn_network . Я мог видеть, как вы попали в стену с 200k активных IP-адресов и агрегацией Elasticsearch или даже сводными индексами.

Многие организации будут создавать архитектуры данных за пределами простого обслуживающего уровня, предоставляемого Elasticsearch. То, о чем я слышал, - это архитектура Kappa, напрямую передаваемая в базу данных графов, такая как dgraph , и, возможно, только те края графа, которые доступны со слоя обслуживания.

Существуют и другие способы задавать вопросы из данных IP-адресов, например параметры ML в AWS SageMaker IP Insights или Apache Spot .

Кроме того, я большой поклонник получения правильных данных только при возникновении ситуации, хотя и в автоматическом режиме, так что кусочки головоломки всплывают для меня, и я могу просто зафиксировать их на месте. Если бы я особенно работал с данными Zeek, я мог бы задействовать платформу, такую ​​как SecurityOnion и ее оркестрованный движок Playbook , чтобы запускать для меня другие задачи, такие как запросы с одним из Velocidex инструменты или даже кросс-корреляции с использованием встроенных Sigma источников.

...