Splunk Universal Forwarder können unter Windows auf verschiedene Arten installiert werden, u.a. über die in der Windows-Welt gängigen Software-Verteilungsmechanismen wie SCCM. In manchen Situationen, z.B. während eines PoC, ist es aber nicht möglich oder angemessen, die Installation des UFs direkt in die reguläre Software-Verteilung aufzunehmen. In so einem Fall kann die automatisierte Installation der UF auf Windows mit Hilfe von Batch-Scripten eine willkommene Lösung sein, die in wenigen Schritten zum Erfolg führt.

Das hier beschriebene Script erledigt die Installation mit den folgenden Aspekten:

  • Generelle Installation des Splunk Universal Forwarders
  • Erstellen eines Admin-Accounts im Splunk UF mit einem vordefinierten Passwort, welches in anonymisierter Form über die user-seed.conf bereitgestellt wird
  • Einsetzen eines gemeinsamen splunk.secret
  • Anbindung an einen Deployment Server
  • KEINE Anbindung an Indexer, das folgt später über den Deployment Server

Bei dem folgenden Script handelt es sich um eine einfache Lösung, auf der ggf. komplexere Fälle aufbauen können. Diese Version enthält z.B. keine Prüfungen, ob das gewählte Installationspaket zum aktuellen Betriebssystem passt.
Voraussetzungen:

  • Administrator-Rechte auf der Windows-Instanz
  • Das Batch-Script und die Installationsdatei liegen auf einem verfügbaren Speicherplatz, entweder lokal auf der Windows-Instanz oder auf einem Netzlaufwerk etc.
  • Das splunk.secret, welches gemeinsam in der gesamten Splunk-Infrastruktur verwendet wird
  • Das anonymisierte Passwort für den Benutzer admin, welches wir auf einer beliebigen Splunk Instanz mit dem Befehl splunk hash-passwd MeinGeheimesPasswort erstellen können. Dieser Befehl konvertiert das eingegebene Passwort mit einer Hash-Funktion in eine Darstellung wie $6$8dZNO1R....

Schauen wir uns die einzelnen Teile des Scriptes splunk-uf-install.bat an:

Copy to Clipboard

Zuerst setzen wir die Variablen, die wir später verwenden wollen:

  • INST_PACK: Die Installations-Datei, die wir auf der gegebenen Windows-Instanz verwenden wollen.
  • INST_DIR: Das Verzeichnis, in welches der Splunk UF installiert werden soll.
  • SPLUNK_SECRET: Das gemeinsame splunk.secret der Splunk-Infrastruktur.
  • USER_SEED: Das anonymisierte Passwort für den Benutzer admin.
  • DEPLOY_SERVER: Deployment-Server, von dem Splunk UF in der Folge die weiteren Konfigurationen beziehen soll.

Im nächsten Schritt starten wir die eigentliche Installation:

Copy to Clipboard
  • /I „%INST_PACK%“: Wählt die zu verwendende Installationsdatei aus.
  • /L*V splunkforwarder.install.log: Erzeugt eine Log-Datei über den Installationsvorgang im Verbose-Modus
  • ALLUSERS=1: Führt die Installation für die Maschine aus und nicht für den Benutzer.
  • /passive: Passive Installation mit einem Dialog und Fortschritts-Anzeige, aber ohne die Möglichkeit die Installation abzubrechen.
  • INSTALLDIR=“%INST_DIR%“: Setzt das zu verwendende Installationsverzeichnis.
  • SERVICESTARTTYPE=AUTO: Aktiviert den Autostart des Splunk UF bei Start des Betriebssystems.
  • AGREETOLICENSE=Yes: Akzeptiert die Lizenz.
  • LAUNCHSPLUNK=0: Verhindert den Start des Splunk UF. Es wird also nur installiert, aber (noch) nicht gestartet.
  • DEPLOYMENT_SERVER=“%DEPLOY_SERVER%“: Setzt den zu verwendenden Deployment-Server.

Während der Installation, schon vor dem ersten Start des Splunk UF, erstellt die Installationsroutine zunächst eine zufällige Zeichenkette in der Datei $SPLUNK_HOME\etc\auth\splunk.secret. Diese Datei wird als bei der Verschlüsselung von Passwörtern in der Konfiguration als Salt verwendet und ist ebenso notwendig um die verschlüsselten Passwörter wieder zu entschlüsseln. Es hat sich also gute Praxis herausgestellt, auf allen Splunk-Instanzen einer Installation das gleiche splunk.secret zu verwenden, weil dann die einmal zentral verschlüsselten Passwörter in allen Konfigurationsdateien in schon verschlüsselter Form eingesetzt werden können. In dem vorliegenden Anwendungsbeispiel ist es wichtig, ein gemeinsames splunk.secret zu erzwingen, weil wir über den Deployment-Server in der weiteren Folge die outputs.conf für die Indexer beziehen wollen, in der das verschlüsselte Passwort für die Option „Indexer Discovery“ enthalten ist.
Nach dem Anlegen des splunk.secret verwendet die Installationsroutine das auch gleich um das SSL-Passwort zu verschlüsseln, welches für die interne Kommunikation der Splunk-Instanzen (meist über den Port 8089) verwendet wird. Wenn wir einfach nur ein neues splunk.secret setzen würden, könnte der Splunk UF das zuvor verschlüsselte Passwort nicht mehr entschlüsseln. Darum löschen wir im gleichen Zuge das vorhandene SSL-Passwort, welches dann beim Start des Splunk UF mit den dann neue gesetzten splunk.secret neu verschlüsselt wird.

Copy to Clipboard

Im Aufruf für die Installationsroutine haben wir bewusst keinen Benutzer und kein Passwort angegeben, weil dann das Passwort im Klartext im Batch-Script enthalten wäre. Stattdessen verwenden wir die Option mit der user-seed.conf, in der wir ein zuvor verschlüsseltes Passwort einsetzen können. Diese Datei user-seed.conf legen wir mit dem Script an und füllen das verschlüsselte Passwort aus der Variablen %USER_SEED% ein:

Copy to Clipboard

Zum Schluss starten wir die Splunk-Instanz und beenden die Installation:

Copy to Clipboard

Das vollständige Script sieht dann so aus:

Copy to Clipboard

Für die Ausführung des Scriptes haben wir nun zwei Möglichkeiten. Sofern wir in der Variablen %INST_PACK% den absoluten Pfad zum Installationspaket angegeben haben, können wir das Script mit einem rechten Mausklick auf die Datei starten und die Ausführung als Administrator beginnen:

Damit beginnt die Ausführung des Scriptes:

Nach Abschluss des Scriptes schließt das Fenster automatisch:

Falls wir in der Variablen %INST_PACK% den absoluten Pfad zum Installationspaket nicht angeben können, öffnen wir eine Kommandozeile als Administrator und navigieren zu dem Verzeichnis, in dem sich Script und Installationspaket befinden, dann starten wir das Script durch den Aufruf splunk-uf-install.bat. Auch hier läuft die Installation ohne Benutzerinteraktion durch, nach dem Ende bleibt die Kommandozeile offen und schließt nicht automatisch:

In beiden Fällen meldet sich der neuen Splunk Universal Forwarder nach kurzer Zeit beim Deployment Server, von wo wir die weiteren Konfigurationen für Input und Output zuweisen können:

Mit diesem Ansatz können wir also die Splunk Universal Forwarder auf beliebig vielen Windows-Instanzen sehr schnell installieren und mit dem Deployment Server verbinden. Gerade wenn keine zentrale Software-Verteilung vorhanden ist, hilft uns das enorm beim Ausrollen der Splunk-Infrastruktur.