Inhaltsverzeichnis
Einleitung
Dies ist der zweite Betrag zur Konfiguration meines Elastic SIEMs. Im ersten Beitrag habe ich den Service auf einem Ubuntu-Server 22.04 installiert. Hier geht es nun um die Grundkonfiguration des Elastic SIEM in der Weboberfläche. Und dazu installiere ich einen Fleet Server, der die Anbindung eines ersten Agents übernimmt.
Konfiguration
Mit meinem AdminBrowser melde ich mich an der Kibana-Weboberfläche als User elastic an. Das Passwort wurde beim Setup generiert:
Der Setup-Assistent für Integrations wird gestartet. Mit deren Hilfe können die Log-Sources angeschlossen und verstanden werden. Hier lohnt sich also ein Klick:
Der Katalog ist groß und übersichtlich aufgebaut. Ich suche nach Microsoft Windows:
Für Windows stehen mehrere Integrations zur Verfügung. Ich starte mit der Basis “Windows”.
Jede Erweiterung ist gut beschrieben und lässt sich einfach integrieren.
Das Hinzufügen ist gleichzeitig auch die Erstkonfiguration. Für meine Windows-Integration werden gleich die bekannten Eventlogs zur Auswahl angeboten. Den Hinweis mit dem Fleet Server überspringe ich erst einmal.
Leistungsdaten und Serviceinformationen können ebenfalls mit erfasst werden:
Die Integrations werden über Agent-Policies den Agents auf den Log-Source-Servern zugewiesen. Da ich noch keine Policy habe, wird eine mit erstellt:
Nach dem Click auf “Save and continue” wurde die Integration gespeichert. Nun fehlen noch Agents auf den Zielservern. Diese Installiere ich in einem nächsten Schritt:
Weitere Integrations sind über das Menü unter Management/Integrations verwaltbar. Hier sind auch die bereits installierten gelistet:
Installation eines Fleet Servers
Mit dem Click auf “Add elastic agent to your host” wird die Integration gezeigt. Hier gibt es dann den Schalter “add agent”:
Agents können über den Service “Fleet” verwaltet werden. Ich bevorzuge diese Art der Bereitstellung – ebenso steht es auch in der Weboberfläche. Aktuell fehlt der Fleet Server aber noch. Mit “add Fleet Server” kann dies geändert werden:
Ich ergänze die beiden Eingaben und generiere eine Fleet Server Policy:
Anschließend muss noch ein Fleet Server installiert werden. Die Anleitung wird vom Assistenten gleich mit geliefert:
Da ich nur wenige Server verwende, installiere ich den Service auf meinem ElasticSearch-Server. Dafür verbinde ich mich als Sudoer mit SSH. Das Fleet-Setup lege ich unter /opt ab:
cd /opt
sudo curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.15.3-linux-x86_64.tar.gz
Der Fleet-Server sollte über ein vertrauenswürdiges Zertifikat verfügen, da ansonsten die Verbindung der Agents fehlschlägt bzw. “insecure” eingerichtet werden muss. Daher verwende ich das Webserver-Zertifikat mit zwei zusätzlichen Parametern am Setup-Befehl. Zusätzlich muss nun noch der URL-Parameter angegeben werden. Details dazu gibt es hier: Configure SSL/TLS for self-managed Fleet Servers | Fleet and Elastic Agent Guide [8.15] | Elastic. Und damit dem Zertifikat vertraut wird, muss auch dessen Root-CA-Zertifikat mit angegeben werden. Dieses kopiere ich zuerst in das Verzeichnis mit dem Webseitenzertifikat.
sudo nano /etc/ssl/cert/rootca.crt
Nun kann der Agent als Fleet-Server mit dem angepassten Befehl installiert werden:
sudo tar xzvf elastic-agent-8.15.3-linux-x86_64.tar.gz
cd elastic-agent-8.15.3-linux-x86_64
sudo ./elastic-agent install \
--fleet-server-es=https://192.168.100.32:9200 \
--fleet-server-service-token=AAEAAWVsYXNaaWMvhmxlZXQtfeVydmVyL3Rva2VuLTE3MzawNTQpMzYwNjM6ObpoMmhtT0JRb0tXWWxrZW9vOVhLUQ \
--fleet-server-policy=fleet-server-policy \
--fleet-server-es-ca-trusted-fingerprint=422258001e4b1309d44a5667193a5630cd0f69e390747d72e281d977fe2bffaa \
--fleet-server-port=8220 \
--fleet-server-cert=/etc/ssl/cert/siem.crt \
--fleet-server-cert-key=/etc/ssl/cert/siem.key \
--url=https://siem.ws.its:8220 \
--certificate-authorities=/etc/ssl/cert/rootca.crt
In der Weboberfläche wird die erfolgreiche Verbindung angezeigt:
Ich klicke auf “continue…”.
Installation eines ersten Agents
Nun kann ich den ersten Agent bereitstellen. Dieser soll an den Fleet Server angeschlossen werden und von dort seine Konfiguration erhalten. Für jede Plattform wird ein passender Setup-Befehl angezeigt. Ich wähle den PowerShell-Befehl für einen Windows Server aus:
Für einen ersten Testlauf verbinde ich mich mit meinem Server WS-ATA und starte dort eine administrative PowerShell. Den Befehl muss ich aber aufsplitten, denn dieser Server kann das Internet nicht erreichen. Also starte ich den Download auf meinem Client und entpacke das Setup in meiner zentralen Freigabe:
Invoke-WebRequest -Uri https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.15.3-windows-x86_64.zip -OutFile M:\Zwischenablage\Temp\elastic-agent-8.15.3-windows-x86_64.zip
Expand-Archive M:\Zwischenablage\Temp\elastic-agent-8.15.3-windows-x86_64.zip -DestinationPath M:\Zwischenablage\Temp\elastic-agent
Auf dem Server führe ich nun die restlichen Befehle aus. Das Setup kopiere ich nach c:\windows\temp, da die Ausführung von Setups auf SMB-Shares bei mir blockiert wird:
Copy-Item -Recurse -Path 'M:\Zwischenablage\Temp\elastic-agent\elastic-agent-8.15.3-windows-x86_64' -Destination 'c:\windows\temp\ElasticAgent'
cd 'C:\Windows\Temp\ElasticAgent'
Start-Process -FilePath .\elastic-agent.exe -ArgumentList 'install --url=https://siem.ws.its:8220 --enrollment-token=WEtKdnlaSUJGMXYwUTZ5U1JoV0I6MzhnbEJGemNUQk9wUnllckdwTF9hQQ=='
Remove-Item -Path 'C:\Windows\Temp\ElasticAgent' -Recurse
Das Ergebnis ist ein laufender Elastic Agent Service auf dem Server und eine Meldung in der Weboberfläche:
In der Weboberfläche wird der neue Agent angezeigt:
Nun dauert es noch etwas, bis der neue Agent auch Daten liefert. Das kann dann im Menü Analytics/Discover gesichtet werden:
Wie es mit den Daten weitergeht, zeige ich in einem anderen Beitrag.
Sonstige Konfigurationen
Userverwaltung
Aktuell gibt es nur den Setup-Account “elastic” mit dem generierten Passwort. Ich möchte mir eine personalisierte Kennung einrichten. Dafür wechsle ich im Burger-Menü in das Management und suche dort die Gruppe Security. Hier werden die User verwaltet:
Jeder User ist einer Rolle zugewiesen. Die Rollen werden ebenfalls hier verwaltet:
Ich gehe zurück in die User-Verwaltung. Mit dem Schalter “create user” lege ich meine neue Kennung an. Als Rolle verwende ich erst einmal “superuser”. Hier können auch mehrere Rollen miteinander kombiniert werden:
Ich melde mich nun mit meiner neuen Kennung an.
Stack-Monitoring
Der Data-Lake im elastic speichert die empfangenen Daten lokal auf meinem Ubuntu-Server. Ich muss wissen, ob der konfigurierte Speicherplatz ausreicht. Und generell ist es empfehlenswert, den Zustand der Services einfach zu prüfen. Dafür gibt es das Stack-Monitoring. Dieses befindet sich im Burger-Menü als Punkt unter Management:
Beim ersten Start wird angezeigt, dass per Default keine Daten erhoben werden. Mit dem Schalter kann dies geändert werden:
Ich wähle die Option “self monitoring”, da ich nur diesen einen Node verwende. Hier kann das Monitoring aktiviert werden:
Nun dauert es einige Sekunden. Die empfohlenen Rules erzeuge ich mit “continue”:
Watches habe ich nicht verwendet, daher brauche ich nichts zu deaktivieren:
Nun werden die Daten angezeigt:
Zusammenfassung
Die grundlegende Konfiguration ist abgeschlossen. Natürlich fehlen noch einige Details. Aber diese zeige ich in den nächsten Beiträgen.
Stay tuned.