
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:
Ü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-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-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:
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 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