Elk (Elastisearch Logstash Kibana): Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(14 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=Übersicht=
 
=Übersicht=
 +
==Logstash==
 +
Logstash verarbeitet und normalisiert Logdateien. Die Anwendung zieht ihre Informationen aus unterschiedlichen Datenquellen, die Benutzer als Input-Module definieren. Quellen können beispielsweise Datenströme von Syslog oder Protokolldateien sein. In einem zweiten Schritt verarbeiten Filter-Plugins die Daten nach Benutzervorgaben weiter.
 
==Elasticsearch==
 
==Elasticsearch==
 
Elasticsearch ist in Java implementiert und basiert auf Apache Lucene, einer extrem leistungsfähigen Volltext-Suchmaschine, deren Funktionen über ein REST-API bereitstehen. Alle Texte, Dokumente genannt, indexiert Elasticsearch automatisch.
 
Elasticsearch ist in Java implementiert und basiert auf Apache Lucene, einer extrem leistungsfähigen Volltext-Suchmaschine, deren Funktionen über ein REST-API bereitstehen. Alle Texte, Dokumente genannt, indexiert Elasticsearch automatisch.
==Logstash==
 
Logstash verarbeitet und normalisiert Logdateien. Die Anwendung zieht ihre Informationen aus unterschiedlichen Datenquellen, die Benutzer als Input-Module definieren. Quellen können beispielsweise Datenströme von Syslog oder Protokolldateien sein. In einem zweiten Schritt verarbeiten Filter-Plugins die Daten nach Benutzervorgaben weiter.
 
 
==Kibana==
 
==Kibana==
 
Kibana erzeugt aus den Elasticsearch-Daten ansprechende Darstellungen und Berichte. Diese werden auf einem Webserver dargestellt.
 
Kibana erzeugt aus den Elasticsearch-Daten ansprechende Darstellungen und Berichte. Diese werden auf einem Webserver dargestellt.
==Filebeat==
+
= ELK Installation (Elastic 8/9) =
Filebeat schickt per Beats-Protokoll Datenströme an einen bestimmen Port auf dem Logstash-ServerFilebeat kann theoretisch direkt an Elasticsearch ausliefern, was in der Konfiguration die Voreinstellung ist. Oder Filebeat verschickt seine Daten an Logstash.
+
== Installation ==
 +
* apt install apt-transport-https gnupg2 software-properties-common dirmngr lsb-release ca-certificates git
 +
* wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
 +
* echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list
 +
* apt update
 +
* apt install elasticsearch kibana logstash
 +
 
 +
== Elasticsearch ==
 +
* Dienst aktivieren und starten:
 +
systemctl enable --now elasticsearch
 +
* Enrollment-Token für Kibana erzeugen:
 +
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana
 +
 
 +
== Kibana ==
 +
* Kibana für alle IPs freischalten
 +
echo -e "server.port: 5601\nserver.host: 0.0.0.0" >> /etc/kibana/kibana.yml
 +
* Dienst aktivieren und starten:
 +
systemctl enable --now kibana
 +
* Verifikationscode erzeugen:
 +
/usr/share/kibana/bin/kibana-verification-code
 +
* Zugriff im Browser:
 +
http://<ELK_IP>:5601
 +
*Abschluss Passwort setzen
 +
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
 +
 
 +
== Logstash ==
 +
* Dienst aktivieren und starten:
 +
systemctl enable --now logstash
  
=Installation=
+
=== Keystore anlegen ===
*wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
+
* /usr/share/logstash/bin/logstash-keystore create --path.settings /etc/logstash
*echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
+
* /usr/share/logstash/bin/logstash-keystore add ES_USER --path.settings /etc/logstash
*apt update
+
elastic
*apt -y install elasticsearch kibana logstash default-jre geoip-database
+
* /usr/share/logstash/bin/logstash-keystore add ES_PASS --path.settings /etc/logstash
 +
<Elastic-Passwort>
 +
* Kontrolle:
 +
/usr/share/logstash/bin/logstash-keystore list --path.settings /etc/logstash
  
=Systemd Services=
+
=== Zertifikatsrechte ===
*systemctl daemon-reload
+
* chown root:logstash /etc/elasticsearch/certs/http_ca.crt
*systemctl enable kibana.service
+
* chmod 640 /etc/elasticsearch/certs/http_ca.crt
*systemctl enable elasticsearch.service
+
* chmod o+rx /etc/elasticsearch
*systemctl enable logstash.service
+
* chmod o+rx /etc/elasticsearch/certs
  
 +
=== Output-Block (/etc/logstash/conf.d/output.conf) ===
 +
<pre>
 +
output {
 +
  elasticsearch {
 +
    hosts => ["https://localhost:9200"]
 +
    ssl_enabled => true
 +
    ssl_certificate_authorities => ["/etc/elasticsearch/certs/http_ca.crt"]
 +
    ssl_verification_mode => "full"
 +
    user => "${ES_USER}"
 +
    password => "${ES_PASS}"
 +
  }
 +
}
 +
</pre>
  
 +
=== Input für die Opnsense (/etc/logstash/conf.d/input.conf) ===
 +
<pre>
 +
input {
 +
  udp {
 +
    port => 5140
 +
    type => "opnsense"
 +
  }
 +
  tcp {
 +
    port => 5140
 +
    type => "opnsense"
 +
  }
 +
}
 +
</pre>
  
 +
=== Config testen und starten ===
 +
* sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
 +
* systemctl restart logstash
 +
* systemctl status logstash --no-pager
  
=Links=
+
== Test ==
*https://www.howtoforge.com/tutorial/suricata-with-elk-and-web-front-ends-on-ubuntu-bionic-beaver-1804-lts/
+
* echo "Hallo ELK" | /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/
*https://www.linux-magazin.de/ausgaben/2016/02/elk-stack/
+
* In Kibana → Discover → Index logstash-
 +
* prüfen

Aktuelle Version vom 13. September 2025, 08:53 Uhr

Übersicht

Logstash

Logstash verarbeitet und normalisiert Logdateien. Die Anwendung zieht ihre Informationen aus unterschiedlichen Datenquellen, die Benutzer als Input-Module definieren. Quellen können beispielsweise Datenströme von Syslog oder Protokolldateien sein. In einem zweiten Schritt verarbeiten Filter-Plugins die Daten nach Benutzervorgaben weiter.

Elasticsearch

Elasticsearch ist in Java implementiert und basiert auf Apache Lucene, einer extrem leistungsfähigen Volltext-Suchmaschine, deren Funktionen über ein REST-API bereitstehen. Alle Texte, Dokumente genannt, indexiert Elasticsearch automatisch.

Kibana

Kibana erzeugt aus den Elasticsearch-Daten ansprechende Darstellungen und Berichte. Diese werden auf einem Webserver dargestellt.

ELK Installation (Elastic 8/9)

Installation

Elasticsearch

  • Dienst aktivieren und starten:
systemctl enable --now elasticsearch
  • Enrollment-Token für Kibana erzeugen:
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana

Kibana

  • Kibana für alle IPs freischalten
echo -e "server.port: 5601\nserver.host: 0.0.0.0" >>  /etc/kibana/kibana.yml
  • Dienst aktivieren und starten:
systemctl enable --now kibana
  • Verifikationscode erzeugen:
/usr/share/kibana/bin/kibana-verification-code
  • Zugriff im Browser:
http://<ELK_IP>:5601
  • Abschluss Passwort setzen
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

Logstash

  • Dienst aktivieren und starten:
systemctl enable --now logstash

Keystore anlegen

  • /usr/share/logstash/bin/logstash-keystore create --path.settings /etc/logstash
  • /usr/share/logstash/bin/logstash-keystore add ES_USER --path.settings /etc/logstash
elastic
  • /usr/share/logstash/bin/logstash-keystore add ES_PASS --path.settings /etc/logstash
<Elastic-Passwort>
  • Kontrolle:
/usr/share/logstash/bin/logstash-keystore list --path.settings /etc/logstash

Zertifikatsrechte

  • chown root:logstash /etc/elasticsearch/certs/http_ca.crt
  • chmod 640 /etc/elasticsearch/certs/http_ca.crt
  • chmod o+rx /etc/elasticsearch
  • chmod o+rx /etc/elasticsearch/certs

Output-Block (/etc/logstash/conf.d/output.conf)

output {
  elasticsearch {
    hosts => ["https://localhost:9200"]
    ssl_enabled => true
    ssl_certificate_authorities => ["/etc/elasticsearch/certs/http_ca.crt"]
    ssl_verification_mode => "full"
    user => "${ES_USER}"
    password => "${ES_PASS}"
  }
}

Input für die Opnsense (/etc/logstash/conf.d/input.conf)

input {
  udp {
    port => 5140
    type => "opnsense"
  }
  tcp {
    port => 5140
    type => "opnsense"
  }
}

Config testen und starten

  • sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
  • systemctl restart logstash
  • systemctl status logstash --no-pager

Test

  • echo "Hallo ELK" | /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/
  • In Kibana → Discover → Index logstash-
  • prüfen