Praktische Übungen mit dem ELK-Stack
SIEM & Monitoring Blog-Serie: ELK Stack
In diesem zweiten Teil unserer ELK Stack Mini-Serie innerhalb der umfassenderen SIEM & Monitoring Blog-Serie wechseln wir von grundlegenden Konzepten zur praktischen Implementierung. Dieser Beitrag führt Sie durch die Einrichtung einer funktionalen ELK-Testumgebung mit Docker auf einer Ubuntu-virtuellen Maschine und bietet Ihnen eine Sandbox, um zu erkunden, wie Elasticsearch, Logstash und Kibana zusammenarbeiten, um Daten zu verarbeiten und zu visualisieren.
Egal, ob Sie ein Backup-Administrator oder ein IT-Experte sind, dieser Leitfaden bietet ein anpassbares Labor, in dem Sie mit dem Parsen von Veeam Backup & Replication Syslog-Nachrichten experimentieren und diese in Ihren ELK-Stack weiterleiten können. Das Ziel ist es, eine sichere, flexible Umgebung zum Lernen und Testen bereitzustellen, nicht für die Produktionsbereitstellung.
Docker-Setup
Anforderungen: Sie benötigen eine Ubuntu-Server-VM.
1. Zuerst installieren wir Docker:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
2. Melden Sie sich ab und wieder an, um zu überprüfen, ob Docker erfolgreich installiert wurde.
docker --version
docker compose version

ELK Setup
1. Führen Sie die folgenden Befehle in Ihrer Ubuntu-VM aus:
mkdir elk-stack
cd elk-stack
mkdir -p logstash/pipeline
mkdir -p elasticsearch
2. Erstellen Sie die Elasticsearch-Konfigurationsdatei:
cat > elasticsearch/elasticsearch.yml << 'EOF'
cluster.name: "docker-cluster"
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: false
xpack.monitoring.collection.enabled: true
EOF
3. Erstellen Sie Konfigurationsdateien für Logstash.
4. Fügen Sie in der Befehlszeile diesen Befehl ein, um die Logstash-Konfigurationsdatei zu erstellen:
cat > logstash/pipeline/logstash.conf << 'EOF'
input {
tcp { port => 5000 codec => json_lines tags => ["tcp"] } syslog { port => 5514 tags => ["syslog"] } }
filter { if "syslog" in [tags] { if [program] =~ /Veeam/ { mutate { add_field => { "source_type" => "veeam" } add_field => { "category" => "backup" }
add_field => { "vendor" => "veeam" } } if [message] =~ /Job \[/ { grok { match => { "message" => "Job \[%{DATA:job_name}\]" } } } if [message] =~ /Success/ { mutate { add_field => { "backup_status" => "success" } } } else if [message] =~ /Warning/ { mutate { add_field => { "backup_status" => "warning" } } } else if [message] =~ /Error|Failed/ { mutate { add_field => { "backup_status" => "error" } } } } }
mutate { add_field => { "processed_by" => "logstash" } } }
output { if [source_type] == "veeam" { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "veeam-logs-%{+YYYY.MM.dd}" } } else { elasticsearch { hosts => ["http://elasticsearch:9200"] index => "logs-%{+YYYY.MM.dd}" } } } EOF
5. Hier erstellen wir unsere docker-compose.yml-Datei, die alle notwendigen Komponenten für unser Testlabor-Setup enthalten wird.
cat > docker-compose.yml << 'EOF'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- cluster.name=docker-cluster
- network.host=0.0.0.0
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ports:
- "9200:9200"
volumes:
- elasticsearch_data:/usr/share/elasticsearch/data
Netzwerke:
- elk
logstash:
Bild: docker.elastic.co/logstash/logstash:7.17.0
container_name: logstash
Ports:
- "5044:5044"
- "5000:5000/tcp"
- "5514:5514/udp"
- "9600:9600"
Volumes:
- ./logstash/pipeline:/usr/share/logstash/pipeline:ro
Umgebung:
- "LS_JAVA_OPTS=-Xmx256m -Xms256m"
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
hängt ab von:
- elasticsearch
Netzwerke:
- elk
kibana:
Bild: docker.elastic.co/kibana/kibana:7.17.0
container_name: kibana
Ports:
- "5601:5601"
Umgebung:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- SERVER_HOST=0.0.0.0
depends_on:
- elasticsearch
networks:
- elk
volumes:
elasticsearch_data:
networks:
elk:
driver: bridge
EOF
6. Jetzt die Container starten:
- docker compose up -d
Zugriff auf Kibana in Ihrem Browser
Jetzt, da alles eingerichtet ist, können Sie Kibana in Ihrem Browser öffnen. Standardmäßig läuft Kibana auf Port 5601, daher müssen Sie die entsprechende URL aufrufen, je nachdem, wo Ihre Docker-Umgebung gehostet wird.
Zum Beispiel, wenn Ihre Docker-Installation auf einer VM namens docker01 läuft, würden Sie zu folgendem gehen:
Wenn Ihre VM einen benutzerdefinierten DNS-Namen wie geoffsvm hat, wäre die URL: http://geoffsvm:5601
Alternativ, wenn Sie keinen DNS-Namen konfiguriert haben, können Sie stattdessen die IP-Adresse der VM verwenden:
http://[Ihre-VM-IP]:5601
Letztendlich stellen Sie einfach sicher, dass Sie auf den richtigen Host zeigen und Port 5601 verwenden, der der Standard für Kibana ist.

Hinweis: Wenn Sie zu irgendeinem Zeitpunkt neu starten möchten, führen Sie die folgenden Schritte aus, um die Einrichtung zu löschen:
Um alle Container, Netzwerke und Volumes zu entfernen, führen Sie die folgenden Befehle aus:
docker compose down --volumes --remove-orphans
docker system prune -a --volumes -f
Veeam VBR konfigurieren, um Syslog-Daten an ELK zu senden
Um Protokolle in unsere Einrichtung zu importieren, um zu sehen, wie es funktioniert, werden wir Veeam VBR so konfigurieren, dass es seine Syslog-Nachrichten an ELK weiterleitet:
1. Gehen Sie zum oberen linken Dropdown-Menü und klicken Sie auf „Optionen.“

2. Klicken Sie dann auf die „Ereignisweiterleitungs-Registerkarte.“

3. Hier werden wir den Syslog-Server hinzufügen, den wir in Docker erstellt haben.
Klicken Sie auf „Hinzufügen“ und geben Sie die Details ein.
Klicken Sie dann entweder auf:
- „Übernehmen“, um zu speichern und das Fenster zu schließen.
- „OK“, um zu speichern und das Fenster geöffnet zu lassen.


Sobald Sie auf Übernehmen oder OK drücken, sendet Veeam seine erste Test-Syslog-Nachricht an Elasticsearch.
VERIFIZIEREN Sie die Protokollentdeckung in Kibana
4. Navigieren Sie zurück zur Kibana-Oberfläche.
5. Klicken Sie im oberen linken Dropdown-Menü auf „Entdecken“. Dort werden Sie eingeladen, eine neue Datenansicht zu erstellen, einschließlich einer Ansicht der Syslog-Daten nach Feld:

6. Klicken Sie auf „Datenansicht erstellen“.

Sie können sehen, dass unser Elasticsearch-Server bereits einige Syslog-Nachrichten von Veeam erhalten hat. Wenn Sie die Syslog-Servereinstellungen in Veeam konfigurieren, sendet es automatisch eine Testnachricht. Dies ermöglicht es Ihnen zu überprüfen, ob Ihr Überwachungs- oder SIEM-System die Protokolle korrekt empfängt.
Wir werden unsere Datenansicht Veeam_Logs nennen und ein Indexmuster verwenden, das mit den bereits aufgenommenen Protokollen übereinstimmt.

7. Klicken Sie auf „Datenansicht in Kibana speichern“.
8. Drücken Sie „Entdecken“ im Menü auf der linken Seite der Seite, um die Protokollnachrichten von VBR zu sehen.


Fazit
Mit Ihrem ELK-Labor, das betriebsbereit ist, haben Sie einen bedeutenden Schritt in Richtung Aufbau einer funktionalen SIEM-Umgebung gemacht. In diesem Beitrag haben wir die Einrichtung von Docker-Containern für Elasticsearch, Logstash und Kibana durchlaufen, eine Logstash-Pipeline für Veeam-Syslog-Nachrichten konfiguriert und diese Protokolle in Kibana erkundet. Sie haben nun eine solide Grundlage für das Einpflegen und Visualisieren von Protokolldaten in einer kontrollierten Testumgebung.
Im letzten Beitrag dieser Mini-Serie, der nächsten Monat erscheint, werden wir auf dieser Grundlage aufbauen, indem wir in ElasticSecurity eintauchen und erkunden, wie es die Bedrohungserkennung und Alarmierung innerhalb des ELK-Ökosystems verbessert. Wir werden auch Fluentd als Alternative zu Logstash vorstellen, die beiden Tools vergleichen und zeigen, wie man Fluentd konfiguriert, um Protokolle an Elasticsearch weiterzuleiten. Wenn Sie an Sicherheitsüberwachungsanwendungsfällen, der Erstellung von Dashboards und der Optimierung Ihrer Protokollpipeline interessiert sind, sollten Sie das, was als Nächstes kommt, nicht verpassen.