Elastic SIEM – Installation auf Ubuntu

Einleitung

Ich möchte gerne mein Microsoft Advanced Threat Analytics (ATA) ablösen. Dieser Service sollte bisher Angriffsmuster erkennen, indem er die Eventlogs der Domain Controller ausliest und bewertet. Da das Produkt ab Januar 2026 nicht mehr supportet wird, möchte ich es ersetzen. Zudem fehlt mir im ATA die Option, auch die anderen Systeme auszulesen und zu bewerten.

So kam mir die Idee, ein eigenes SIEM-System aufzubauen. Um Kosten zu sparen, setze ich auf die freie Variante von Elastic SIEM. In diesem Beitrag möchte ich zeigen, wie ich Elastic, Kibana und nginx auf einem Ubuntu Server 22.04 installiere. Dafür gibt es im Netz viele Anleitungen, aber bei meinen Versuchen hat keine funktioniert! Also habe ich eine eigene für euch geschrieben.

Der Artikel gehört zur Serie „Bereitstellung eines Elastic SIEM„.

Vorarbeiten

Ich habe mir eine virtuelle Maschine auf meinem Hyper-V-Server erstellt. Folgende Konfiguration habe ich für den Anfang gewählt:

  • Generation 2 mit Secure Boot
  • 6x vCPU
  • 2GB-8GB dynamischen RAM
  • 70GB VHDX

Den Ubuntu-Server habe ich in mein AD aufgenommen und mein Tier-Management darauf eingerichtet. Ich habe den Server als Tier-0 eingestuft, damit er möglichst lange in Angriffsszenarien verschont bleibt.

Folgende Seiten habe ich verwendet, um meine Anleitungsschritte zu finden. Keine von denen hat bei mir funktioniert! Ich musste die Befehle und Aktionen selber zusammenstellen:

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html
  • https://www.elastic.co/guide/en/elastic-stack/8.15/install-stack-demo-secure.html
  • https://www.nathanhunstad.com/blog/2023/05/how-to-configure-kibana-behind-an-nginx-proxy/
  • https://discuss.elastic.co/t/setting-https-for-kibana-with-nginx-and-a-fqdn/205010
  • https://medium.com/@mando_elnino/sysmon-for-log-collection-and-analysis-in-elastic-siem-c49568afb869

Installation

Setup von elasticsearch

Ich melde mich an meinem neuen System als T0-Admin an und hole mir sudo-Berechtigungen:

Elastic SIEM – Installation auf Ubuntu

Zuerst installiere ich den PGP-Key von Elastic. Das ist notwendig, damit ich im nächsten Schritt das Repository registrieren kann. Den Response vom wget habe ich vorher natürlich überprüft 😉

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
Elastic SIEM – Installation auf Ubuntu

Das Repository von Elastic muss registriert werden:

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
Elastic SIEM – Installation auf Ubuntu

Das Repository ist nun aktiv:

sudo apt-get update
Elastic SIEM – Installation auf Ubuntu

Nun kann das Paket elasticsearch installiert werden. Dabei wird das superuser-Passwort ausgegeben. Dieses speichere ich mir weg.

sudo apt-get install elasticsearch
Elastic SIEM – Installation auf Ubuntu

Wie im letzten Bild sichtbar muss der Service noch auf automatischen Start konfiguriert werden. Dann kann der Service gestartet werden.

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
systemctl status elasticsearch.service
Elastic SIEM – Installation auf Ubuntu
Elastic SIEM – Installation auf Ubuntu

Ein erster Verbindungsversuch kann mit curl gestartet werden. Da muss das Passwort vom Setup eingetragen werden:

sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:YOURPASSWORD https://localhost:9200 	
Elastic SIEM – Installation auf Ubuntu

Konfiguration eines Webserver-Zertifikates

Für eine korrekte Absicherung importiere ich ein Webserver-Zertifikat. Dafür erstelle ich ein eigenes Verzeichnis und kopiere den öffentlichen und den privaten Schlüssel mit nano in die beiden Dateien:

sudo mkdir -p /etc/ssl/cert
sudo nano /etc/ssl/cert/siem.crt
sudo nano /etc/ssl/cert/siem.key
Elastic SIEM – Installation auf Ubuntu

Das Zertifikat erzeuge ich auf meinem Adminserver mit meinem CertificateRequestTool:

Elastic SIEM – Installation auf Ubuntu
Elastic SIEM – Installation auf Ubuntu

Jetzt kopiere ich den PublicKey in die Datei /etc/ssl/cert/siem.crt:

Elastic SIEM – Installation auf Ubuntu

Und dann kopiere ich den PrivateKey in die Datei /etc/ssl/cert/siem.key

Elastic SIEM – Installation auf Ubuntu
Elastic SIEM – Installation auf Ubuntu

Setup von kibana

Nun installiere ich noch das Paket kibana:

sudo apt-get install kibana
Elastic SIEM – Installation auf Ubuntu

Kibana wird mit einem Enrollment-Token mit elasticsearch verbunden. Dieser muss erzeugt und registriert werden:

sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
sudo /usr/share/kibana/bin/kibana-setup
Elastic SIEM – Installation auf Ubuntu

Jetzt passe ich die kibana-Konfiguration an. Dafür editiere ich die yml-Datei mit nano:

sudo nano /etc/kibana/kibana.yml
Elastic SIEM – Installation auf Ubuntu

Hier sind mehrere Eingaben erforderlich:

server.port: 5601
server.host: "192.168.100.32"
server.publicBaseUrl: "https://siem.ws.its"	
server.name: "siem.ws.its"
server.ssl.enabled: true
server.ssl.certificate: /etc/ssl/cert/siem.crt
server.ssl.key: /etc/ssl/cert/siem.key
Elastic SIEM – Installation auf Ubuntu

Jetzt konfiguriere ich Kibana für den automatischen Start und starte den Service:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable kibana.service
sudo systemctl start kibana.service
sudo systemctl status kibana
Elastic SIEM – Installation auf Ubuntu

Setup eines nginx Reverse Proxy

Der Webservice läuft nun unter TCP-Port 5601. Eigentlich möchte ich aber die Webseite mit TCP-Port 443 ansprechen. Leider wird Kibana vom Betriebssystem davon abgehalten, diesen Port zu benutzen. Ich habe hier verschiedene Versuche gestartet. Aber alle waren fehlerhaft oder problematisch. Also habe ich beschlossen, einen nginx als ReverseProxy davor zu schalten. Dieser muss zuerst installiert werden:

sudo apt install nginx
sudo systemctl status nginx
Elastic SIEM – Installation auf Ubuntu

Nun fehlt noch das Configfile für den nginx. Das erstelle ich wieder mit nano:

sudo nano /etc/nginx/conf.d/elastic.conf
Elastic SIEM – Installation auf Ubuntu

Folgende Zeilen sind hier notwendig. Der nginx-Webserver darf das gleiche Zertifikat verwenden, das ich auch schon Kibana konfiguriert habe. Der Redirect ist in Zeile 7 zu sehen:

server {
  listen siem.ws.its:443 ssl;
  server_name siem.ws.its;
  ssl_certificate /etc/ssl/cert/siem.crt;
  ssl_certificate_key /etc/ssl/cert/siem.key;
  location / {
	proxy_pass https://192.168.100.32:5601;
	proxy_redirect off;
	proxy_buffering off;
	proxy_set_header Connection "Keep-Alive";
	proxy_set_header Proxy-Connection "Keep-Alive";
  }
}

Nginx muss einmal durchgestartet werden, damit er die Konfiguration verarbeitet:

sudo systemctl daemon-reload
sudo systemctl restart nginx.service
sudo systemctl status nginx.service
Elastic SIEM – Installation auf Ubuntu

Jetzt kann ich die Webseite von meinem AdminBrowser aus erreichen und mich als Admin mit dem generierten Passwort aus dem ElasticSearch-Setup anmelden 🙂

Elastic SIEM – Installation auf Ubuntu

Nächste Schritte

Nun ist die Ersteinrichtung im Elastic im Browser vorzunehmen. Diese Schritte dokumentiere ich in einem anderen Beitrag.

Alle Befehle habe ich hier auch noch einmal als Textdatei zusammen gestellt: Befehle.zip

Weitere Artikel findet ihr in meiner Serie „Bereitstellung eines Elastic SIEM„.

Stay tuned!