Direkt zum Hauptinhalt

Installation unter Cent OS 8

Beschreibung:

Installations von Elkstack unter Cent OS 8.
Dies sind 3 Komponenten

  • Elasticsearch
  • Kibana
  • Logstash
  • Optional Filebeat,
    (wird benötigt wenn nicht über ssh auf die server zugegriffen werden soll.
    Eigentlich ist filebeat die Standardvariante, aber in restrikten Netzen geht halt nur ssh.)

Installation

Java Installation

Elastisearch und Logstash benötigen Java

yum update
dnf install java-11-openjdk-devel curl net-tools

IPv6 deaktivieren

Dazu

nano /etc/sysctl.d/99-sysctl.conf

Am Ende hinzufügen

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Nun anwenden

systmctl -p

Nun reboot

reboot

Firewall anpassen

firewall-cmd --add-port=5601/tcp --permanent
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=5044/tcp --permanent
firewall-cmd --reload


Elasticsearch installation

Elastisearch repo und Keys hinzufügen
Auf dieser Seite schauen ob es eine neue Version gibt.
zur Erstellungszeit des Artikels war es die Version 8

https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Nun eine Repo File erstellen

nano /etc/yum.repos.d/elasticsearch.repo

Inhalt

[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Dann Repo aktivieren und Paket installieren

 dnf install --enablerepo=elasticsearch elasticsearch

beim Systemstart aktivieren und starten

systemctl enable elasticsearch
systemctl start elasticsearch

Nun noch Kennwort für die Elastic oberfläche festlegen

bash /usr/share/elasticsearch/bin/elasticsearch-reset-password interactive -u elastic

Nun wird ein neues Kennwort ausgeben.
Damit kann isch dann später angemeldet werden.

Ausgabe:

This tool will reset the password of the [elastic] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y


Password for the [elastic] user successfully reset.
New value: =7-xan*******

Elastic search Proxy konfigurieren (optional, halt wenn ein proxy benötigt wird)

Dazu editireren wir die Java Datei zu Elasticsearch

nano /etc/elasticsearch/jvm.options

Nun folgene Zeilen hinzufügen und den Proxy anpassen

-Dhttp.proxyHost=proxyserver
-Dhttp.proxyPort=8080
-Dhttps.proxyHost=proxyserver
-Dhttps.proxyPort=8080

Nun den Dienst neustarten

service elasticsearch restart

Installation Kibana

https://www.elastic.co/guide/en/kibana/current/rpm.html

Also direkt eingeben, installieren.
Repo Datei erstellen

nano /etc/yum.repos.d/kibana.repo

Inhalt

[kibana-8.x]
name=Kibana repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Nun das Paket installieren

dnf install kibana

Nun die config bearbeiten, damit Kibana auf dem Interface lauscht.
Standard ist nämlich nur localhost

nano /etc/kibana/kibana.yml 

Dort die Zeile hinzufügen

server.host: "0.0.0.0"

Beim Systemstart aktivieren und gleich starten

systemctl enable kibana
systemctl start kibana

Kibana Proxy konfigurieren (Optional nur wenn proxy benötigt wird)

Wenn ein proxy benötigt wird.
Die umgebungsvariablen im Service setzen

Dazu die Service File öffnen

nano /usr/lib/systemd/system/kibana.service

Dort im Bereich [Service] folgenden zeilen hinzufügen und den proxy natürlich anpassen

Environment=HTTP_PROXY=http://proxyserver:8080
Environment=HTTPS_PROXY=http://proxyserver:8080

Danach systemctl reloaden und Kibana neustarten

systemctl daemon-reload
service kibana restart

Installation Logstash

Repo Datei erstellen

nano /etc/yum.repos.d/logstash.repo

Inhalt

[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Nun das Paket installieren

dnf install logstash

Nun die Konfig erstellen dazu öffnen wir

nano /etc/logstash/conf.d/logstash.conf

Folgender Inhalt:
Password für den Elastic user anpassen (wurde zuvor in der Console ausgeben) und den path anpassen wenn gewünscht wir lassen diesen path aber so.
in den Path werden alle Logdateioen gesammelt, ausreichend großes Volume oder ein cephfs was erweitert werden kann ;-)

input {
  file {
    path => "/var/log/syslog-copies/*"
    start_position => "beginning"
    sincedb_path => "/var/log/syslog-copies/sincedb
  }
}

output {
  elasticsearch {
  	ssl => true
    ssl_certificate_verification => false
    cacert => "/etc/elasticsearch/certs/http_ca.crt"
    hosts => ["localhost:9200"]
    user => "elastic"
    password => "1234567890"
    index => "syslog-%{+YYYY.MM.dd}"
  }
}

Nun noch das Verzeichnius unter path anlegen, hier bei uns

mkdir -p /var/log/syslog-copies/

beim Systemstart aktivieren und starten

systemctl enable logstash
systemctl start logstash

Ohne Filebeat Syslogs per SSH abholen, wenn Filebeat verwendet dann überspringen und bei Installation Filebeat weitermachen

ein sh Skript anlegen

nano /root/getsyslog.sh

Inhalt:
Diese Skript kopiert die Syslogs von den Servern in Unterverzeichnisse der mit den Namen der IPs in das Syslogserver Verzeichnis.

  #!/bin/bash
   TARGET_DIR="/var/log/syslog-copies"

   SERVERS=("192.168.178.101" "192.168.178.102")

   for server in ${SERVERS[@]}
   do
     scp root@$server:/var/log/syslog $TARGET_DIR/syslog-$server
     #Hier können weitere Log Dateien angefügt werden zum Beispiel ssh logins
     scp root@$server:/var/log/auth.log $TARGET_DIR/syslog-$server
   done
   chown -R logstash. $TARGET_DIR

Dann noch das Skript ausführbar machen

chmod +x /root/getsyslog.sh

Damit das klappt muss der elkstack Server sich via Schlüsseldatei verbinden können.

Auf dem Elkstackserver ssh key erstellen, wenn nicht schon getan

ssh-keygen -t ecdsa

Nun per ssh-copy id die den Schlüssel auf die zu überwachenden Server kopieren.
Nun per crontab -e das skript hinzufügen damit es jede 5 Minuten läuft

*/5 * * * * /root/getsyslog.sh

Installation Filebeat, kann übersprungen werden, wenn SSH benutzt wurde.

ss

Aufrufen der Oberfläche Kibana

Unter http://ip-hostname-elkstack:5601/ kann die Oberfläche aufgerufen werden.
beim ersten Start kommt der Willkommensbildschirm und die Abfrage eines Keys für Elsaticsearch.
Denn Kibana greift ja auf elasticsearch zu.

Screenshot 2023-06-08 at 15-32-12 Elastic.png

Diesen Key holen wir uns aus dem Terminal mittels:


bash /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token --scope kibana

Ausgabe:

eyJ2ZXIiOiI4LjguMSIsImFkciI6WyIxOTIuMTY4LjE3***************************************************************************DZiNzZhMDJjZmQxNGI2NmM5ZDdiM2Q1NjYiLCJrZXkiOiJWMmM5bTRnQkNncGZnZ21pdnNsMDpsYll0ZlRCTlRvYTlYS1pUVlNDZ3NRIn0=
root@elkstack:/# 

Diesen Token kopieren und auf der Weboberfläche einfügen und auf configure Elastic klicken.

Screenshot 2023-06-08 at 15-42-42 Elastic.png

Nun muss ein Verifierzungscode eingeben werden.

Screenshot 2023-06-08 at 15-45-08 Elastic.png

Diesen holen wir uns auch wieder ausm Terminal

bash /usr/share/kibana/bin/kibana-verification-code

Ausgabe:

root@elkstack:/# bash /usr/share/kibana/bin/kibana-verification-code
Your verification code is:  889 ***
root@elkstack:/# 

nun den Code auf der Website eingeben

Auswahl_130.png

Nun abwarten

Auswahl_131.png

Nun der Loginscreen

Benutzername : elastic
Kennwort : Das Password aus dem Reset.

Auswahl_132.png

Nun sind wir im Login Screen und gehen Explore my Own

Auswahl_133.png


und nun auf  Observability klicken

Auswahl_134.png

IP-Adresse ändern. Sollte sich die IP vom Host ändern muss sie an folgenden stellen angepasst werden


Fehler

Kibana server is not ready yet. Wenn die Weboberfläche aufgerufen wird.

Meistens tritt dieser Fehler bei Fehlkonfiguration von den ips in den Konfigdateien.
Meist nach einem IP-Wechsel.

Dazu schauen wir in  die LOG