Zum Hauptinhalt springen Skip to page footer

Konfiguration von OpenSearch auf Debian 11: Ein detaillierter Leitfaden

| Tutorial | Opensearch

Erfahren Sie, wie Sie OpenSearch auf Debian 11 konfigurieren. Dieser umfassende Leitfaden enthält Anweisungen zur Netzwerkkonfiguration, Erstellung von TLS-Zertifikaten und Konfiguration der grundlegenden Authentifizierung. Zusätzlich wird die Installation des Dashboards zur Administration von OpenSearch behandelt.

Einleitung

In dem Tutorial Installation und Test von OpenSearch auf Debian 11: Ein detaillierter Leitfaden - openhow2 - umfassendes Praxiswissen für Programmierung, Webentwicklung, Office und vieles mehr haben wir die Grundinstallation von OpenSearch beschrieben. Anknüpfend daran wird in diesem Tutorial die weitere Einrichtung von OpenSearch thematisiert.

Standardmäßig ist OpenSearch mit keiner Netzwerkschnittstelle verbunden und kann nicht von externen Hosts aus erreicht werden. Die Sicherheitseinstellungen enthalten außerdem einen Standardbenutzernamen und ein Standardpasswort. Die folgenden Empfehlungen ermöglichen es Benutzern, OpenSearch mit Netzwerkschnittstellen zu verknüpfen, TLS-Zertifikate zu erstellen und zu signieren und die grundlegende Authentifizierung zu konfigurieren. Des Weiteren wird ein Dashboard für die Administration von Opensearch installiert.

Mit den folgenden empfohlenen Einstellungen können Sie

  • OpenSearch an eine IP- oder Netzwerkschnittstelle auf dem Host binden. 
  • Initiale und maximale Größe des JVM-Heaps festlegen.
  • Definieren Sie eine Umgebungsvariable, die auf das bereitgestellte JDK verweist.
  • Konfigurieren Sie Ihr eigenes TLS-Zertifikat. Es wird keine Zertifizierungsstelle (CA) eines Drittanbieters benötigt.
  • Erstellen Sie einen Admin-Benutzer mit einem benutzerdefinierten Passwort.
  • Installation des Dashboards

Hinweis

Wenn Sie das Sicherheitsdemoskript ausgeführt haben, müssen Sie alle geänderten Einstellungen manuell neu konfigurieren. Bitte lesen Sie den Abschnitt „Sicherheitskonfiguration“, bevor Sie fortfahren.

Empfehlung

Bevor Sie eine Konfigurationsdatei ändern, sollten Sie immer eine Sicherungskopie der Datei erstellen. Sicherungsdateien können verwendet werden, um Probleme zu beheben, die durch fehlerhafte Konfigurationen verursacht werden.

OpenSearch an eine IP- oder Netzwerkschnittstelle auf dem Host binden.

Öffnen Sie die Datei opensearch.yml
nano /etc/opensearch/opensearch.yml
Fügen Sie folgende Zeilen hinzu
# Binden Sie OpenSearch an die richtige Netzwerkschnittstelle. 
# Verwenden Sie 0.0.0.0, um alle verfügbaren Schnittstellen einzuschließen, 
# oder geben Sie eine IP-Adresse an, die einer bestimmten Schnittstelle 
# zugewiesen ist.

network.host: 0.0.0.0

# Sofern Sie nicht bereits einen Cluster konfiguriert haben, sollten Sie 
# discovery.type auf single-node setzen, da sonst die Bootstrap-Prüfungen 
# fehlschlagen, wenn Sie versuchen, den Dienst zu starten.

discovery.type: single-node

# Wenn Sie zuvor das Sicherheits-Plugin in opensearch.yml deaktiviert haben, 
# müssen Sie es wieder aktivieren. Ansonsten können Sie diese Einstellung 
# überspringen.

plugins.security.disabled: false

Speichern Sie Ihre Änderungen und schließen Sie die Datei.

Initiale und maximale Größe des JVM-Heaps festlegen

Geben Sie die initiale und maximale JVM-Heap-Größe an.

  • Öffnen Sie die Datei jvm.options
nano /etc/opensearch/jvm.options
  • Ändern Sie die Werte für die anfängliche und maximale Heap-Größe. Als Ausgangspunkt sollten Sie diese Werte auf die Hälfte des verfügbaren Systemspeichers festlegen. Bei dedizierten Hosts kann dieser Wert je nach den Anforderungen Ihres Arbeitsablaufs erhöht werden.
Wenn der Host-Rechner beispielsweise über 8 GB Speicher verfügt, sollten Sie die anfängliche und maximale Heap-Größe auf 4 GB festlegen:
-Xms4g
-Xmx4g

Speichern Sie Ihre Änderungen und schließen Sie die Datei.

Konfigurieren Sie Ihr eigenes TLS-Zertifikat

TLS-Zertifikate verbessern die Clustersicherheit, indem sie es Clients ermöglichen, die Identität von Hosts zu überprüfen und den Datenverkehr zwischen Clients und Hosts zu verschlüsseln. Weitere Informationen finden Sie unter Konfigurieren von TLS-Zertifikaten und Generieren von Zertifikaten in der Dokumentation zum Sicherheits-Plugin. Für die Arbeit in einer Entwicklungsumgebung ist in der Regel ein selbstsigniertes Zertifikat ausreichend. In diesem Abschnitt werden die grundlegenden Schritte beschrieben, die erforderlich sind, um ein eigenes TLS-Zertifikat zu erzeugen und auf Ihrem OpenSearch-Host zu verwenden.

Navigieren Sie zu dem Verzeichnis, in dem die Zertifikate gespeichert werden sollen:
cd /etc/opensearch
Löschen Sie die Demo-Zertifikate.
sudo rm -f *pem
Erzeugen Sie ein Stammzertifikat. Dieses werden Sie zum Signieren Ihrer anderen Zertifikate verwenden.
# Erstellen Sie einen privaten Schlüssel für das Stammzertifikat

sudo openssl genrsa -out root-ca-key.pem 2048
Ausgabe:
Generating RSA private key, 2048 bit long modulus (2 primes)
.........................+++++
....................................+++++
e is 65537 (0x010001)

Verwendung des privaten Schlüssels

# Verwenden Sie den privaten Schlüssel, um ein selbstsigniertes Stammzertifikat 
# zu erstellen. Achten Sie darauf, die an -subj übergebenen Argumente zu ersetzen,
# damit sie Ihrem spezifischen Host entsprechen.

sudo openssl req -new -x509 -sha256 -key root-ca-key.pem -subj "/C=DE/ST=NRW/L=MUSTERSTADT/O=ORG/OU=UNIT/CN=ROOT" -out root-ca.pem -days 730
Als nächstes erstellen Sie das Admin-Zertifikat. Dieses Zertifikat wird verwendet, um erweiterte Rechte für die Durchführung von administrativen Aufgaben im Zusammenhang mit dem Sicherheits-Plugin zu erhalten.
# Erstellen Sie einen privaten Schlüssel für das Admin-Zertifikat.

sudo openssl genrsa -out admin-key-temp.pem 2048
Ausgabe
Generating RSA private key, 2048 bit long modulus (2 primes)
........................+++++
.......+++++
e is 65537 (0x010001)
Konvertieren des privaten Schlüssels
# Konvertieren Sie den privaten Schlüssel in PKCS#8.

sudo openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
   
# Erstellen Sie die Zertifikatsignierungsanforderung (CSR). 
# Ein Common Name (CN) von "A" ist akzeptabel, da dieses Zertifikat 
# für die Authentifizierung des erweiterten Zugangs verwendet wird 
# und nicht an einen Host gebunden ist.

sudo openssl req -new -key admin-key.pem -subj "/C=DE/ST=NRW/L=MUSTERSTADT/O=ORG/OU=UNIT/CN=A" -out admin.csr

# Signieren Sie das Admin-Zertifikat mit dem Stammzertifikat und 
# dem privaten Schlüssel, die Sie zuvor erstellt haben.

sudo openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
Ausgabe:
Signature ok
subject=C = DE, ST = NRW, L = MUSTERSTADT, O = ORG, OU = UNIT, CN = A
Getting CA Private Key
Erstellen Sie ein Zertifikat für den zu konfigurierenden Knoten:
# Erstellen Sie einen privaten Schlüssel für das Knotenzertifikat.

sudo openssl genrsa -out node1-key-temp.pem 2048
Ausgabe:
Generating RSA private key, 2048 bit long modulus (2 primes)
...................................................................+++++
...+++++
e is 65537 (0x010001)
Konvertieren Sie den privaten Schlüssel
# Konvertieren Sie den privaten Schlüssel in PKCS#8.

sudo openssl pkcs8 -inform PEM -outform PEM -in node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node1-key.pem


# Erstellen Sie die CSR und ersetzen Sie die an -subj übergebenen 
# Argumente so, dass sie Ihrem spezifischen Host entsprechen.
# Der CN sollte einem DNS-A-Eintrag für den Host entsprechen – 
# verwenden Sie nicht den Hostnamen.

sudo openssl req -new -key node1-key.pem -subj "/C=DE/ST=NRW/L=MUSTERSTADT/O=ORG/OU=UNIT/CN=node1.dns.a-record" -out node1.csr
   

# Erstellen Sie eine Erweiterungsdatei, die einen SAN-DNS-Namen für den Host 
# definiert. Dieser sollte mit dem DNS-A-Eintrag des Hosts übereinstimmen.

sudo sh -c 'echo subjectAltName=DNS:node1.dns.a-record > node1.ext'
   

# Signieren Sie das Knotenzertifikat mit dem Stammzertifikat und dem 
# privaten Schlüssel, die Sie zuvor erstellt haben.

sudo openssl x509 -req -in node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node1.pem -days 730 -extfile node1.ext
Ausgabe:
Signature ok
subject=C = DE, ST = NRW, L = MUSTERSTADT, O = ORG, OU = UNIT, CN = node1.dns.a-record
Getting CA Private Key
Der Ordner /etc/opensearch sollte jetzt folgende Dateien beinhalten:
-rw-r--r--   1 root       root         985 18. Jun 08:45 admin.csr
-rw-------   1 root       root        1708 18. Jun 08:45 admin-key.pem
-rw-------   1 root       root        1679 18. Jun 08:44 admin-key-temp.pem
-rw-r--r--   1 root       root        1184 18. Jun 08:46 admin.pem
-rw-r--r--   1 opensearch opensearch  2729 18. Jun 08:33 jvm.options
drwxr-xr-x   2 opensearch opensearch  4096 14. Okt 2022  jvm.options.d
-rw-r--r--   1 opensearch opensearch 14808 14. Okt 2022  log4j2.properties
-rw-r--r--   1 root       root        1009 18. Jun 08:57 node1.csr
-rw-r--r--   1 root       root          38 18. Jun 08:57 node1.ext
-rw-------   1 root       root        1708 18. Jun 08:56 node1-key.pem
-rw-------   1 root       root        1679 18. Jun 08:54 node1-key-temp.pem
-rw-r--r--   1 root       root        1261 18. Jun 08:58 node1.pem
-rw-rw----   1 opensearch opensearch   196 18. Jun 05:32 opensearch.keystore
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-notifications
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-notifications-core
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-observability
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-performance-analyzer
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-reports-scheduler
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-security
-rw-r--r--   1 opensearch opensearch  7010 18. Jun 08:32 opensearch.yml
-rw-------   1 root       root        1675 18. Jun 08:37 root-ca-key.pem
-rw-r--r--   1 root       root        1310 18. Jun 08:38 root-ca.pem
-rw-r--r--   1 root       root          41 18. Jun 08:58 root-ca.srl
Entfernen Sie temporäre Dateien, die nicht mehr benötigt werden:
sudo rm -f *temp.pem *csr *ext
Der Ordner /etc/opensearch beinhaltet nach dem löschen der temporären noch folgende Dateien:
-rw-------   1 root       root        1708 18. Jun 08:45 admin-key.pem
-rw-r--r--   1 root       root        1184 18. Jun 08:46 admin.pem
-rw-r--r--   1 opensearch opensearch  2729 18. Jun 08:33 jvm.options
drwxr-xr-x   2 opensearch opensearch  4096 14. Okt 2022  jvm.options.d
-rw-r--r--   1 opensearch opensearch 14808 14. Okt 2022  log4j2.properties
-rw-------   1 root       root        1708 18. Jun 08:56 node1-key.pem
-rw-r--r--   1 root       root        1261 18. Jun 08:58 node1.pem
-rw-rw----   1 opensearch opensearch   196 18. Jun 05:32 opensearch.keystore
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-notifications
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-notifications-core
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-observability
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-performance-analyzer
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-reports-scheduler
drwxr-xr-x   2 opensearch opensearch  4096 18. Jun 05:32 opensearch-security
-rw-r--r--   1 opensearch opensearch  7010 18. Jun 08:32 opensearch.yml
-rw-------   1 root       root        1675 18. Jun 08:37 root-ca-key.pem
-rw-r--r--   1 root       root        1310 18. Jun 08:38 root-ca.pem
-rw-r--r--   1 root       root          41 18. Jun 08:58 root-ca.srl
Stellen Sie sicher, dass die verbleibenden Zertifikate dem Benutzer opensearch gehören:
sudo chown opensearch:opensearch admin-key.pem admin.pem node1-key.pem node1.pem root-ca-key.pem root-ca.pem root-ca.srl

Zertifikatsdateien zu opensearch.yml hinzufügen

Bei diesem Vorgang werden viele Dateien erzeugt, aber diese müssen Sie zu jedem Knoten hinzufügen:

  • root-ca.pem
  • admin.pem
  • admin-key.pem
  • (Optional) node1.pem
  • (Optional) node1-key.pem
Auf einem Knoten könnte der Sicherheitskonfigurationsteil von opensearch.yml wie folgt aussehen:
plugins.security.ssl.transport.pemcert_filepath: node1.pem
plugins.security.ssl.transport.pemkey_filepath: node1-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: node1.pem
plugins.security.ssl.http.pemkey_filepath: node1-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.authcz.admin_dn:
  - 'CN=A,OU=UNIT,O=ORG,L=MUSTERSTADT,ST=NRW,C=DE'
plugins.security.nodes_dn:
  - 'CN=node1.dns.a-record,OU=UNIT,O=ORG,L=MUSTERSTADT,ST=NRW,C=DE'
  - 'CN=node2.dns.a-record,OU=UNIT,O=ORG,L=MUSTERSTADT,ST=NRW,C=DE'

Admin-Account und Dashboard-Benutzer konfigurieren

OpenSearch definiert und authentifiziert Benutzer auf verschiedene Arten. Eine Alternative, die keine zusätzliche Backend-Infrastruktur erfordert, ist die manuelle Konfiguration von Benutzern in der Datei internal_users.yml. Details zur Benutzerkonfiguration finden Sie in der YAML-Datei. In den folgenden Schritten wird beschrieben, wie Sie alle Demo-Benutzer bis auf den Admin-Benutzer entfernen und das Standard-Administrator-Passwort per Skript ersetzen.

Navigieren Sie zum Verzeichnis tools in den Security plugins:
cd /usr/share/opensearch/plugins/opensearch-security/tools
Führen Sie hash.sh aus, um ein neues Passwort zu generieren:
./hash.sh
• Dieses Skript schlägt fehl, wenn kein Pfad zum JDK definiert wurde:
**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755           **
**************************************************************************
WARNING: nor OPENSEARCH_JAVA_HOME nor JAVA_HOME is set, will use
./hash.sh: Zeile 35: java: Kommando nicht gefunden.
• Deklarieren Sie eine Umgebungsvariable, wenn Sie das Skript aufrufen, um Probleme zu vermeiden:
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./hash.sh
• Geben Sie das gewünschte Kennwort an der Eingabeaufforderung ein und notieren Sie sich den ausgegebenen Hash-Wert.
**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755           **
**************************************************************************
[Password:]
$2y$12$9nTf23MkX.OdrlgrjG/ZpOhFkf7b/M930T.B.57eJlHNW/Sl03/yi

Führen Sie das Skript „hash.sh“ erneut aus, um ein Hash-Passwort zu generieren, das für das OpenSearch-Dashboard verwendet wird. Geben Sie ein neues Passwort ein und notieren Sie sich auch dieses.

Öffnen Sie die Datei internal_users.yml:
sudo nano /etc/opensearch/opensearch-security/internal_users.yml
Inhalt der Datei:
---
# This is the internal user database
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh

_meta:
  type: "internalusers"
  config_version: 2

# Define your internal users here

## Demo users

admin:
  hash: "$2a$12$VcCDgh2NDk07JGN0rjGbM.Ad41qVR/YFJcgHp0UGns5JDymv..TOG"
  reserved: true
  backend_roles:
  - "admin"
  description: "Demo admin user"

anomalyadmin:
  hash: "$2y$12$TRwAAJgnNo67w3rVUz4FIeLx9Dy/llB79zf9I15CKJ9vkM4ZzAd3."
  reserved: false
  opendistro_security_roles:
  - "anomaly_full_access"
  description: "Demo anomaly admin user, using internal role"

kibanaserver:
  hash: "$2a$12$4AcgAt3xwOWadA5s5blL6ev39OXDNhmOesEoo33eZtrq2N0YrU3H."
  reserved: true
  description: "Demo OpenSearch Dashboards user"

kibanaro:
  hash: "$2a$12$JJSXNfTowz7Uu5ttXfeYpeYE0arACvcwlPBStB1F.MI7f0U9Z4DGC"
  reserved: false
  backend_roles:
  - "kibanauser"
  - "readall"
  attributes:
    attribute1: "value1"
    attribute2: "value2"
    attribute3: "value3"
  description: "Demo OpenSearch Dashboards read only user, using external role mapping"

logstash:
  hash: "$2a$12$u1ShR4l4uBS3Uv59Pa2y5.1uQuZBrZtmNfqB3iM/.jL0XoV9sghS2"
  reserved: false
  backend_roles:
  - "logstash"
  description: "Demo logstash user, using external role mapping"

readall:
  hash: "$2a$12$ae4ycwzwvLtZxwZ82RmiEunBbIPiAmGZduBAjKN0TXdwQFtCwARz2"
  reserved: false
  backend_roles:
  - "readall"
  description: "Demo readall user, using external role mapping"

snapshotrestore:
  hash: "$2y$12$DpwmetHKwgYnorbgdvORCenv4NAK8cPUg8AI6pxLCuWf/ALc0.v7W"
  reserved: false
  backend_roles:
  - "snapshotrestore"
  description: "Demo snapshotrestore user, using external role mapping"
Entfernen Sie alle Demo-Benutzer bis auf admin und kibanaserver und ersetzen Sie den Hash mit der Ausgabe von hash.sh aus dem vorherigen Schritt. Die Datei sollte wie folgt aussehen:
---
# This is the internal user database
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh

_meta:
   type: "internalusers"
   config_version: 2

# Define your internal users here

admin:
   hash: "$2y$12$9nTf23MkX.OdrlgrjG/ZpOhFkf7b/M930T.B.57eJlHNW/Sl03/yi"
   reserved: true
   backend_roles:
   - "admin"
   description: "Admin user"

kibanaserver:
  hash: "$2y$12$wIeuRDp5txoJ3d6.lyybJOPwoRaizuuBvlKKzAGdAiu.I/qaX8hXu"
  reserved: true
  description: "OpenSearch Dashboards user"

Stellen Sie sicher, dass Sie den Hashwert für das Passwort durch den von Ihnen generierten Hashwert für Ihr Passwort ersetzen. Damit erstellen Sie einen weiteren OpenSearch-Benutzer, den Benutzer "kibanaserver", der von den OpenSearch-Dashboards verwendet wird.

Änderungen anwenden

Nachdem die TLS-Zertifikate installiert und die Demo-Benutzer entfernt bzw. mit neuen Passwörtern versehen wurden, besteht der letzte Schritt darin, die Konfigurationsänderungen anzuwenden. Dieser letzte Konfigurationsschritt erfordert den Aufruf von securityadmin.sh, während OpenSearch auf dem Host läuft.

• OpenSearch muss ausgeführt werden, damit securityadmin.sh die Änderungen übernehmen kann. Wenn Sie Änderungen an der Datei opensearch.yml vorgenommen haben, starten Sie OpenSearch neu.
sudo systemctl restart opensearch
• Öffnen Sie eine weitere Terminalsitzung mit dem Host und wechseln Sie in das Verzeichnis mit der Datei securityadmin.sh.
# Wechseln Sie in das richtige Verzeichnis
cd /usr/share/opensearch/plugins/opensearch-security/tools
Rufen Sie das Skript auf. Unter Änderungen anwenden („Apply changes“) mit securityadmin.sh finden Sie Definitionen der Argumente, die Sie übergeben müssen.
# Sie können die Umgebungsvariable weglassen, wenn Sie diese in Ihrem $PATH angegeben haben.
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
Ausgabe:
**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755           **
**************************************************************************
Security Admin v7
Will connect to localhost:9200 ... done
Connected as "CN=A,OU=UNIT,O=ORG,L=MUSTERSTADT,ST=NRW,C=DE"
OpenSearch Version: 2.8.0
Contacting opensearch cluster 'opensearch' and wait for YELLOW clusterstate ...
Clustername: opensearch
Clusterstate: GREEN
Number of nodes: 1
Number of data nodes: 1
.opendistro_security index already exists, so we do not need to create one.
Populate config from /etc/opensearch/opensearch-security/
Will update '/config' with /etc/opensearch/opensearch-security/config.yml
   SUCC: Configuration for 'config' created or updated
Will update '/roles' with /etc/opensearch/opensearch-security/roles.yml
   SUCC: Configuration for 'roles' created or updated
Will update '/rolesmapping' with /etc/opensearch/opensearch-security/roles_mapping.yml
   SUCC: Configuration for 'rolesmapping' created or updated
Will update '/internalusers' with /etc/opensearch/opensearch-security/internal_users.yml
   SUCC: Configuration for 'internalusers' created or updated
Will update '/actiongroups' with /etc/opensearch/opensearch-security/action_groups.yml
   SUCC: Configuration for 'actiongroups' created or updated
Will update '/tenants' with /etc/opensearch/opensearch-security/tenants.yml
   SUCC: Configuration for 'tenants' created or updated
Will update '/nodesdn' with /etc/opensearch/opensearch-security/nodes_dn.yml
   SUCC: Configuration for 'nodesdn' created or updated
Will update '/whitelist' with /etc/opensearch/opensearch-security/whitelist.yml
   SUCC: Configuration for 'whitelist' created or updated
Will update '/audit' with /etc/opensearch/opensearch-security/audit.yml
   SUCC: Configuration for 'audit' created or updated
Will update '/allowlist' with /etc/opensearch/opensearch-security/allowlist.yml
   SUCC: Configuration for 'allowlist' created or updated
SUCC: Expected 10 config types for node {"updated_config_types":["allowlist","tenants","rolesmapping","nodesdn","audit","roles","whitelist","internalusers","actiongroups","config"],"updated_config_size":10,"message":null} is 10 (["allowlist","tenants","rolesmapping","nodesdn","audit","roles","whitelist","internalusers","actiongroups","config"]) due to: null
Done with success

Überprüfen, ob der Dienst läuft

OpenSearch wird auf dem Host mit einem benutzerdefinierten TLS-Zertifikat und einem sicheren Benutzer für die grundlegende Authentifizierung ausgeführt. Sie können die externe Konnektivität überprüfen, indem Sie von einem anderen Host aus eine API-Anfrage an den OpenSearch-Knoten senden.

In unserem letzten Test haben wir eine Anfrage an localhost gesendet. Wenn ein TLS-Zertifikat verwendet wird und das neue Zertifikat auf den tatsächlichen DNS-Eintrag des Hosts verweist, schlägt eine Anfrage an localhost bei der CN-Prüfung fehl und das Zertifikat wird als ungültig betrachtet. Stattdessen sollte die Anfrage an die Adresse gesendet werden, die bei der Erstellung des Zertifikats angegeben wurde.

Hinweis

Sie müssen Ihrem Client Vertrauen für das Root-Zertifikat hinzufügen, bevor Sie Anfragen senden. Wenn Sie kein Vertrauen hinzufügen, müssen Sie die Option -k verwenden, damit cURL die CN- und Root-Zertifikatvalidierung ignoriert.

API-Anfrage als Benutzer admin:
curl https://your.host.address:9200 -u admin:yournewpassword -k
Ausgabe:
{
  "name" : "vs31deb-tm",
  "cluster_name" : "opensearch",
  "cluster_uuid" : "pB3CI33oRYiDQPKHI0BAww",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.8.0",
    "build_type" : "deb",
    "build_hash" : "db90a415ff2fd428b4f7b3f800a51dc229287cb4",
    "build_date" : "2023-06-03T06:22:11.808047829Z",
    "build_snapshot" : false,
    "lucene_version" : "9.6.0",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}
API-Anfrage als Benutzer kibanaserver:
curl https://your.host.address:9200 -u kibanaserver:yournewpassword -k
Ausgabe:
{
  "name" : "vs31deb-tm",
  "cluster_name" : "opensearch",
  "cluster_uuid" : "pB3CI33oRYiDQPKHI0BAww",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.8.0",
    "build_type" : "deb",
    "build_hash" : "db90a415ff2fd428b4f7b3f800a51dc229287cb4",
    "build_date" : "2023-06-03T06:22:11.808047829Z",
    "build_snapshot" : false,
    "lucene_version" : "9.6.0",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Sollte anstatt der beschriebenen Ausgaben die folgende Fehlermeldung erscheinen
curl: (56) Received HTTP code 403 from proxy after CONNECT
Erweitern Sie den letzten Befehl um die Option --noproxy ‘*’
curl https://your.host.address:9200 -u ibanaserver:yournewpassword -k -–noproxy ‘*’
curl https://your.host.address:9200 -u ibanaserver:yournewpassword -k -–noproxy ‘*’

Installation von OpenSearch Dashboards aus einem APT-Repository

APT, das primäre Paketverwaltungswerkzeug für Debian-basierte Betriebssysteme, ermöglicht das Herunterladen und Installieren von Debian-Paketen aus APT-Repositories.

Installieren Sie die erforderlichen Pakete:
sudo apt-get update && sudo apt-get -y install lsb-release ca-certificates curl gnupg2
Importieren Sie den öffentlichen GPG-Schlüssel. Dieser Schlüssel wird verwendet, um zu überprüfen, ob das APT-Repository signiert ist:
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
Erstellen Sie ein APT-Repository für OpenSearch:
echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-dashboards-2.x.list
Überprüfen Sie, ob das Repository erfolgreich erstellt wurde:
sudo apt-get update
Mit den hinzugefügten Repository-Informationen können Sie alle verfügbaren Versionen von OpenSearch auflisten:
sudo apt list -a opensearch-dashboards
Wählen Sie die Version von OpenSearch, die Sie installieren möchten:
• Wenn nicht anders angegeben, wird die neueste verfügbare Version von OpenSearch installiert.
sudo apt-get install opensearch-dashboards
• Um eine bestimmte Version von OpenSearch Dashboards zu installieren, geben Sie eine Versionsnummer hinter dem Paketnamen an.
# Geben Sie die Version manuell mit opensearch=<version> an.
sudo apt-get install opensearch-dashboards=2.8.0
Aktivieren Sie anschließend OpenSearch Dashboards:
sudo systemctl enable opensearch-dashboards
Starten Sie OpenSearch Dashboards:
sudo systemctl start opensearch-dashboards
Überprüfen Sie, ob OpenSearch korrekt gestartet wurde:
sudo systemctl status opensearch-dashboards

Das OpenSearch-Dashboard kennenlernen

Standardmäßig ist das OpenSearch-Dashboard, ebenso wie OpenSearch, bei der Erstinstallation an localhost gebunden. Daher ist das OpenSearch-Dashboard von entfernten Computern aus nicht zugänglich, es sei denn, die Konfiguration wird aktualisiert.

Öffnen Sie opensearch_dashboards.yml:
sudo nano /etc/opensearch-dashboards/opensearch_dashboards.yml
Geben Sie eine Netzwerkschnittstelle an, an die sich OpenSearch Dashboards binden soll:
# Verwenden Sie 0.0.0.0, um sich an jede verfügbare Schnittstelle zu binden.
server.host: 0.0.0.0
Fügen Sie die folgenden Zeilen am Ende der Datei ein, falls sie noch nicht vorhanden sind. Achten Sie darauf, dass die Parameter 'opensearch.hosts', 'opensearch.username' und 'opensearch.password' mit den Daten Ihres OpenSearch-Servers übereinstimmen.
opensearch.hosts: [https://localhost:9200]
opensearch.ssl.verificationMode: none
opensearch.username: kibanaserver
opensearch.password: kibanapass

Speichern und Beenden.

Starten Sie OpenSearch Dashboards neu, um die Konfigurationsänderung zu übernehmen.
sudo systemctl restart opensearch-dashboards

Navigieren Sie in einem Webbrowser zu OpenSearch Dashboards. Der Standardport ist 5601.

Hinweis:

Das Dashboard ist noch nicht über https, sondern nur über http erreichbar.

Melden Sie sich mit dem Standardbenutzernamen admin und dem Standardkennwort admin an.

Hinweis:

Wenn Sie diesem Tutorial gefolgt sind, dann haben Sie das admin Standard-Passwort geändert. Verwenden Sie stattdessen das Passwort, für das Sie weiter oben mit dem Security Plugin den Hash-Wert generiert haben.

Besuchen Sie Erste Schritte mit OpenSearch Dashboards, um mehr zu erfahren.