Packetbeat mit Elasticsearch 8.x – Teil 1: Installieren und Sichern

Veröffentlicht am 18.12.2022

« Alle Vorträge ansehen Kontaktieren Sie uns
Packetbeat with Elasticsearch 8.x - Part 1: Install & Secure

Einführung

Code auf Github: Elasticsearch und Beats

Wir werden einrichten Packetbeat mit Elasticsearch und Kibana. Wenn Sie Elasticsearch und Kibana noch nicht eingerichtet haben, dann Befolgen Sie diese Anweisungen.

Dieses Video setzt voraus, dass Sie Öffentlich signierte Zertifikate. Wenn Sie Selbstsignierte Zertifikate, hier klicken Wird noch bekannt gegeben.

Anforderungen

Eine laufende Instanz von Elasticsearch und Kibana.

Eine Instanz eines anderen Ubuntu 20.04-Servers, auf dem ein beliebiger Dienst ausgeführt wird.

Schritte

Schritt 1 - Packetbeat herunterladen [01:15]

Führen Sie auf der Ubuntu-Maschine, auf der Packetbeat ausgeführt wird, diese Befehle aus, um Abhängigkeiten herunterzuladen:

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;

Schritt 2 - Packetbeat konfigurieren [02:21]

Bearbeiten Sie diese Felder für die /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"

Die fertige Datei packetbeat.yml finden Sie hier

WICHTIG: Wir verwenden den Elastic-Superuser für die Ersteinrichtung und Konfiguration. Wir werden die Berechtigungen später herabstufen.

Testen Sie dann Ihre Konfiguration mit diesen Befehlen:

/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

Sie sollten ungefähr Folgendes sehen:

Verify packetbeat configuration Überprüfen der Packetbeat-Konfiguration

Schritt 3 - Packetbeat einrichten [9:38]

Führen Sie nun diesen Befehl aus, um Packetbeat-Datenströme und -Ansichten in Elasticsearch und Kibana einzurichten:

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

Sobald der Befehl abgeschlossen ist, gehen Sie zu Kibana Speisekarte und besuchen Armaturenbrett um viele vorgefertigte Dashboards anzuzeigen.

Schritt 4 - Einen veröffentlichenden Benutzer erstellen [11:05]

Rolle erstellen

Gehen Sie in Kibana zu Stapelverwaltung > Rollen > Rolle erstellen. Füllen Sie dann diese Felder aus:

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

Benutzer erstellen

Gehen Sie in Kibana zu Stapelverwaltung > Benutzer > Benutzer erstellen. Füllen Sie dann diese Felder aus:

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

API-Schlüssel für Benutzer erstellen

Gehen Sie in Kibana zu Entwicklertools > Konsole. Führen Sie dann diesen Befehl aus:

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

Dies sollte zu einem Ergebnis wie diesem führen:

Packetbeat user token Packetbeat-Benutzertoken

Bearbeiten Sie die /etc/packetbeat/packetbeat.yml durch Auskommentieren der elastic Benutzername und Passwort und die Aktivierung der api_key ungefähr so:

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

Wir verwenden den Packetbeat-Keystore, um Geheimnisse für die Laufzeit zu laden. Führen Sie nun diesen Befehl aus, um die ES_API_KEY Schlüsselspeichervariable:

/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

Presse eingeben und wenn Sie dazu aufgefordert werden, fügen Sie <id>:<api_key> wo die <id> und die <api_key> sind die Werte aus der Benutzertoken-Antwort, die Sie zuvor erhalten haben.

Schritt 5 - Packetbeat ausführen [17:37]

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

In Kürze sollten Sie in Kibana Ergebnisse sehen, entweder Entdecken, Beobachtbarkeit, Stapelverwaltung > Indexverwaltung > Datenstrom, Dashboard > Wählen Sie ein Packetbeat-Dashboard aus.

Schritt 6 – GeoIP in Elastic einrichten

Gehen Sie in Kibana zu Entwicklertools > Konsole. Führen Sie dann diesen Befehl aus:

GET _ingest/geoip/stats

Wenn die erfolgreiche_Downloads Feldshows 1 Dann können Sie alle nächsten Prozesse überspringen. Wenn der Download von GeoIp in Elastic jedoch fehlschlägt, würde dies zu folgendem Ergebnis führen:

Packetbeat GeoIP checks Packetbeat GeoIP-Prüfungen

Deaktivieren Sie den automatischen GeoIP-Download auf Elasticsearch

Gehe zu etc/elasticsearch/ Verzeichnis und öffnen Sie das elasticsearch.yml Datei mit

vi elasticsearch.yml

Fügen Sie der Datei die folgende Zeile hinzu

ingest.geoip.downloader.enabled: false

Starten Sie dann Elasticsearch neu

systemctl restart elasticsearch.service

Stellen Sie sicher, dass elasticsearch nicht versucht, GeoIP herunterzuladen, indem Sie den folgenden Befehl erneut ausführen in Entwicklertools > Konsole:

GET _ingest/geoip/stats

Sie sollten ungefähr Folgendes sehen:

Packetbeat GeoIP confirmation

Elasticsearch erlauben, GeoIP herunterzuladen

Gehe zu etc/elasticsearch/ Verzeichnis und öffnen Sie das elasticsearch.yml Datei mit

vi elasticsearch.yml

Und entfernen Sie die folgende Zeile, die zuvor zur Datei hinzugefügt wurde.

ingest.geoip.downloader.enabled: false

Starten Sie Elasticsearch neu, damit die Änderungen übernommen werden.

systemctl restart elasticsearch.service

Bestätigen Sie, dass es funktioniert, indem Sie den folgenden Befehl im Entwicklertools > Konsole: GET _ingest/geoip/stats

Sie sollten eine Ausgabe wie diese erhalten:

Packetbeat GeoIP Successful Download Packetbeat GeoIP erfolgreich heruntergeladen

GeoIP konfigurieren

Definieren Sie eine Ingest-Pipeline mit dem folgenden Befehl in der Entwicklertools > Konsole:

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 } } ] }

Führen Sie dann den folgenden Befehl aus, um zu bestätigen, dass alles, was mit der Put-Anfrage gesendet wurde, korrekt war:

GET _ingest/pipeline/geoip-info

Bearbeiten Sie die /etc/packetbeat/packetbeat.yml durch Hinzufügen pipeline: geoip-info ungefähr so:

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

Starten Sie dann Packetbeat mit dem folgenden Befehl auf Ihrem Terminal neu:

systemctl restart packetbeat.service