Visualización de registros de flujo de grupo de seguridad de red de Azure Network Watcher con herramientas de código abierto
Importante
El 30 de septiembre de 2027, se retirarán los registros de flujo del grupo de seguridad de red (NSG). Como parte de esta retirada, ya no podrá crear nuevos registros de flujo de NSG a partir del 30 de junio de 2025. Se recomienda migrar a los registros de flujo de red virtual, lo que supera las limitaciones de los registros de flujo de NSG. Después de la fecha de retirada, el análisis de tráfico habilitado con los registros de flujo de NSG ya no se admitirá y se eliminarán los recursos de registros de flujo de NSG existentes en las suscripciones. Sin embargo, los registros de flujo de NSG no se eliminarán y seguirán siguiendo sus respectivas directivas de retención. Para obtener más información, consulte el anuncio oficial.
Los registros de flujo de grupo de seguridad de red proporcionan información que sirve para comprender el tráfico IP de entrada y salida en grupos de seguridad de red. Estos registros de flujo muestran los flujos de entrada y salida en función de cada regla, la NIC a la que se aplica el flujo, información de 5-tupla sobre el flujo (IP de origen y de destino, puerto de origen y de destino, protocolo), y si se permitió o denegó el tráfico.
El análisis y la extracción de información de forma manual de estos registros de flujo pueden resultar difíciles. Sin embargo, hay varias herramientas de código abierto que pueden ayudar a visualizar estos datos. En este artículo se proporciona una solución para visualizar estos registros mediante Elastic Stack, lo que le permite indexar y visualizar rápidamente el flujo de registros en un panel de Kibana.
Escenario
En este artículo, se configura una solución que le permite visualizar registros de flujo de grupo de seguridad de red con Elastic Stack. Un complemento de entrada de Logstash obtiene los registros de flujo directamente del blob de almacenamiento configurado como contenedor de los registros de flujo. A continuación, con Elastic Stack, se indexan los registros de flujo y se usarán para crear un panel de Kibana para visualizar la información.
Pasos
Habilitación de los registros de flujo de grupo de seguridad de red
En este escenario, debe tener el registro de flujo de grupo de seguridad de red habilitado en al menos un grupo de seguridad de red de su cuenta. Para ver instrucciones para habilitar los registros de flujo de grupo de seguridad de red, consulte el artículo siguiente: Introducción al registro de flujo para grupos de seguridad de red.
Configuración de Elastic Stack
Mediante la conexión de los registros de flujo de grupo de seguridad con Elastic Stack, se puede crear un panel de Kibana que permita buscar, representar, analizar y extraer información de los registros.
Instalación de Elasticsearch
Las instrucciones siguientes se usan para instalar Elasticsearch en máquinas virtuales de Ubuntu de Azure. Para obtener instrucciones sobre cómo instalar la búsqueda elástica en Red Hat Enterprise Linux, consulte Instalación de Elasticsearch con RPM.
La versión 5.0 y superiores de Elastic Stack requieren Java 8. Ejecute el comando
java -version
para comprobar la versión. Si no tiene instalado Java, consulte la documentación en los JDK compatibles con Azure.Descargue el paquete binario correcto para su sistema:
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
Puede encontrar otros métodos de instalación en Elasticsearch Installation (Instalación de Elasticsearch).
Compruebe que Elasticsearch se esté ejecutando con el comando:
curl http://127.0.0.1:9200
Debería ver una respuesta similar a la siguiente:
{ "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" }
Para más instrucciones sobre cómo instalar Elasticsearch, consulte las instrucciones de instalación.
Instalación de Logstash
Las instrucciones siguientes se usan para instalar Logstash en Ubuntu. Para obtener instrucciones sobre cómo instalar este paquete en Red Hat Enterprise Linux, consulte el artículo Instalación desde repositorios de paquetes: yum.
Para instalar Logstash, ejecute los siguientes comandos:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
A continuación, necesitamos configurar Logstash para tener acceso a los registros de flujo y analizarlos. Cree un archivo logstash.conf mediante:
sudo touch /etc/logstash/conf.d/logstash.conf
Agregue el siguiente contenido al archivo:
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" } }
Para más instrucciones sobre cómo instalar Logstash, consulte la documentación oficial.
Instalación del complemento de entrada de Logstash para Azure Blob Storage
Este complemento de Logstash le permite acceder directamente a los registros de flujo desde su cuenta de almacenamiento designada. Para instalar este complemento, desde el directorio de instalación predeterminado de Logstash, ejecute el comando:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Para iniciar Logstash, ejecute el comando:
sudo /etc/init.d/logstash start
Para más información sobre este complemento, consulte la documentación.
Instalación de Kibana
Para obtener instrucciones sobre cómo instalar Kibana en Red Hat Enterprise Linux, consulte Instalación de Kibana con RPM. Para obtener instrucciones sobre cómo instalar Kibana en sistemas Ubuntu/Debian mediante un paquete de repositorio, consulte Instalar Kibana desde el repositorio de APT.
A continuación, las siguientes instrucciones se probaron en Ubuntu y podrían usarse en diferentes distribuciones de Linux, ya que no son específicas de Ubuntu.
Ejecute los siguientes comandos para instalar 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
Para ejecutar Kibana, use los comandos:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Para ver la interfaz web de Kibana, vaya a
http://localhost:5601
.En este escenario, el patrón de índice usado para los registros de flujo es "nsg-flow-logs". Puede cambiarlo en la sección "output" del archivo logstash.conf.
Si quiere ver el panel de Kibana de forma remota, cree una regla de grupo de seguridad de red de entrada que permita acceder al puerto 5601.
Creación de un panel de Kibana
En la siguiente imagen se muestra un panel de ejemplo para ver las tendencias y los detalles de las alertas:
Descargue el archivo de panel, el archivo de visualización y el archivo de búsqueda guardada.
En la pestaña Management (Administración) de Kibana, vaya a Saved Objects (Objetos guardados) e importe los tres archivos. A continuación, en la pestaña Dashboard (Panel), puede abrir y cargar el panel de ejemplo.
También puede crear visualizaciones y paneles propios que se adapten a las métricas que le interesen. Puede leer más sobre la creación de visualizaciones de Kibana en la documentación oficial de Kibana.
Visualización de registros de flujo de grupo de seguridad de red
El panel de ejemplo proporciona varias visualizaciones de los registros de flujo:
Flujos por decisión o dirección a lo largo del tiempo: gráficos de serie temporal que muestran el número de flujos en el período de tiempo. Puede editar la unidad de tiempo y el alcance de estas dos visualizaciones. Flows by Decision (Flujos por decisión) muestra la proporción de decisiones de permitir o denegar tomadas, mientras que Flows by Direction (Flujos por dirección) muestra la proporción de tráfico de entrada y de salida. Con estos objetos visuales, puede examinar las tendencias del tráfico a lo largo del tiempo y buscar picos o patrones poco habituales.
Flujos por puerto de origen o destino (Flows by Destination Port y Flows by Source Port): gráficos circulares que muestran el desglose de los flujos a sus puertos respectivos. En esta vista se ven los puertos de uso más frecuente. Si hace clic en un puerto específico en el gráfico circular, el resto del panel se filtra para mostrar flujos de ese puerto.
Number of Flows (Número de flujos) y Earliest Log Time (Hora de registro más antigua): métricas que muestran el número de flujos registrados y la fecha del registro más antiguo capturado.
Flujos por grupo de seguridad de red y regla: gráfico de barras que muestra la distribución de los flujos dentro de cada grupo de seguridad de red, además de la distribución de reglas en cada uno de ellos. , puede ver qué grupo de seguridad de red y qué reglas generan la mayor parte del tráfico.
Diez principales IP de origen o destino (Top 10 Source IPs y Top 10 Destination IPs): gráficos de barras que muestran las diez principales direcciones IP de origen y de destino. Puede ajustar estos gráficos para mostrar más o menos direcciones IP principales. Desde aquí, puede ver las direcciones IP más frecuentes, así como la decisión de tráfico (permitir o denegar) que se está tomando para cada IP.
Flow Tuples: una tabla en la que se muestra la información contenida en cada tupla de flujo, así como su grupo de seguridad de red y regla correspondientes.
Mediante la barra de consulta en la parte superior del panel, puede filtrar el panel en función de cualquier parámetro de los flujos, como el id. de suscripción, los grupos de recursos, la regla o cualquier otra variable de interés. Para más información sobre las consultas y los filtros de Kibana, consulte la documentación oficial
Conclusión
Al combinar los registros de flujo de grupo de seguridad de red con Elastic Stack, dispone de una forma eficaz y personalizable para visualizar el tráfico de red. Estos paneles permiten obtener y compartir rápidamente información detallada sobre el tráfico de red, así como filtrar e investigar cualquier posible anomalía. Con Kibana, puede personalizar estos paneles y crear visualizaciones específicas para satisfacer las necesidades de seguridad, cumplimiento y auditoría.
Paso siguiente
Aprenda a visualizar los registros de flujo de grupo de seguridad de red con Power BI en el artículo Visualize NSG flows logs with Power BI (Visualización de registros de flujo de grupo de seguridad de red con Power BI).