Что такое ELK Stack?
По словам разработчиков Elastic:
"ELK" - это акроним для трех проектов с открытым исходным кодом: Elasticsearch, Logstash и Kibana. Elasticsearch - это поисковый и аналитический движок. Logstash - это серверный конвейер обработки данных, который одновременно принимает данные из нескольких источников, трансформирует их и затем отправляет в "хранилище", такое как Elasticsearch. Kibana позволяет пользователям визуализировать данные с помощью графиков и диаграмм в Elasticsearch.
Начнем рассматривать данное утверждение с точки зрения кибербезопасности, хотя оно также применимо во многих других областях разработки и инжиниринга. Когда мы, как специалисты по безопасности, пытаемся выявить потенциальный инцидент в сети, нам необходимо, как минимум, одно важное условие - видимость.
Для нас источником видимости служат наши журналы. Это могут быть как сетевые логи, поступающие от сетевых устройств, таких как маршрутизаторы, коммутаторы и брандмауэры, так и логи, отображающие, что происходит на рабочих станциях пользователей. Чтобы эффективно собирать информацию, нам необходимы журналы. И здесь на сцену выходят лог-шипперы или агенты.
Давайте взглянем на диаграмму ниже для лучшего понимания контекста:

На Windows-машине у нас установлены агенты Beats или Elastic-Agent. Агенты Beats отвечают за сбор логов на устройстве, которое мы хотим мониторить. Мы можем настроить агент так, чтобы он собирал определенные данные в зависимости от конфигурации. Если мы отдадим предпочтение Elastic-Agent вместо агента Beats, мы также получим некоторые другие полезные функции, такие как мониторинг конечных точек и оповещения!
Теперь, у нас есть множество маленьких сборщиков, собирающих логи на разных системах. Куда же мы отправляем эти данные для хранения? Здесь в игру вступает компонент Elasticsearch. Можно представить его как базу данных, которая должна корректно обрабатывать, индексировать и хранить данные, собранные нашими лог-шипперами, чтобы в дальнейшем легко извлекать информацию. Представьте себе это как библиотеку с множеством библиотекарей, которые берут книги (наши логи) и помещают их на соответствующие полки.
Однако, если логи не имеют названия, автора, или написаны на совершенно другом языке, библиотекари могут испытывать затруднения при индексации. И здесь на сцену выходит "L" в нашем стеке ELK - Logstash. Некоторые логи имеют стандартные структуры данных, которые Elasticsearch читает и знает, как индексировать в соответствии с настройками. Однако, если мы сами создали кастомные логи или собрали их из менее известных источников, нам, возможно, потребуется отправить их кому-то для идентификации и конвертации логов, чтобы Elasticsearch мог их правильно интерпретировать. Эту роль выполняет Logstash: он принимает данные и, в зависимости от наших настроек, преобразует их в форму, которую Elasticsearch сможет правильно проиндексировать.
Все это замечательно, но какая польза от библиотеки с всеми необходимыми логами в нашей сети, если никто не может ничего прочитать? И здесь на сцену выходит "K" в нашем стеке ELK с Kibana. Я бы описал Kibana как библиотекаря на ресурсной стойке. Мы можем искать конкретную книгу, жанр или всех авторов, опубликованных в определенный период времени. Мы берем эту информацию и обращаемся к библиотекарю на ресурсной стойке, который взаимодействует с библиотекарями Elasticsearch, чтобы вернуть вам запрошенные данные.
Когда эти три компонента объединяются, у нас появляются огромные возможности. Если вы дополняете их функциями поиска, оповещениями, визуализацией, и даже агентом обнаружения конечных точек, то вы создаете мощную систему управления информацией и событиями безопасности (SIEM). Это дает нам возможность работать с этими инструментами, как если бы вы находились в корпоративной среде!
Итак, давайте начнем! Сначала нам понадобится гипервизор, будь то VirtualBox или VMWare - это не имеет значения. Так же убедитесь, имеет ли ваш компьютер достаточно ресурсов для выполнения задачи:
Last updated