Elk (Elastisearch Logstash Kibana)

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Ü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