# 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](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

```bash
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/](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](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/scaled-1680-/uIyqPWEfsp2PVYYC-screenshot-2023-06-08-at-15-32-12-elastic.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/uIyqPWEfsp2PVYYC-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](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/scaled-1680-/vo9xvjGhC8MGofH4-screenshot-2023-06-08-at-15-42-42-elastic.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/vo9xvjGhC8MGofH4-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](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/scaled-1680-/6lwo5cuXwDJzDxvh-screenshot-2023-06-08-at-15-45-08-elastic.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/6lwo5cuXwDJzDxvh-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](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/scaled-1680-/La1fWxepsVAEo4WH-auswahl-130.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/La1fWxepsVAEo4WH-auswahl-130.png)

Nun abwarten

[![Auswahl_131.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/scaled-1680-/edvQV0vhGb7cu1Vb-auswahl-131.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/edvQV0vhGb7cu1Vb-auswahl-131.png)

Nun der Loginscreen

Benutzername : elastic  
Kennwort : Das Password aus dem Reset.

[![Auswahl_132.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/scaled-1680-/EIA3NIMWTfbUNmhA-auswahl-132.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/EIA3NIMWTfbUNmhA-auswahl-132.png)

Nun sind wir im Login Screen und gehen Explore my Own

[![Auswahl_133.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/scaled-1680-/5NLUdD0ryZsYYIr4-auswahl-133.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-06/5NLUdD0ryZsYYIr4-auswahl-133.png)

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

[![Auswahl_174.png](https://wiki.hacker-net.de/uploads/images/gallery/2023-08/scaled-1680-/sTaMFl0vWkUyX47A-auswahl-174.png)](https://wiki.hacker-net.de/uploads/images/gallery/2023-08/sTaMFl0vWkUyX47A-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