Packetbeat con Elasticsearch 8.x - Parte 1: Instalación y protección

Publicado el 18 de diciembre de 2022

« Ver todas las conferencias Contáctenos
Packetbeat with Elasticsearch 8.x - Part 1: Install & Secure

Introducción

Código en Github: Elasticsearch y Beats

Vamos a configurar Packetbeat con Elasticsearch y Kibana. Si aún no tiene Elasticsearch y Kibana configurados, entonces siga estas instrucciones.

Este vídeo asume que estás usando Certificados firmados públicamente. Si estas usando Certificados autofirmados, Vaya aquí Por determinar.

Requisitos

Una instancia en ejecución de Elasticsearch y Kibana.

Una instancia de otro servidor Ubuntu 20.04 que ejecuta cualquier tipo de servicio.

Pasos

Paso 1: Descargar Packetbeat [01:15]

En la máquina Ubuntu que ejecutará packetbeat, ejecute estos comandos para descargar las dependencias:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg; sudo apt-get install -y apt-transport-https; echo 'deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main' | sudo tee /etc/apt/sources.list.d/elastic-8.x.list; sudo apt-get update && sudo apt-get install -y packetbeat;

Paso 2: Configurar Packetbeat [02:21]

Edite estos campos para el /etc/packetbeat/packetbeat.yml.

setup.dashboards.enabled: true setup.kibana: host: "https://<kibana-domain>:<kibana-port>" output.elasticsearch: hosts: ["<elasticsearch-domain>:<elasticsearch-port>"] protocol: "https" username: "elastic" password: "your elastic password"

El packetbeat.yml completo se puede encontrar aquí

IMPORTANTE: Usamos el superusuario elástico para la configuración inicial. Reduciremos los privilegios más adelante.

Luego prueba tu configuración con estos comandos:

/usr/share/packetbeat/bin/packetbeat test config -c /etc/packetbeat/packetbeat.yml --path.data /var/lib/packetbeat --path.home /usr/share/packetbeat /usr/share/packetbeat/bin/packetbeat test output -c /etc/packetbeat/packetbeat.yml --path.data /var/lib/packetbeat --path.home /usr/share/packetbeat

Deberías ver algo como esto:

Verify packetbeat configuration Verificar la configuración de packetbeat

Paso 3: Configurar Packetbeat [9:38]

Ahora ejecute este comando para configurar los flujos de datos y las vistas de packetbeat en Elasticsearch y Kibana:

/usr/share/packetbeat/bin/packetbeat setup -c /etc/packetbeat/packetbeat.yml --path.data /var/lib/packetbeat --path.home /usr/share/packetbeat

Una vez finalizado el comando, ve a Kibana Menú y visitar Panel para ver muchos paneles prediseñados.

Paso 4: Crear un usuario de publicación [11:05]

Crear rol

En Kibana, vaya a Gestión de pilas > Roles > Crear rol. Luego, completa estos campos:

Role name: packetbeat-publisher Cluster privileges: monitor, read_ilm Indices: packetbeat-* Privileges: create_doc

Crear usuario

En Kibana, vaya a Gestión de pila > Usuarios > Crear usuario. Luego, completa estos campos:

Username: packetbeat-publisher Full name: packetbeat-publisher Email address: anything@anything.com Password: anything Roles: packetbeat-publisher, editor

Crear una clave API para el usuario

En Kibana, vaya a Herramientas de desarrollo > Consola. Luego ejecute este comando:

POST /_security/api_key/grant { "grant_type": "password", "username": "packetbeat-publisher", "password": "anything", "api_key": { "name": "packetbeat-publisher" } }

Esto debería producir un resultado como el siguiente:

Packetbeat user token Token de usuario de Packetbeat

Editar el /etc/packetbeat/packetbeat.yml comentando el elastic nombre de usuario y contraseña y habilitar el api_key Así:

output.elasticsearch: ...etc... api_key: "${ES_API_KEY}" #username: "elastic" #password: "" ...etc...

Usaremos el almacén de claves de Packetbeat para cargar secretos en tiempo de ejecución. Ahora ejecute este comando para configurar...ES_API_KEY variable del almacén de claves:

/usr/share/packetbeat/bin/packetbeat keystore add ES_API_KEY -c /etc/packetbeat/packetbeat.yml --path.data /var/lib/packetbeat --path.home /usr/share/packetbeat

Prensa ingresar y cuando se le solicite, péguelo <id>:<api_key> donde el <id> y el <api_key> son los valores de la respuesta del token de usuario que recibió anteriormente.

Paso 5 - Ejecutar Packetbeat [17:37]

systemctl enable packetbeat.service; systemctl start packetbeat.service;

En un momento, deberías comenzar a ver resultados en Kibana en cualquiera de los dos.Descubrir, Observabilidad, Gestión de pilas > Gestión de índices > Flujo de datos, Panel de control > Seleccionar un panel de control de Packetbeat.

Paso 6 - Configurar GeoIP en elastic

En Kibana, vaya a Herramientas de desarrollo > Consola. Luego ejecute este comando:

GET _ingest/geoip/stats

Si el descargas exitosas espectáculos de campo 1 Entonces puedes omitir por completo los siguientes procesos, pero si GeoIp no se descarga en Elastic, produciría un resultado como este:

Packetbeat GeoIP checks Comprobaciones GeoIP de Packetbeat

Deshabilitar la descarga automática de GeoIP en elasticsearch

Ir a etc/elasticsearch/ directorio y abrir el elasticsearch.yml archivo con

vi elasticsearch.yml

Añade la siguiente línea al archivo

ingest.geoip.downloader.enabled: false

luego reinicie elasticsearch

systemctl restart elasticsearch.service

Confirme que Elasticsearch no intente descargar GeoIP ejecutando nuevamente el siguiente comando.Herramientas de desarrollo > Consola:

GET _ingest/geoip/stats

Deberías ver algo como esto:

Packetbeat GeoIP confirmation

Permitir que Elasticsearch descargue GeoIP

Ir a etc/elasticsearch/ directorio y abrir el elasticsearch.yml archivo con

vi elasticsearch.yml

Y elimine la siguiente línea que se agregó previamente al archivo.

ingest.geoip.downloader.enabled: false

Proceda a reiniciar elasticsearch para que los cambios se reflejen.

systemctl restart elasticsearch.service

Confirme que funciona ejecutando el siguiente comando en el Herramientas de desarrollo > Consola: GET _ingest/geoip/stats

Deberías obtener un resultado como este:

Packetbeat GeoIP Successful Download Descarga exitosa de Packetbeat GeoIP

Configurar GeoIP

Defina una canalización de ingesta con el siguiente comando en el Herramientas de desarrollo > Consola:

PUT _ingest/pipeline/geoip-info { "description": "Add geoip info", "processors": [ { "geoip": { "field": "client.ip", "target_field": "client.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "client.ip", "target_field": "client.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "geoip": { "field": "source.ip", "target_field": "source.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "source.ip", "target_field": "source.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "geoip": { "field": "destination.ip", "target_field": "destination.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "destination.ip", "target_field": "destination.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "geoip": { "field": "server.ip", "target_field": "server.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "server.ip", "target_field": "server.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "geoip": { "field": "host.ip", "target_field": "host.geo", "ignore_missing": true } }, { "rename": { "field": "server.as.asn", "target_field": "server.as.number", "ignore_missing": true } }, { "rename": { "field": "server.as.organization_name", "target_field": "server.as.organization.name", "ignore_missing": true } }, { "rename": { "field": "client.as.asn", "target_field": "client.as.number", "ignore_missing": true } }, { "rename": { "field": "client.as.organization_name", "target_field": "client.as.organization.name", "ignore_missing": true } }, { "rename": { "field": "source.as.asn", "target_field": "source.as.number", "ignore_missing": true } }, { "rename": { "field": "source.as.organization_name", "target_field": "source.as.organization.name", "ignore_missing": true } }, { "rename": { "field": "destination.as.asn", "target_field": "destination.as.number", "ignore_missing": true } }, { "rename": { "field": "destination.as.organization_name", "target_field": "destination.as.organization.name", "ignore_missing": true } } ] }

Luego ejecute el siguiente comando para confirmar que todo lo que se envió con la solicitud put fue correcto:

GET _ingest/pipeline/geoip-info

Editar el /etc/packetbeat/packetbeat.yml añadiendo pipeline: geoip-info Así:

output.elasticsearch: ...etc... api_key: "${ES_API_KEY}" pipeline: geoip-info #username: "elastic" #password: "" ...etc...

Y luego reinicie packetbeat usando el siguiente comando en su terminal:

systemctl restart packetbeat.service