Визуализация журналов потоков для групп безопасности сети Наблюдателя за сетями Azure с помощью инструментов с открытым кодом
Внимание
30 сентября 2027 г. журналы потоков безопасности сети (NSG) будут прекращены. В рамках этого выхода на пенсию вы больше не сможете создавать новые журналы потоков NSG с 30 июня 2025 года. Мы рекомендуем перенести журналы потоков виртуальной сети, которые преодолевают ограничения журналов потоков NSG. После выхода на пенсию аналитика трафика, включенная с помощью журналов потоков NSG, больше не будет поддерживаться, а существующие ресурсы журналов потоков NSG в подписках будут удалены. Однако записи журналов потоков NSG не будут удалены и будут продолжать следовать соответствующим политикам хранения. Дополнительные сведения см. в официальном объявлении.
Журналы потоков группы безопасности сети предоставляют сведения, которые можно использовать для понимания входящего трафика и исходящего IP-трафика в группах безопасности сети. Эти журналы потоков отображают для каждого входящего и исходящего потока применимые правила, сетевой адаптер, к которому относится поток, информацию о 5 кортежах (исходный IP-адрес и порт, конечный IP-адрес и порт, тип протокола), а также информацию о запрете или разрешении трафика.
Данные журналы потоков могут быть трудны для анализа вручную и получения информации. Однако существует несколько инструментов с открытым кодом, которые могут помочь визуализировать эти данные. В этой статье представлено решение для визуализации этих журналов с помощью Elastic Stack, которое позволяет быстро индексировать и визуализировать журналы потоков на панели мониторинга Kibana.
Сценарий
В этой статье мы настроим решение, позволяющее визуализировать журналы потоков группы безопасности сети с помощью Elastic Stack. Подключаемый модуль ввода Logstash получает журналы потоков непосредственно из большого двоичного объекта хранилища, настроенного для хранения журналов потоков. Затем с помощью Эластичного стека журналы потоков индексируются и используются для создания панели мониторинга Kibana для визуализации информации.
Шаги
Включение журналов потоков для групп безопасности сети
Для этого сценария в учетной записи должна быть включена функция ведения журнала потоков безопасности сети по крайней мере в одной группе безопасности сети. Инструкции по включению журналов потока безопасности сети см. в следующей статье : введение в ведение журнала потоков для групп безопасности сети.
Настройка Elastic Stack
Подключив журналы потоков NSG к Elastic Stack, мы сможем создать панель мониторинга Kibana, которая позволяет использовать журналы для поиска информации, создания диаграмм, анализа и изучения.
Установка Elasticsearch
Следующие инструкции используются для установки Elasticsearch на виртуальных машинах Ubuntu Azure. Инструкции по установке эластичного поиска в Red Hat Enterprise Linux см. в статье Install Elasticsearch with RPM.
Для Elastic Stack версии 5.0 и более поздних версий требуется Java 8. Выполните команду
java -version
, чтобы проверить установленную версию. Если у вас нет java, ознакомьтесь с документацией по поддерживаемым Azure пакетам JDKs.Скачайте правильный двоичный пакет для своей системы.
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb sudo dpkg -i elasticsearch-5.2.0.deb sudo /etc/init.d/elasticsearch start
Другие методы установки можно найти в документации по установке Elasticsearch.
Убедитесь, что Elasticsearch выполняется, выполнив следующую команду.
curl http://127.0.0.1:9200
Вы увидите ответ, аналогичный следующему:
{ "name" : "Angela Del Toro", "cluster_name" : "elasticsearch", "version" : { "number" : "5.2.0", "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe", "build_timestamp" : "2016-01-27T13:32:39Z", "build_snapshot" : false, "lucene_version" : "6.1.0" }, "tagline" : "You Know, for Search" }
Дополнительные инструкции по установке эластичного поиска см . в инструкциях по установке.
Установка Logstash
Следующие инструкции используются для установки Logstash в Ubuntu. Инструкции по установке этого пакета в Red Hat Enterprise Linux см . в статье об установке из репозиториев пакетов — yum .
Введите следующие команды, чтобы установить Logstash.
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Далее необходимо настроить Logstash для получения и анализа журналов потоков. Создайте файл logstash.conf следующим образом.
sudo touch /etc/logstash/conf.d/logstash.conf
Добавьте в этот файл приведенное ниже содержимое.
input { azureblob { storage_account_name => "mystorageaccount" storage_access_key => "VGhpcyBpcyBhIGZha2Uga2V5Lg==" container => "insights-logs-networksecuritygroupflowevent" codec => "json" # Refer https://learn.microsoft.com/azure/network-watcher/network-watcher-read-nsg-flow-logs # Typical numbers could be 21/9 or 12/2 depends on the nsg log file types file_head_bytes => 12 file_tail_bytes => 2 # Enable / tweak these settings when event is too big for codec to handle. # break_json_down_policy => "with_head_tail" # break_json_batch_count => 2 } } filter { split { field => "[records]" } split { field => "[records][properties][flows]"} split { field => "[records][properties][flows][flows]"} split { field => "[records][properties][flows][flows][flowTuples]"} mutate{ split => { "[records][resourceId]" => "/"} add_field => {"Subscription" => "%{[records][resourceId][2]}" "ResourceGroup" => "%{[records][resourceId][4]}" "NetworkSecurityGroup" => "%{[records][resourceId][8]}"} convert => {"Subscription" => "string"} convert => {"ResourceGroup" => "string"} convert => {"NetworkSecurityGroup" => "string"} split => { "[records][properties][flows][flows][flowTuples]" => ","} add_field => { "unixtimestamp" => "%{[records][properties][flows][flows][flowTuples][0]}" "srcIp" => "%{[records][properties][flows][flows][flowTuples][1]}" "destIp" => "%{[records][properties][flows][flows][flowTuples][2]}" "srcPort" => "%{[records][properties][flows][flows][flowTuples][3]}" "destPort" => "%{[records][properties][flows][flows][flowTuples][4]}" "protocol" => "%{[records][properties][flows][flows][flowTuples][5]}" "trafficflow" => "%{[records][properties][flows][flows][flowTuples][6]}" "traffic" => "%{[records][properties][flows][flows][flowTuples][7]}" "flowstate" => "%{[records][properties][flows][flows][flowTuples][8]}" "packetsSourceToDest" => "%{[records][properties][flows][flows][flowTuples][9]}" "bytesSentSourceToDest" => "%{[records][properties][flows][flows][flowTuples][10]}" "packetsDestToSource" => "%{[records][properties][flows][flows][flowTuples][11]}" "bytesSentDestToSource" => "%{[records][properties][flows][flows][flowTuples][12]}" } convert => {"unixtimestamp" => "integer"} convert => {"srcPort" => "integer"} convert => {"destPort" => "integer"} } date{ match => ["unixtimestamp" , "UNIX"] } } output { stdout { codec => rubydebug } elasticsearch { hosts => "localhost" index => "nsg-flow-logs" } }
Дополнительные инструкции по установке Logstash см. в официальной документации.
Установка подключаемого модуля ввода Logstash для хранилища BLOB-объектов Azure
Этот подключаемый модуль Logstash позволяет напрямую обращаться к журналам потоков из указанной учетной записи хранения. Чтобы установить этот подключаемый модуль, в каталоге установки Logstash по умолчанию выполните команду:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Чтобы запустить Logstash, выполните приведенную ниже команду.
sudo /etc/init.d/logstash start
Дополнительные сведения об этом подключаемом модуле см. в документации.
Установка Kibana
Инструкции по установке Kibana в Red Hat Enterprise Linux см. в разделе "Установка Kibana с помощью RPM". Инструкции по установке Kibana в системах Ubuntu/Debian с помощью пакета репозитория см. в разделе "Установка Kibana" из репозитория APT.
Затем следующие инструкции были протестированы в Ubuntu и могут использоваться в разных дистрибутивах Linux, так как они не относятся к Ubuntu.
Введите следующие команды для установки Kibana.
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz tar xzvf kibana-5.2.0-linux-x86_64.tar.gz
Запустите Kibana, выполнив следующие команды.
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Чтобы открыть веб-интерфейс Kibana, перейдите по адресу
http://localhost:5601
.В нашем сценарии для журналов потоков используется шаблон индексирования nsg-flow-logs. Его можно изменить в разделе output файла logstash.conf.
Чтобы получить возможность просматривать панель мониторинга Kibana удаленно, создайте правило NSG для доступа к порту 5601.
Создание панели мониторинга Kibana
На следующем рисунке показан пример панели мониторинга, используемой для просмотра сведений и трендов в оповещениях.
Загрузка файла панели мониторинга, файла визуализации и сохраненного файла поиска.
На вкладке Management (Управление) в Kibana перейдите к элементу Saved Objects (Сохраненные объекты) и импортируйте все три файла. Затем откройте вкладку Dashboard (Панель мониторинга) и загрузите пример панели мониторинга.
Вы можете также создать собственные визуализации и панели мониторинга, адаптированные к интересующим вас метрикам. Дополнительные сведения о визуализациях Kibana можно получить в официальной документации по Kibana.
Визуализация журналов потоков NSG
Пример панели мониторинга содержит несколько визуализаций для журналов потоков.
"Flows by Decision Over Time" (Потоки по решению с течением времени) и "Flows by Direction Over Time" (Потоки по направлению с течением времени) — диаграммы распределения во времени, показывающие число потоков за указанный период времени. Для этих визуализаций можно изменить единицу измерения времени и диапазон. Диаграмма "Flows by Decision Over Time" (Потоки по решению с течением времени) показывает соотношение принятых решений разрешить или запретить поток, а диаграмма "Flows by Direction Over Time" (Потоки по направлению с течением времени) — соотношение входящего и исходящего трафика. С помощью этих визуальных элементов можно изучать тенденции трафика с течением времени и искать любые пики или необычные шаблоны.
"Flows by Destination" (Потоки по назначению) и "Flows by Source Port" (Потоки по сходному порту) — круговые диаграммы, показывающие распределение потоков по соответствующим портам. В этом представлении можно увидеть наиболее часто используемые порты. Если щелкнуть определенный порт в круговой диаграмме, остальная часть панели мониторинга отфильтровывается до потоков этого порта.
"Number of Flows" (Число потоков) и "Earliest Log Time" (Время записи самого раннего журнала) — метрики, показывающие количество записанных потоков и дату записи самого раннего журнала.
Потоки по NSG и правилу — линейчатая диаграмма, показывающая распределение потоков в каждой группе безопасности сети и распределение правил в каждой группе безопасности сети. , вы можете увидеть, какие группы безопасности сети и правила создали большую часть трафика.
"Top 10 Source IPs" (10 наиболее используемых исходных IP-адресов) и "Top 10 Destination IPs" (10 наиболее используемых конечных IP-адресов) — гистограммы, показывающие 10 наиболее используемых исходных и конечных IP-адресов. Эти гистограммы можно настроить для отображения большего ли меньшего числа наиболее используемых IP-адресов. Здесь вы можете увидеть наиболее распространенные IP-адреса и решение о трафике (разрешить или запретить) в отношении каждого IP-адреса.
Кортежи потоков — таблица, показывающая сведения, содержащиеся в каждом кортеже потока, и соответствующее правило NGS и правило.
С помощью строки запроса в верхней части панели мониторинга можно отфильтровать ее содержимое по любому параметру потоков, включая идентификатор подписки, группы ресурсов, правило или любую другую интересующую вас переменную. Дополнительные сведения о запросах и фильтрах Kibana см. в официальной документации
Заключение
Объединяя журналы потоков группы безопасности сети с Elastic Stack, мы создали мощный и настраиваемый способ визуализации сетевого трафика. Эти панели мониторинга позволяют быстро получать и обмениваться аналитическими сведениями о сетевом трафике, а также отфильтровывать и анализировать возможные аномалии. С помощью Kibana эти панели мониторинга можно адаптировать, чтобы создать определенные визуализации, соответствующие требованиям безопасности, аудита и соответствия.
Следующий шаг
Ознакомьтесь со статьей Visualizing Network Security Group flow logs with Power BI (Визуализация журналов потоков для групп безопасности сети с помощью Power BI).