OpenSearch ist der Fork von ELK – Elastic-Search. Die Installation erfolgt via Docker, mit Deb-Paketen oder mit apt-get über den öffentlichen Mirror [1]. Das selbe gilt für das OpenSearch-Webinterface [2]

Jetzt kommen die speziellen Punkte wie SSL-Zertifikat und eigene Benutzer:

Es muss für jeden Knoten (hier kann ein Cert für alle Knoten geteilt werden) sowie ein Zertifikat für das eigentliche Web-Interface und ein admin-Zertifikat erzeugt werden.

OS lauscht ja auf Port 9200. Das hier angebotene Zertifikat ist das Knoten-Zertifikat.
OS-Dashboard lauscht i.d.R. auf Port 5601, das hier angebotene Zertifikat ist das Web-IF Zertifikat.

Und zuletzt muss jede einschneidende Konfigurationsänderung (wie z.B. neue Benutzer in OS) mit einem admin-Zertifikat verifiziert werden. Hier erfolgt eine Client-Zertifikat-Authentifizierung ggü. OS.

In unserem Fall erzeugen wir mit openssl eine lokale CA mit openssl auf unserem einzigen OS-Knoten. Siehe hier[3].

Achtung: Für die Root-CA, die Knoten und den admin, gibt es jeweils einen individuellen Key.

Existieren alle Certs, werden die wie folgt in /etc/opensearch/opensearch.yml hinterlegt:

plugins.security.ssl.transport.pemcert_filepath: allnodes.pem
plugins.security.ssl.transport.pemkey_filepath: all-nodes-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: allnodes.pem
plugins.security.ssl.http.pemkey_filepath: all-nodes-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:

  • „O=Internet Widgits Pty Ltd,ST=Some-State,C=AU“

Die letzte Zeile ist der CN unseres admin-Zertifikats (wir haben keine Feld befüllt beim „SSL-Dialog“.

Jetzt können wir den opensearch-Dienst neustarten via sytemctl.

Möchten wir jetzt User anpassen [4] werden hier jeweils kennwort-Hashes erzeugt, diese in die internal_users.yml geschrieben und der Dienst neugestartet.
Abschließend – mit dem admin-Zertifikat – scharf geschalten.

OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./securityadmin.sh -cd /etc/opensearch/opensearch-security/ -cacert /etc/opensearch/root-ca.pem -cert /etc/opensearch/admin.pem -key /etc/opensearch/admin-key.pem -icl -nhnv

ACHTUNG: Dieser Befehl erwartet das admin-Zertifikat + Key am Ende des Befehls.

Wissenswertes zu Opensearch-Dashboard:

Opensearch-Dashboard hat in seiner Konfiguration /etc/opensearch-dashboard/… einen Benutzer fest hinterlegt. Damit meldet sich die GUI selbst für interne Aufgaben am OS an. Der Login der Benutzer am OS-DAshboard hingegen erfolgt mit identischen Benutzern wie bei OS selbst.

Also z.B. der admin.

[1] https://opensearch.org/docs/latest/install-and-configure/install-opensearch/debian/
[2] https://opensearch.org/docs/latest/install-and-configure/install-dashboards/index/
[3] https://opensearch.org/docs/latest/security/configuration/generate-certificates/
[4] https://opensearch.org/docs/latest/install-and-configure/install-opensearch/debian/ (ganz unten – configuer a user)

Categories: Blog