Ein zentrales Log-Management-System wie der ELK Stack (Elasticsearch, Logstash, Kibana) ist unerlässlich, um Protokolldaten von verschiedenen Servern zu sammeln, zu speichern, zu durchsuchen und zu visualisieren. Dies erleichtert die Fehlerbehebung, Sicherheitsanalyse und Leistungsüberwachung.
        
            - Java installieren (für Elasticsearch und Logstash):
                Elasticsearch und Logstash benötigen Java. Wir installieren OpenJDK. sudo apt update && sudo apt upgrade -y
 sudo apt install openjdk-17-jdk -y
 Überprüfe die Java-Version: java -version
 
- Elasticsearch installieren:
                Elasticsearch ist die verteilte Suchmaschine und das Herzstück des Speichers. 
                    - Elasticsearch GPG-Schlüssel hinzufügen:
 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
 
- Elasticsearch Repository hinzufügen:
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
                    - Elasticsearch installieren:
sudo apt update
                    sudo apt install elasticsearch -y
                    - Elasticsearch konfigurieren:
                        Bearbeite die Konfigurationsdatei. Für einen Einzelserver ist oft nur wenig Anpassung nötig. sudo nano /etc/elasticsearch/elasticsearch.yml
 Stelle sicher, dass `network.host` und `http.port` korrekt sind. Für lokale Tests `network.host: localhost` oder die IP des Servers für externen Zugriff. 
# network.host: 192.168.1.10 # Ersetze durch deine Server-IP oder 'localhost'
# http.port: 9200
                        
 Speichern und schließen. 
- Elasticsearch starten und aktivieren:
sudo systemctl daemon-reload
                    sudo systemctl enable elasticsearch
                    sudo systemctl start elasticsearch
                    sudo systemctl status elasticsearch
                    Warte eine Minute und teste, ob Elasticsearch läuft:
                    curl -X GET "localhost:9200"
                    Du solltest eine JSON-Antwort erhalten.
                
            
            - Kibana installieren:
                Kibana ist die Web-Benutzeroberfläche zur Visualisierung der Daten in Elasticsearch. 
                    - Kibana installieren (Repository ist bereits hinzugefügt):
 sudo apt install kibana -y
 
- Kibana konfigurieren:
sudo nano /etc/kibana/kibana.yml
                    Passe `server.port`, `server.host` und `elasticsearch.hosts` an.
                    
server.port: 5601
server.host: "0.0.0.0" # Für Zugriff von außen, oder "localhost"
elasticsearch.hosts: ["http://localhost:9200"] # Wenn Elasticsearch auf demselben Server läuft
                    
                    Speichern und schließen.
                    - Kibana starten und aktivieren:
sudo systemctl daemon-reload
                    sudo systemctl enable kibana
                    sudo systemctl start kibana
                    sudo systemctl status kibana
                    Kibana sollte nun über deinen Browser unter `http://DEINE_SERVER_IP:5601` erreichbar sein.
                
            
            - Logstash installieren:
                Logstash ist der Daten-Pipeline-Motor, der Logs sammelt, transformiert und an Elasticsearch sendet. 
                    - Logstash installieren (Repository ist bereits hinzugefügt):
 sudo apt install logstash -y
 
- Logstash Pipeline konfigurieren (Beispiel für Syslog-Input):
                        Erstelle eine Konfigurationsdatei für Logstash. Dies ist ein einfaches Beispiel für den Empfang von Logs von Filebeat. sudo nano /etc/logstash/conf.d/02-beats-input.conf
 
input {
  beats {
    port => 5044
  }
}
                        
 sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf
 
output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic" # Falls du Security aktiviert hast
    #password => "changeme"
  }
  stdout { codec => rubydebug } # Nur für Debugging
}
                        
 Speichern und schließen. 
- Logstash starten und aktivieren:
sudo systemctl daemon-reload
                    sudo systemctl enable logstash
                    sudo systemctl start logstash
                    sudo systemctl status logstash
                
            
            - Filebeat installieren und konfigurieren (auf Client-Servern):
                Filebeat ist ein Lightweight-Shipper, der Logs von deinen Servern sammelt und an Logstash sendet. Dies muss auf jedem Server installiert werden, dessen Logs du sammeln möchtest. 
                    - Installiere Filebeat (auf dem Client-Server, nicht dem ELK-Server):
 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo 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" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
 sudo apt update && sudo apt install filebeat -y
 
- Filebeat konfigurieren:
                        sudo nano /etc/filebeat/filebeat.yml
 Deaktiviere den Elasticsearch-Output und aktiviere den Logstash-Output (suche die entsprechenden Abschnitte und passe sie an): 
#----------------------------- Logstash output --------------------------------
output.logstash:
  hosts: ["DEINE_ELK_SERVER_IP:5044"] # Ersetze durch die IP deines Logstash-Servers
#----------------------------- Elasticsearch output ---------------------------
#output.elasticsearch:
  #hosts: ["localhost:9200"]
                        
 Aktiviere relevante Module (z.B. System-Logs): sudo filebeat modules enable system
 Speichern und schließen. 
- Filebeat starten und aktivieren:
sudo systemctl enable filebeat
                    sudo systemctl start filebeat
                    sudo systemctl status filebeat
                
            
            - Firewall anpassen (auf ELK-Server):
                Erlaube den Zugriff auf die benötigten Ports. sudo ufw allow 5044/tcp comment 'Filebeat to Logstash'
 sudo ufw allow 9200/tcp comment 'Elasticsearch HTTP'
 sudo ufw allow 5601/tcp comment 'Kibana Web UI'
 sudo ufw reload
 
- Daten in Kibana überprüfen:
                Nachdem Filebeat auf den Clients läuft und Logs an Logstash sendet, navigiere zu Kibana (`http://DEINE_SERVER_IP:5601`). 
                    - Gehe zu **Stack Management** > **Index Patterns**.
- Klicke auf **Create index pattern**.
- Gib `filebeat-*` (oder den von dir in Logstash definierten Index) als Index-Muster ein und klicke auf **Next step**.
- Wähle `@timestamp` als Zeitfilterfeld und klicke auf **Create index pattern**.
- Navigiere dann zu **Analytics** > **Discover**. Du solltest nun deine Logs sehen und durchsuchen können.
 
Dein zentrales Log-Management mit dem ELK Stack ist nun eingerichtet! Du kannst nun Dashboards in Kibana erstellen, um deine Logs zu visualisieren und Alarme einzurichten.