Select Page

OpenSearch – TLS für den Elastic-Fork

by | Sep 7, 2023 | OpenSearch

This entry is part 1 of 5 in the series OpenSearch Security

Wir erhalten vermehrt Kundenanfragen, die sich für den Teil A 8.15 Logging der ISO 27001 interessieren und beim Logging-Teil Unterstützung möchten. Je nach Bedürfnissen & Funktionsumfang hast du die Wahl, ob du Elasticsearch oder OpenSearch als Backend möchtest.
Wir bei NETWAYS verwenden beide Projekte, denn sie bieten unterschiedliche Möglichkeiten und vor allem verschiedene Security-Ansätze. Dadurch können wir unseren Kunden immer die bestmögliche Lösung für ihre Umgebung anbieten.

Bevor wir tiefer in die die Welt der OpenSearch Security einsteigen und uns der OpenSearch TLS Verschlüsselung widmen, gibt es für alle Interessierten einen kurzen Exkurs. Denn wer steckt eigentlich hinter OpenSearch und warum ist der Elastic Fork mittlerweile so relevant.

OpenSearch ist die AWS Antwort zu Elastic

In ihrem offiziellen FAQ beschreibt sich das OpenSearch Projekt selbst als “Open Source Search and Analytics Suite“, das von AWS unterstützt wird. Wir als Anwender:innen können dementsprechend eine langfristige Maintenance erwarten. AWS ist dabei nicht das einzige namhafte IT-Unternehmen, das seine Ressourcen für die Weiterentwicklung von OpenSearch bereitstellt. Unter anderem gehören RedHat, SAP und CapitolOne zu den weiteren Unterstützern des Projekts.
Auch Graylog empfiehlt seinen Anwender:innen in der Dokumentation für neue Installationen zukünftig auf OpenSearch zu setzen.

Sind Elastic und OpenSearch also das gleiche Tool, nur mit anderem Namen? Nein, auch wenn sie auf den ersten Blick ähnliche Aufgaben erfüllen: Einsammeln, Ablegen und Durchsuchen von Datensätzen.
Die Differenzen beginnen bei allen anderen Funktionen. Seien es Features zur Authentifizierung, die Speicherung der Daten oder die besonders relevante Frage “Was bedeuten meine Daten und wie kann ich diese schützen?”.

Wenn du abseits dieser grundlegenden Informationen mehr zu den Hintergründen der Entstehung von OpenSearch erfahren willst, lege ich dir den Blogpost meines Kollegen Daniel Neuberger ans Herz. Darin hat er sich ausführlich mit den Hintergründen des Forks sowie einer Gegenüberstellung der beiden Tools beschäftigt.

OpenSearch TLS Verschlüsselung

Anstatt auf die Installation von OpenSearch einzugehen (neben der offiziellen Doku gibt es z.B. von Graylog eine Installation in zehn Zeilen Code) beschäftige ich mich mit einem anderen wichtigen Thema: Sicherheit. Genauer gesagt mit der TLS Verschlüsselung von OpenSearch.

Warum genau dieses Thema?
Weil die Sicherheit in Softwarelösungen und besonders die Verschlüsselung der Kommunikation heutzutage wichtiger ist denn je. Und OpenSearch bietet seinen Anwender:innen vielfältige Konfigurationsmöglichkeiten.
Solltest du also mehrere Server in OpenSearch eingebunden haben, die auf mehrere Netze verteilt sind, willst du auf jeden Fall TLS aktiviert haben. Zudem machst du es einem potenziellen Angreifer, wenn er es schaffen sollte, so tief in deine Infrastruktur zu gelangen (und TCPDump aktivieren will, um Credentials und Secrets abzufangen) schwer.
Das Stichwort lautet hier für Angreifer: Impose Cost.

Bevor ich dir meine Vorgehensweise zur OpenSearch TLS Verschlüsselung zeige noch ein wichtiger Hinweis:

Es ist wichtig zu beachten, dass Downgrades / Upgrades von TLS oder das Löschen von Zertifikaten potenzielle Angriffsvektoren in deiner Log-Pipeline sein können. Daher kann die Überwachung von Zertifikaten, Hosts und Fehlerprotokollen mithilfe von Monitoringsystemen, etwa Icinga signifikant dazu beitragen, die Sicherheit und Verfügbarkeit deiner Systeme zu verbessern.
Aus sicherheitstechnischer Sicht ist es zudem äußerst lobenswert, dass die offizielle Dokumentation von OpenSearch zeigt, wie man Zertifikate ausstellt und die standardmäßig verwendeten Demo Zertifikate löscht.

Für die TLS Verschlüsselung meines OpenSerch teile ich dir Dir meine /etc/opensearch/opensearch.yml , die Kernkonfigurationsdatei des OpenSearch Projektes, die alles relevante enthält. Wichtige Eckpunkte dafür sind:

  • graylog-ca-root.crt dient als CA
  • opensearch.crt wird als Clientverwendet
  • TLS wird für den Transport & HTTP-Weg benötigt
  • Self-Signed Zertifikate werden als “Demo” geführt
  • Ich aktiviere Audittypen, Snapshots und weise Features RestApiZugriff zu.

Weitere Parameter kannst du der offiziellen Doku entnehmen. Dennoch sollte meine Konfiguration, angepasst an deine self-signed Zertifikate, problemlos direkt funktionieren und zu einer erfolgreichen TLS Verschlüsselung führen.
(Zum eindeutigen Verständnis aller Prozesse innerhalb der Konfigurationsdatei habe ich relevante Bereiche mit Kommentaren versehen.)

# WARNING: revise all the lines below before you go into production

plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/opensearch.crt
plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/opensearch.key
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/graylog-ca-root.crt

# Ist die Zertifikatskette nicht korrekt auf die subjectAltName mit FQDNs / IPs gesetzt, teste mit "false" & korrigiere danach mit true
plugins.security.ssl.transport.enforce_hostname_verification: true

plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/opensearch.crt
plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/opensearch.key
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/graylog-ca-root.crt

plugins.security.allow_default_init_securityindex: true

# Self-Signed Zertifikate werden unter "unsafe_democertificates" geführt
plugins.security.allow_unsafe_democertificates: true

plugins.security.authcz.admin_dn:
  - "CN=opensearch.lan,OU=nps,O=nw,L=nbg,ST=by,C=de"
plugins.security.nodes_dn:
  - "CN=opensearch.lan,OU=nps,O=nw,L=nbg,ST=by,C=de"

plugins.security.audit.type: internal_opensearch

plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.cache.ttl_minutes: 60

plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true

#opendistro_security.audit.config.disabled_rest_categories: NONE
#opendistro_security.audit.config.disabled_transport_categories: NONE

#node.max_local_storage_nodes: 3
######## End OpenSearch Security Demo Configuration ########

action.auto_create_index: true

#Wichtig: Aktivierungs-Trigger der TLS-Konfiguration:
plugins.security.disabled: false

OpenSearch und besonders die Sicherheitsaspekte der Software werden mich auch in den kommenden Wochen noch weiter beschäftigen.
Wenn du zu diesem oder anderen Themen rund um OpenSearch oder Elastic Fragen hast, stehen ich oder meine Kolleg:innen dir gerne mit unserer Expertise zur Seite. Wir helfen dir dabei, Projekte zu planen, Umgebungen zu simulieren oder Entscheidungen basierend auf deinen verfügbaren Ressourcen zu treffen.

Obwohl du bei einem Termin meist einen Consultant als Ansprechpartner:in hast, bekommst du das kollektive Wissen unserer Abteilung. Gerne helfen wir dir, TLS in Verbindung mit Graylog oder anderen Produkten über deinen kompletten Stack über alle Clients und Server auszurollen.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic OpenSearch

OSMC 2023 | Experiments with OpenSearch and AI

Last year's Open Source Monitoring Conference (OSMC) was a great experience. It was a pleasure to meet attendees from around the world and participate in interesting talks about the current and future state of the monitoring field. Personally, this was my first time...