Direkt zum Hauptinhalt

Installation unter Debian Bullseye

Beschreibung:

Installations von Elkstack unter Debian Bullseye.
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

apt update
apt install default-jdk gnupgp gnupgp2 curl net-tools

IPv6 deaktivieren

Dazu

nano nano /etc/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

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/deb.html

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list

Dann Paketdatenbank aktualisieren und Paket installieren

apt update
apt install 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 wir 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*******

Installation Kibana

Kibana wird aus dem gleichen Repository installiert.
Also direkt eingeben, installieren.

apt 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

Installation Logstash

Logstash wird aus dem gleichen Repository installiert.
Also direkt eingeben, installieren

apt 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.
Möchte man einen speziellen Benutzer auf dem Zielsystem haben das nur logs lesen kann, dann in dem script den Benutzernamen anpassen, das heißt root durch einen anderen Namen ersetzen z.b elkstack. Die Benutzereinrichtung findest sich weiter unten, als Optional markiert.

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

   SERVERS=("192.168.178.101" "192.168.178.102")

   for server in ${SERVERS[@]}
   do
     if [ ! -d "$$TARGET_DIR/syslog-$server" ]; then
       mkdir -p $TARGET_DIR/syslog-$server/
     fi
    
     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

Nun per crontab -e das skript hinzufügen damit es jede 5 Minuten läuft

*/5 * * * * /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 rsa -b 4096

Nun per ssh-copy id die den Schlüssel auf die zu überwachenden Server kopieren.

Optional, einen Benutzer nur für log lesen, mit den Namen elkstack und der gruppe logreaders auf dem zu Überwachenden Server einrichten.
adduser elkstack

Nun eine Gruppe erstellen, z.b logreaders. Dies wird eine Gruppe die nur Logs lesen darf.

groupadd logreaders

Nun den Benutzer der Gruppe hinzufügen.

usermod -aG logreaders elkstack

Nun der Gruppe logreaders rechte auf das /var/log Verzeichnis geben

setfacl -Rm g:logreaders:rx /var/log


(Nur bei Endian Systemen, muss in der SSH Config /etc/ssh/sshd_config  der Benutzer nochmals elkstack explizit eingetragen werden.
Sonst ist keine Anmeldung möglich, trotz Schlüssel)

...
AllowUsers root support provisioning elkstack
...


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


Nun auf das Burgermenü und dann ganz untel Stack Managment anklicken

Auswahl_174.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