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.