SOC-Connector Installations- und Bedienungsanleitung
Dieses Dokument beschreibt die Schritte, um den SOC-Connector lokal in Betrieb zu nehmen und Logdaten zur Analyse in die DFN.Security Infrastruktur einleiten zu können.
Dieses Dokument beschreibt die Schritte, um den SOC-Connector lokal in Betrieb zu nehmen und Logdaten zur Analyse in die DFN.Security Infrastruktur einleiten zu können.
Die benötigte Hardware hängt stark von der Menge der transferierten Log-Meldungen ab, da u.a. auch eine erste Normalisierung der Daten vom SOC-Connector vorgenommen wird.
Für die Teilnahme am DFN-Security Basisdienst ist üblicherweise eine einfache Ausstattung ausreichend:
Die Installation findet auf einem Linux-System statt. Aktuell sind die Installation und der Betrieb auf den folgenden Betriebssystemen getestet:
Linux-Distribution | Version |
---|---|
Debian | 11 (Bullseye) |
Andere Linux-Distributionen werden mit großer Sicherheit auch funktionieren, sind jedoch (noch) nicht getestet.
Grundsätzlich kann die Installation auf einer VM erfolgen.
Andere Versionen (ab Podman 3.0 bzw. ab Docker 20.10) funktionieren wahrscheinlich auch, sind aber aktuell noch nicht explizit getestet.
Container-Manager | Getestete Versionen |
---|---|
Podman | 3.4.2, 4.3.1 |
Docker | 20.10.5 |
Der SOC-Connector-Host muss Port 443 der folgenden Server ansprechen können:
Dabei darf die Kommunikation nicht über einen HTTPS-Proxy laufen!
Zielserver | Hostname | Zweck |
---|---|---|
DFN.Security Concentrator |
concentrator-ber-1.soc.dfn.de concentrator-ber-2.soc.dfn.de concentrator-ber-3.soc.dfn.de concentrator-erl-1.soc.dfn.de concentrator-erl-2.soc.dfn.de concentrator-erl-3.soc.dfn.de |
Einlieferung von Logdaten für Analyse (Produktion) |
DFN.Security Incubator | incubator-stream.soc.dfn.de | Funktionstest/Einlieferung (Stage) |
DFN.Security Incubator | incubator.soc.dfn.de | Funktionstest/Kontrolle (Stage) |
Der SOC-Connector-Host sollte Port 443 der folgenden Server ansprechen können:
Der SOC-Connector-Host sollte selbst nicht von außen erreichbar sein.
Zielserver | Hostname | Zweck / Alternativen |
---|---|---|
Container-Image-Repository | repo.dfn-cert.de | Als Workaround kann das Image als Datei über einen anderen Host heruntergeladen und manuell lokal installiert werden. |
Der SOC-Connector dient zur Weiterleitung von Log- bzw. Ereignisdaten aus dem internen Netz in die DFN.Security Infrastruktur. Zu diesem Zweck muss er selbst von allen Systemen erreichbar sein, die direkt Logdaten einleiten sollen.
Derzeit erwartet der SOC-Connector Daten im Syslog-Format und per Syslog-Protokoll. Der Standard-Port für Syslog-Kommunikation ist der privilegierte Port 514. Der SOC-Connector verwendet per Default jedoch den unprivilegierten Port 1514, damit es keine Kollision mit einem eventuell schon vorhandenen Syslog-Prozess gibt und damit der SOC-Connector auch ohne root bzw. sudo-Rechte betrieben werden kann. Der Syslog-Port kann während des Setups bei Bedarf geändert werden.
In jedem Fall muss der gewählte Syslog-Port intern von allen Hosts aus erreichbar sein, die direkt Logdaten einliefern sollen.
Falls der privilegierte Port 514 verwendet wird, muss sichergestellt sein, dass auf dem SOC-Connector-Host keine andere Syslog-Instanz läuft und diesen Port bereits belegt!
Der SOC-Connector muss von sich aus keine anderen internen Systeme erreichen können.
Die Installation und Einrichtung des SOC-Connectors kann grundsätzlich von einem beliebigen User durchgeführt werden. Dieser User wird im Folgenden $SOC_USER genannt. Es sind dabei allerdings die folgenden Punkte zu beachten:
Für die weiteren Installationsschritte muss ein geeignetes, leeres Verzeichnis angelegt werden, welches $SOC_USER gehören sollte und in welchem $SOC_USER Dateien anlegen, verändern und ausführen darf. Dieses Installationsverzeichnis wird im Folgenden $SOC_DIR genannt.
Empfehlung:
Eventuell haben Sie das Skript soc-connector.sh im Rahmen des Onboarding-Prozesses bereits per E-Mail oder auf anderem Wege erhalten. Falls nicht, laden Sie das Skript soc-connector.sh herunter und kopieren Sie es in das Installationsverzeichnis ($SOC_DIR). Stellen Sie sicher, dass das Skript ausführbar ist:
cd $SOC_DIR
cp ..../soc-connector.sh .
chmod 755 soc-connector.sh
Für die sichere Einlieferung von Logdaten in die DFN.Security Infrastruktur sind zwingend ein entsprechendes TLS-Client-Zertifikat und der dazugehörige private Schlüssel erforderlich. Das Zertifikat muss von der DFN.Security SOC Access CA ausgestellt sein.
Ein entsprechendes Zertifikat und den Schlüssel haben Sie im Rahmen des Onboarding-Prozesses erhalten.
Die beiden Dateien (\*-cert.pem und \*-key.pem) müssen ebenfalls in das Installationsverzeichnis ($SOC_DIR) kopiert werden. Sie müssen dort für $SOC_USER lesbar sein.
Wechseln Sie in das Installationsverzeichnis ($SOC_DIR) und rufen Sie als User $SOC_USER das SOC-Connector-Skript mit dem Befehl setup auf:
./soc-connector.sh setup
Das Skript prüft einige Installations- und Betriebsvoraussetzungen und loggt die Ergebnisse auf der Konsole. Beim ersten Aufruf wird u.a. das benötigte Container-Image aus dem zentralen Repository heruntergeladen und installiert. Dieser Vorgang kann u.U. einige Minuten dauern.
Wenn das setup-Kommando ohne Fehler durchläuft und mit der folgenden Meldung beendet wird, ist der SOC-Connector vollständig eingerichtet und kann getestet werden:
OK - SOC-Connector setup completed!
Falls das setup-Kommando mit einer Fehlermeldung abbricht, so kann der ausgegebene Fehler-Code Ennn verwendet werden, um mehr zu erfahren über die Ursache und zu möglichen Schritten zur Behebung des Problems. Suchen Sie dazu auf dieser Seite nach dem Fehler-Code.
Um Docker (und nicht Podman) als Container-Manager zu verwenden, kann beim Setup die Option --docker angegeben werden:
./soc-connector.sh setup --docker
In diesem Fall muss die Installation und auch der Betrieb des SOC-Connectors grundsätzlich als root durchgeführt werden!
Um Docker (und nicht Podman) als Container-Manager zu verwenden, aber ohne den Benutzer root zu verwenden, kann beim Setup zusätzlich die Option --sudo angegeben werden:
./soc-connector.sh setup --docker --sudo
Voraussetzung hierbei ist natürlich, dass der verwendete User ($SOC_USER) die entsprechenden sudo-Rechte besitzt. Das Skript wird dann ggf. nach dem Passwort des Benutzers fragen, um die sudo-Funktion zu aktivieren.
Um zusätzlich auch den privilegierten Port 514 als Syslog-Port zu verwenden, kann die Option --syslog-port 514 hinzugefügt werden:
./soc-connector.sh setup --docker --sudo --syslog-port 514
Das ganze geht natürlich auch mit Podman. Die Option --sudo ist wegen des privilegierten Ports hierfür dann auch erforderlich:
./soc-connector.sh setup --sudo --syslog-port 514
Mit Hilfe des status-Kommandos kann jederzeit geprüft werden, in welchem Zustand sich der SOC-Connector befindet:
./soc-connector.sh status
Nach erfolgreichem Setup sollte dieser Status ausgegeben werden:
INFO - Setup: complete Mode: stage Connector: stopped
Dabei sind die folgenden Statuswerte und -kombinationen möglich:
Die Tabelle zeigt auch einige der wichtigsten Kommandos, die im jeweiligen Status möglich sind. Grundsätzlich sind - je nach Status - immer nur bestimmte Aktionen möglich.
Setup | Mode | Connector | Beschreibung | Typische Aktionen |
---|---|---|---|---|
incomplete | - | - | Setup wurde noch nicht (erfolgreich) durchgeführt. | setup |
complete | stage | stopped |
Setup wurde erfolgreich durchgeführt. SOC-Connector im Stage-Modus SOC-Connector läuft nicht |
start, deploy |
complete | stage | running |
Setup wurde erfolgreich durchgeführt. SOC-Connector im Stage-Modus SOC-Connector läuft |
test, stop |
complete | production | stopped |
Setup wurde erfolgreich durchgeführt. SOC-Connector im Produktionsmodus SOC-Connector läuft nicht |
start, reset |
complete | production | running |
Setup wurde erfolgreich durchgeführt. SOC-Connector im Produktionsmodus SOC-Connector läuft |
stop |
Hinweis: Direkt nach erfolgreichen Setup befindet sich der SOC-Connector zunächst grundsätzlich im Stage-Modus. D.h. eventuell eingehende Log-Meldungen werden nicht an das produktive DFN.Security SOC-System, sondern an den sogenannten SOC-Incubator geschickt! Der SOC-Incubator nimmt keinerlei Analyse der eingehenden Daten vor und die Daten werden auch nur für eine sehr kurze Zeit zwischengespeichert und dann automatisch gelöscht.
Der einzige Zweck des SOC-Incubators ist es, eine zum produktiven SOC-System kompatible Schnittstelle für Tests zur Verfügung zu stellen und die eingehenden Daten an den Aufrufer (und nur an den!) zurückzuliefern, damit geprüft werden kann, ob die Daten vollständig ankommen und korrekt verarbeitet werden können.
Ein einfacher Testlauf des SOC-Connectors in Stage-Modus besteht aus diesen Kommandos, die anschließend im Detail erläutert werden:
Bevor der Testlauf gestartet werden kann, muss der SOC-Connector gestartet werden:
./soc-connector.sh start
Wie oben ausgeführt, werden im Stage-Modus keine Daten an das produktive System übertragen und es werden insbesondere keine Daten ausgewertet oder dauerhaft gespeichert.
Dann kann der Test-Lauf gestartet werden:
./soc-connector.sh test
Die Ausgabe des SOC-Connectors sollte etwa so aussehen:
INFO - submitting log message #1/3 : SOC-Connector/Incubator test message 1674486316
INFO - SOC System confirmed log message : SOC-Connector/Incubator test message 1674486316
INFO - submitting log message #2/3 : SOC-Connector/Incubator test message 1674486328
INFO - SOC System confirmed log message : SOC-Connector/Incubator test message 1674486328
INFO - submitting log message #3/3 : SOC-Connector/Incubator test message 1674486339
INFO - SOC System confirmed log message : SOC-Connector/Incubator test message 1674486339
Diese Zeilen zeigen, dass drei Test-Meldungen übertragen wurden und korrekt angekommen sind. Der Empfang wurde vom SOC-Incubator explizit bestätigt.
Hinweis: Insbesondere beim ersten Aufruf kann der Test-Vorgang ein paar Minuten dauern oder sogar mal in ein Timeout laufen. In diesem Fall bitte das test-Kommando erneut ausführen.
Wenn der Testlauf wiederholt fehlschlägt, obwohl der Setup erfolgreich war, bitte an das SOC-Team bei DFN-CERT wenden.
Nach dem Test sollte der SOC-Connector wieder gestoppt werden:
./soc-connector.sh stop
Wenn der einfache Funktionstest erfolgreich war, sollte ein umfassender Text mit echten Log-Meldungen durchgeführt werden.
Auch der umfassende Test wird im Stage-Modus durchgeführt. D.h. es werden keine Daten an das produktive System geschickt. Die übertragenen Daten werden nicht analysiert und nach kurzer Zeit automatisch gelöscht.
Ein umfassender Testlauf des SOC-Connectors in Stage-Modus besteht aus diesen Kommandos, die anschließend im Detail erläutert werden:
Bevor der Testlauf gestartet werden kann, muss der SOC-Connector gestartet werden:
./soc-connector.sh start
Wie oben ausgeführt, werden im Stage-Modus keine Daten an das produktive System übertragen und es werden insbesondere keine Daten analysiert oder dauerhaft gespeichert.
Um zu sehen, ob der SOC-Connector erfolgreich Daten an den SOC-Incubator senden kann, und ob die Daten dort im erwarteten Format ankommen, wird das Kommando sample gestartet. Der Testlauf kann jederzeit mit Ctrl-C gestoppt werden:
./soc-connector.sh sample
Auf der Konsole erscheint diese Ausgabe, wobei etwa alle 10 Sekunden ein weiterer Punkt hinzukommt:
waiting for confirmation ...
Aus einem anderen Fenster (sogar von einem anderen Host!) können nun gezielt Log-Meldungen an den SOC-Connector geschickt werden:
logger --port <PORT> --server <IP/HOSTNAME> --tcp This is my very important log message!
Hinweis: Es ist unbedingt ratsam, nicht nur ein paar “manuelle” Log-Meldungen mit dem logger-Befehl zu erzeugen, sondern tatsächliche Log-Meldungen aus den zu überwachenden System zu verwenden. Idealerweise nicht zu viele - ein paar Beispiele reichen in der Regel aus, um die Übertragung und v.a. das Format zu prüfen.
Die vom SOC-Incubator empfangenen Meldungen sollte nach wenigen Sekunden in dem Terminalfenster zu sehen sein, in dem ./soc-connector.sh sample gestartet worden ist. Die Meldung erscheint dabei im JSON-Format. Die einzelnen Felder der Syslog-Meldung sollten korrekt erkannt und besetzt sein:
INFO - SOC System confirmed log message : {
"appInst": "myapp",
"appName": "myapp",
"body": "This is my very important log message!",
"event_raw": "<13>1 2023-01-23T16:34:27.097246+01:00 myhostname myapp - - [timeQuality tzKnown=\"1\" isSynced=\"0\"] This is my very important log message!",
"facility": "1",
"hostName": "myhostname",
"priority": "13",
"procId": "-",
"severity": "5",
"structuredData": "[timeQuality tzKnown=\"1\" isSynced=\"0\"]",
"syslogTag": "myapp",
"timestamp": "2023-01-23T16:34:27.097246+01:00"
}
Hinweis: Besonders bei den folgenden Feldern sollte auf den korrekten Inhalt geachtet werden:
Nach dem Test sollte der SOC-Connector wieder gestoppt werden:
./soc-connector.sh stop
Wenn die Testläufe erfolgreich waren und die Log-Meldungen im gewünschten Format ankommen und korrekt ausgewertet werden können, kann der Produktiv-Modus aktiviert werden.
Die Aktivierung des SOC-Connectors im Produktiv-Modus besteht aus diesen Kommandos, die anschließend im Detail erläutert werden. Ein erfolgreicher Setup sowie Tests (s.o.) sind natürlich Voraussetzung!
Nach erfolgreich durchgeführten Tests kann der SOC-Connector für den produktiven Betrieb aktiviert werden:
./soc-connector.sh deploy
Die Status-Ausgaben (Kommando status) sollte jetzt so aussehen:
INFO - Setup: complete Mode: production Connector: stopped
Hinweis: Das setup-Kommando kann jederzeit erneut ausgeführt werden, z.B. um einzelne Konfigurationseinstellungen zu ändern. Danach befindet sich der SOC-Connector aber grundsätzlich im Stage-Modus! D.h. das deploy-Kommando muss dann - nach den erforderlichen Tests - ebenfalls erneut ausgeführt werden!
Der Start des SOC-Connectors erfolgt denn mit dem schon bekannten start-Kommando:
./soc-connector.sh start
Im Produktionsbetrieb werden die eingehenden Logs an die zentrale DFN.Security SOC-Infrastruktur geschickt und dort ausgewertet. Die Verarbeitung und Speicherung erfolgt gemäß Datenschutz-Bestimmungen und vertraglichen Vereinbarungen.
Falls neue Versionen des SOC-Connector-Skripts oder -Images zur Verfügung stehen, werden die Teilnehmer in geeigneter Weise informiert.
Eine neue Version des soc-connector.sh-Skripts muss in das Verzeichnis $SOC_DIR kopiert werden und ersetzt dann die aktuelle Version. Die Auslieferungsnotiz enthält zusätzliche Informationen, falls weitere Schritte zur Inbetriebnahme erforderlich sind.
Eine neue Version des Container-Images kann mit dem update-Kommando heruntergeladen und aktiviert werden:
./soc-connector.sh update
Falls ein neues Image geladen wurde, muss nach dem Update das setup-Kommando ausgeführt werden. Anschließend sollten die Tests (s.o.) durchgeführt werden. Zum Schluss kann dann wieder in den Produktiv-Modus gewechselt werden.
Um mit der Konfiguration “bei null” zu beginnen, kann der Reset-Befehl verwendet werden:
./soc-connector.sh reset
Anschließend können optional die Unterverzeichnisse setup, conf und logs gelöscht werden. Sie werden beim erneuten Ausführen des setup-Kommandos automatisch angelegt und bestückt.
Normalerweise sollte der Container bei jedem Stop automatisch gelöscht und beim Start wieder aus dem Image neu erstellt werden. In seltenen Fällen klappt das Löschen nicht. Dann kann der Container manuell gelöscht werden:
./soc-connector.sh delete
Um den SOC-Connector vollständig zu entfernen, können diese Schritte durchgeführt werden:
cd $SOC_DIR
# Stoppen (falls gestartet)
./soc-connector stop
# Container löschen (falls nicht automatisch gelöscht)
./soc-connector delete
# Container-Image löschen
./soc-connector purge
# Unterverzeichnisse löschen
rm -rf setup conf logs
Hinweis: Das Skript soc-connector.sh sowie das SOC-Access-Zertifikat und der zugehörige Schlüssel werden durch diese Befehle nicht gelöscht. Sie können natürlich auch entfernt werden, wenn sie nicht mehr benötigt werden.