OpenSearch Installation · 28 min read · Oct 12, 2025

So installieren Sie OpenSearch auf Debian 12

OpenSearch ist ein Open-Source-Fork von Elasticsearch und Kibana, der von Amazon entwickelt wurde. Es ist eine Echtzeit-, verteilte und skalierbare Suchmaschine, die sowohl Volltextsuche als auch Analysen ermöglicht. Es wird verwendet, um große Datenmengen zu indizieren und zu durchsuchen. Es wird häufig zusammen mit OpenSearch Dashboards (einem Fork von Kibana) bereitgestellt, einem leistungsstarken Datenvisualisierungs-Dashboard für OpenSearch. OpenSearch Dashboards ermöglicht es Ihnen, die OpenSearch-Protokolldaten zu erkunden und Dashboards und Abfragen zu erstellen, um Einblicke in Ihre Anwendung zu gewinnen.

Dieses Tutorial zeigt Ihnen, wie Sie OpenSearch auf einem Debian 12-Server installieren. Sie lernen auch, wie Sie Ihre Installation mit benutzerdefinierten TLS-Zertifikaten sichern und die Authentifizierung in OpenSearch aktivieren.

Voraussetzungen

  • Ein Server, der Debian 12 mit mindestens 4 GB RAM ausführt.

  • Ein Nicht-Root-Benutzer mit Sudo-Rechten.

  • Die unkomplizierte Firewall (UFW) ist aktiviert und läuft.

  • Ein vollständig qualifizierter Domainname (FQDN) wie opensearch.example.com, der auf Ihren Server zeigt. Dies ist vorteilhaft, wenn Sie OpenSearch Dashboards über SSL mit einem Proxy-Server bereitstellen möchten.

  • Alles ist aktualisiert. $ sudo apt update && sudo apt upgrade

  • Einige essentielle Pakete sind erforderlich, damit das Tutorial und Craft CMS ausgeführt werden können. Einige davon sind möglicherweise bereits auf Ihrem Server vorhanden. $ sudo apt install curl wget nano software-properties-common dirmngr apt-transport-https ca-certificates lsb-release debian-archive-keyring gnupg2 ufw unzip -y

Schritt 1 - Firewall konfigurieren

Der erste Schritt vor der Installation von Paketen besteht darin, die Firewall so zu konfigurieren, dass HTTP- und HTTPS-Verbindungen erlaubt sind.

Überprüfen Sie den Status der Firewall.

$ sudo ufw status

Sie sollten etwas Ähnliches wie Folgendes sehen.

Status: aktiv

Zu                         Aktion      Von
--                         ------      ----
OpenSSH                    ERLAUBEN    Überall
OpenSSH (v6)               ERLAUBEN    Überall (v6)

Erlauben Sie HTTP- und HTTPS-Ports.

$ sudo ufw allow http
$ sudo ufw allow https

Überprüfen Sie den Status erneut zur Bestätigung.

$ sudo ufw status
Status: aktiv

Zu                         Aktion      Von
--                         ------      ----
OpenSSH                    ERLAUBEN    Überall
80/tcp                     ERLAUBEN    Überall
443/tcp                    ERLAUBEN    Überall
OpenSSH (v6)               ERLAUBEN    Überall (v6)
80/tcp (v6)                ERLAUBEN    Überall (v6)
443/tcp (v6)               ERLAUBEN    Überall (v6)

Schritt 2 - System vorbereiten

Bevor wir OpenSearch installieren, müssen wir unser System darauf vorbereiten und optimieren. Es sind mehrere Schritte erforderlich, darunter das Deaktivieren des Swap-Speichers, falls vorhanden, das Festlegen der Anzahl der Speicherkarten für Ihr System und das Einrichten des System-Hostnamens.

Überprüfen Sie zunächst, ob Sie Swap-Speicher aktiviert haben.

$ free -m

Wenn Sie Swap aktiviert haben, sollten Sie eine ähnliche Ausgabe sehen.

               total        used        free      shared  buff/cache   available
Mem:            7945        1083        6492          34         636        6861
Swap:           4242           0        4242

Führen Sie die folgenden Befehle aus, um den Swap-Speicher dauerhaft zu deaktivieren.

$ sudo swapoff -a
$ sudo sed -i '/ swap / s/^\(.*\)$/#
1/g' /etc/fstab

Überprüfen Sie erneut den Swap-Speicher, und es sollte Folgendes angezeigt werden.

               total        used        free      shared  buff/cache   available
Mem:            7945        1113        6449          37         651        6831
Swap:              0           0           0

OpenSearch verwendet standardmäßig ein mapfs-Verzeichnis, um seine Indizes zu speichern. Die Standardbetriebssystemgrenzen für nmap-Zählungen sind zu niedrig, was zu Speichermangelfehlern führen kann.

Überprüfen Sie den aktuellen Wert der Variablen vm.max_map_count.

$ sysctl -n vm.max_map_count
65530

Um die Anzahl der von jedem Prozess verwendeten Speicherkarten zu erhöhen, führen Sie den folgenden Befehl aus.

$ sudo sysctl -w vm.max_map_count=262144

Dies funktioniert nur bis zum Neustart des Systems. Um diesen Wert dauerhaft zu machen, fügen Sie die Zeile vm.max_map_count=262144 in die Datei /etc/sysctl.conf mit dem folgenden Befehl ein.

$ echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

Sie können die Änderung dauerhaft machen, indem Sie entweder das System neu starten oder den folgenden Befehl ausführen.

$ sudo sysctl -p

Der letzte Schritt besteht darin, den Hostnamen einzurichten. Je nachdem, wo Sie Ihren Server hosten, erlauben einige Cloud-Anbieter, dass Sie Ihren Hostnamen direkt über ihr Kontrollfeld festlegen. Es ist jedoch besser, dies über das Terminal zu tun.

Führen Sie den folgenden Befehl aus, um den Hostnamen festzulegen.

$ sudo hostnamectl set-hostname opensearch

Fügen Sie den FQDN (Fully Qualified Domain Name) zur Datei /etc/hosts hinzu. Hierzu verknüpfen wir den Hostnamen opensearch mit dem Domainnamen opensearch.example.com und weisen ihn der Server-IP-Adresse zu. Ersetzen Sie im folgenden Befehl durch die IP-Adresse Ihres Servers.

$ echo "  opensearch.example.com  opensearch" | sudo tee -a /etc/hosts

Überprüfen Sie den Hostnamen und den FQDN mit den folgenden Befehlen.

$ hostname
opensearch
$ hostname -f
opensearch.example.com

Damit ist der Prozess der Optimierung unseres Systems für die Arbeit mit OpenSearch abgeschlossen.

Schritt 3 - OpenSearch installieren

Importieren Sie den OpenSearch GPG-Schlüssel, der zum Signieren des Installationspakets verwendet wird.

$  curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring

Erstellen Sie die OpenSearch APT-Repository-Datei.

$ echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list

Aktualisieren Sie die System-Repository-Liste.

$ sudo apt update

Überprüfen Sie alle verfügbaren Versionen von OpenSearch.

$ sudo apt list -a opensearch
Listing... Done
opensearch/stable 2.12.0 amd64
opensearch/stable 2.11.1 amd64
opensearch/stable 2.11.0 amd64
opensearch/stable 2.10.0 amd64
opensearch/stable 2.9.0 amd64
opensearch/stable 2.8.0 amd64
opensearch/stable 2.7.0 amd64
opensearch/stable 2.6.0 amd64
opensearch/stable 2.5.0 amd64

Die neueste Version von OpenSearch v2.12.0 erfordert, dass Sie das Admin-Demo-Passwort vor der Installation festlegen, da es sonst fehlschlägt.

Sie können die neueste Version von OpenSearch mit dem folgenden Befehl installieren. Wir können das Admin-Demo-Passwort mit der Umgebungsvariable im Installationsbefehl selbst festlegen. Wählen Sie ein starkes Passwort.

$ sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD= apt install opensearch

Wenn Sie während der Installation die folgende Warnung sehen, können Sie diese sicher ignorieren.

......
chown: warning: '.' should be ':': ‘opensearch.opensearch’
chown: warning: '.' should be ':': ‘opensearch.opensearch’
chown: warning: '.' should be ':': ‘opensearch.opensearch’
chown: warning: '.' should be ':': ‘opensearch.opensearch’
chown: warning: '.' should be ':': ‘opensearch.opensearch’
......

Oder Sie können eine bestimmte Version installieren.

$ sudo apt install opensearch=2.11.1

Laden Sie den Dienstdaemon neu.

$ sudo systemctl daemon-reload

Aktivieren Sie den OpenSearch-Dienst.

$ sudo systemctl enable opensearch

Starten Sie den OpenSearch-Dienst.

$ sudo systemctl start opensearch

Überprüfen Sie den Status des OpenSearch-Dienstes.

$ sudo systemctl status opensearch

Sie sollten die folgende Ausgabe erhalten.

? opensearch.service - OpenSearch
     Loaded: loaded (/lib/systemd/system/opensearch.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-03-02 06:37:01 UTC; 5s ago
       Docs: https://opensearch.org/
   Main PID: 31109 (java)
      Tasks: 75 (limit: 4652)
     Memory: 1.3G
        CPU: 1min 3.128s
     CGroup: /system.slice/opensearch.service
             ??31109 /usr/share/opensearch/jdk/bin/java -Xshare:auto -Dopensearch.networkaddress.cache.ttl=60 -Dopensearch.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true...

Schritt 4 - OpenSearch testen

Bevor wir weiter machen, lassen Sie uns überprüfen, ob die Installation einwandfrei funktioniert. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob OpenSearch wie gewünscht läuft.

$ curl -X GET https://localhost:9200 -u 'admin:' --insecure

Sie sollten eine ähnliche Ausgabe erhalten.

{
  "name" : "opensearch",
  "cluster_name" : "opensearch",
  "cluster_uuid" : "3oFvYn96St2MOpDP3Sf29g",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.12.0",
    "build_type" : "deb",
    "build_hash" : "2c355ce1a427e4a528778d4054436b5c4b756221",
    "build_date" : "2024-02-20T02:18:31.541484890Z",
    "build_snapshot" : false,
    "lucene_version" : "9.9.2",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "Das OpenSearch-Projekt: https://opensearch.org/"
}

Abfragen Sie den OpenSearch-Plugins-Endpunkt, um die Liste der verfügbaren Plugins anzuzeigen.

$ curl -X GET https://localhost:9200/_cat/plugins?v -u 'admin:' --insecure

Sie können auch den folgenden Befehl dafür verwenden.

$ /usr/share/opensearch/bin/opensearch-plugin list

Sie sollten eine ähnliche Ausgabe erhalten.

name       component                            version
opensearch opensearch-alerting                  2.12.0.0
opensearch opensearch-anomaly-detection         2.12.0.0
opensearch opensearch-asynchronous-search       2.12.0.0
opensearch opensearch-cross-cluster-replication 2.12.0.0
opensearch opensearch-custom-codecs             2.12.0.0
opensearch opensearch-flow-framework            2.12.0.0
opensearch opensearch-geospatial                2.12.0.0
opensearch opensearch-index-management          2.12.0.0
opensearch opensearch-job-scheduler             2.12.0.0
opensearch opensearch-knn                       2.12.0.0
opensearch opensearch-ml                        2.12.0.0
opensearch opensearch-neural-search             2.12.0.0
opensearch opensearch-notifications             2.12.0.0
opensearch opensearch-notifications-core        2.12.0.0
opensearch opensearch-observability             2.12.0.0
opensearch opensearch-performance-analyzer      2.12.0.0
opensearch opensearch-reports-scheduler         2.12.0.0
opensearch opensearch-security                  2.12.0.0
opensearch opensearch-security-analytics        2.12.0.0
opensearch opensearch-skills                    2.12.0.0
opensearch opensearch-sql                       2.12.0.0

Sie können zusätzliche Plugins mit dem folgenden Befehl installieren.

$ /usr/share/opensearch/bin/opensearch-plugin install 

Sie finden die Liste der verfügbaren OpenSearch-Plugins auf ihrer offiziellen Website.

Schritt 5 - OpenSearch konfigurieren

Die Standardeinstellungen von OpenSearch sind nicht für eine Produktionsumgebung geeignet. Standardmäßig ist OpenSearch nicht an eine Netzwerkschnittstelle gebunden und von außen nicht erreichbar. Darüber hinaus werden Standardbenutzernamen und -passwörter verwendet, die Sicherheitsprobleme verursachen können, wenn sie direkt in einer Produktionsumgebung verwendet werden.

OpenSearch speichert seine Konfiguration in der Datei /etc/opensearch/opensearch.yml. Öffnen Sie sie zur Bearbeitung.

$ sudo nano /etc/opensearch/opensearch.yml

Suchen Sie die Zeile #network.host: 192.168.0.1 und entfernen Sie das Kommentarzeichen (#) davor und ändern Sie ihren Wert wie gezeigt. Dies bindet OpenSearch an alle verfügbaren Schnittstellen. Sie können auch eine spezifische IP-Adresse eingeben, um es an eine bestimmte Schnittstelle zu binden.

# Setzen Sie die Bindungsadresse auf eine spezifische IP (IPv4 oder IPv6):
#
network.host: 0.0.0.0

Fügen Sie die folgenden Zeilen am Ende der Datei hinzu.

# Sofern Sie nicht bereits einen Cluster konfiguriert haben, sollten Sie discovery.type auf single-node setzen, oder die Bootstrap-Überprüfungen schlagen fehl, wenn Sie versuchen, den Dienst zu starten.
discovery.type: single-node

# Wenn Sie das Sicherheits-Plugin in opensearch.yml zuvor deaktiviert haben, stellen Sie sicher, dass Sie es wieder aktivieren. Andernfalls können Sie diese Einstellung überspringen.
plugins.security.disabled: false

Da wir auf einem einzelnen Server installieren, haben wir discovery.type auf single-node gesetzt. Das Setzen von plugins.security.disabled auf false aktiviert das Sicherheits-Plugin von OpenSearch.

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Wir müssen auch die anfänglichen und maximalen JVM (Java Virtual Memory) Heap-Größen angeben. Diese Einstellung hängt von der RAM-Größe Ihres Servers ab. Zum Beispiel verwenden wir einen Server mit 4 GB RAM, also setzen wir die Heap-Größe auf 3 GB.

Erstellen und öffnen Sie die Datei heapsize.options im Verzeichnis /etc/opensearch/jvm.options.d zur Bearbeitung. Sie wird den Standardwert in der Datei /etc/opensearch/jvm.options überschreiben.

$ sudo nano /etc/opensearch/jvm.options.d/heapsize.options

Fügen Sie die folgenden Zeilen hinzu.

-Xms3g
-Xmx3g

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den OpenSearch-Dienst neu, um die Änderungen zu implementieren.

$ sudo systemctl restart opensearch

Sie können die aktuelle Heap-Größe und den maximalen Speicher mit dem folgenden Befehl überprüfen.

$ curl -sS "https://localhost:9200/_cat/nodes?h=heap*&v" -u 'admin:' --insecure

Sie sollten die folgende Ausgabe erhalten.

heap.current heap.percent heap.max
     345.5mb           11      3gb

Schritt 6 - TLS für OpenSearch konfigurieren

Hier werden wir Zertifikate generieren, um OpenSearch abzusichern. TLS-Zertifikate bieten Sicherheit, indem sie es Clients ermöglichen, die Identität von Hosts zu bestätigen und den Datenverkehr zwischen einem Client und dem Host zu verschlüsseln. Wir werden die folgenden Zertifikate generieren:

  1. Root-CA-Zertifikate - Dies sind die primären Zertifikate, die alle anderen Zertifikate signieren.
  2. Admin-Zertifikate - Diese Zertifikate werden verwendet, um erhöhte Rechte für die Durchführung administrativer Aufgaben im Zusammenhang mit dem Sicherheits-Plugin zu erhalten.
  3. Node-Zertifikate - Diese Zertifikate werden für die Kommunikation zwischen einem Knoten und dem Client verwendet.

Alle OpenSearch-Zertifikate werden im Verzeichnis /etc/opensearch gespeichert. Der erste Schritt besteht darin, die während der Installation von OpenSearch festgelegten Standardzertifikate zu entfernen.

Wechseln Sie in das OpenSearch-Verzeichnis.

$ cd /etc/opensearch

Entfernen Sie die Standardzertifikate.

$ sudo rm -f *.pem

Öffnen Sie die OpenSearch-Konfigurationsdatei zur Bearbeitung.

$ sudo nano opensearch.yml

Kommentieren Sie den folgenden Code am Ende der Datei aus, indem Sie ein Hash-Zeichen vor jede Zeile im Abschnitt OpenSearch Security Demo Configuration setzen, wie unten gezeigt.

######## Start OpenSearch Security Demo Configuration ########
# WARNUNG: Überprüfen Sie alle Zeilen unten, bevor Sie in die Produktion gehen
#plugins.security.ssl.transport.pemcert_filepath: esnode.pem
#plugins.security.ssl.transport.pemkey_filepath: esnode-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: esnode.pem
#plugins.security.ssl.http.pemkey_filepath: esnode-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: ['CN=kirk,OU=client,O=client,L=test,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.restapi.roles_enabled: [all_access, security_rest_api_access]
#plugins.security.system_indices.enabled: true
#plugins.security.system_indices.indices: [.plugins-ml-config, .plugins-ml-connector,
#  .plugins-ml-model-group, .plugins-ml-model, .plugins-ml-task, .plugins-ml-conversation-meta,
#  .plugins-ml-conversation-interactions, .plugins-ml-memory-meta, .plugins-ml-memory-message,
#  .opendistro-alerting-config, .opendistro-alerting-alert*, .opendistro-anomaly-results*,
#  .opendistro-anomaly-detector*, .opendistro-anomaly-checkpoints, .opendistro-anomaly-detection-state,
#  .opendistro-reports-*, .opensearch-notifications-*, .opensearch-notebooks, .opensearch-observability,
#  .ql-datasources, .opendistro-asynchronous-search-response*, .replication-metadata-store,
#  .opensearch-knn-models, .geospatial-ip2geo-data*, .plugins-flow-framework-config,
#  .plugins-flow-framework-templates, .plugins-flow-framework-state]
#node.max_local_storage_nodes: 3
######## Ende der OpenSearch Security Demo-Konfiguration ########

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Erstellen Sie als Nächstes ein Verzeichnis zum Speichern der Zertifikate im Verzeichnis /etc/opensearch.

$ sudo mkdir /etc/opensearch/certs

Ändern Sie die Berechtigung des Verzeichnisses auf den aktuell angemeldeten Benutzer, um zu vermeiden, dass Sie sudo verwenden, während Sie die Zertifikate generieren.

$ sudo chown $USER:$USER /etc/opensearch/certs -R

Wechseln Sie in das Zertifikatsverzeichnis.

$ cd /etc/opensearch/certs

Root-Zertifikate generieren

Generieren Sie einen privaten Schlüssel für das Root-Zertifikat.

$ openssl genrsa -out root-ca-key.pem 2048

Generieren Sie ein selbstsigniertes Root-CA-Zertifikat. Wir verwenden den Parameter -subj, um Informationen bereitzustellen, die im Zertifikat eingebettet sind. Wenn Sie das Flag -subj nicht verwenden, werden Sie nach all diesen Informationen gefragt.

$ openssl req -new -x509 -sha256 -key root-ca-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=ROOT" -out root-ca.pem -days 730

Sie können die Informationen an Ihre spezifische Hostumgebung anpassen.

Die Variablen im Parameter -subj bedeuten Folgendes.

C = Ländercode (2 Buchstaben), ST = Bundesland oder Provinzname (vollständiger Name), L = Ortsname (z.B. Stadt), O = Name der Organisation, OU = Name der organisatorischen Einheit (z.B. Abteilung), CN = Gemeinsamer Name (z.B. Server-FQDN)

Ihr Root-Zertifikat ist jetzt aktiv.

Admin-Zertifikate generieren

Generieren Sie den privaten Schlüssel für das Admin-Zertifikat mit dem folgenden Befehl.

$ openssl genrsa -out admin-key-temp.pem 2048

Konvertieren Sie den privaten Schlüssel in das PKCS#8-Format zur Verwendung in Java mit einem PKCS#12-kompatiblen Algorithmus (3DES).

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

Generieren Sie die Admin-CSR (Certificate Signing Request) aus dem privaten Schlüssel. Da dieses Zertifikat nicht an Hosts gebunden ist und zur Authentifizierung von erhöhtem Zugriff verwendet wird, verwenden wir den Wert A für den Common Name (CN).

$ openssl req -new -key admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A" -out admin.csr

Signieren Sie die Admin-CSR mit dem Root-Zertifikat und dem privaten Schlüssel, den Sie gerade erstellt haben.

$ openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
Zertifikatsanforderung Selbstsignatur ok
subject=C = CA, ST = ONTARIO, L = TORONTO, O = ORG, OU = UNIT, CN = A

Node-Zertifikate generieren

Generieren Sie einen privaten Schlüssel für das Node-Zertifikat.

$ openssl genrsa -out node1-key-temp.pem 2048

Konvertieren Sie den privaten Schlüssel des Knotens in das PKCS#8-Format.

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

Erstellen Sie eine neue CSR für das Node-Zertifikat aus dem privaten Schlüssel. Stellen Sie sicher, dass Sie den Wert der CN-Variablen mit dem Hostnamen Ihres Knotens ändern. Dieses Zertifikat ist an Ihre Hosts gebunden und sollte mit dem Hostnamen oder der IP-Adresse des Knotens übereinstimmen.

$ openssl req -new -key node1-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=opensearch.example.com" -out node1.csr

Erstellen Sie eine SAN (Subject Alternative Name)-Erweiterungsdatei, die den Hostnamen oder FQDN oder die IP-Adresse des Knotens enthält.

$ sh -c 'echo subjectAltName=DNS:opensearch.example.com > node1.ext'

Signieren Sie die Node-Zertifikats-CSR mit dem Root-Zertifikat und dem privaten Schlüssel, den Sie gerade erstellt haben.

$ 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
Zertifikatsanforderung Selbstsignatur ok
subject=C = CA, ST = ONTARIO, L = TORONTO, O = ORG, OU = UNIT, CN = opensearch.example.com

Zertifikate für die Installation vorbereiten

Entfernen Sie alle temporären Zertifikate, CSRs und die SAN-Erweiterungsdatei.

$ rm -f *temp.pem *csr *ext

Als Nächstes werden wir das Root-CA-Zertifikat auf dem Server installieren. Dazu konvertieren wir das Root-CA-Zertifikat in das .crt-Format.

$ openssl x509 -outform der -in root-ca.pem -out root-ca.crt

Kopieren Sie die Datei root-ca.crt in das Verzeichnis /usr/local/share/ca-certificates/.

$ sudo cp root-ca.crt /usr/local/share/ca-certificates/

Fügen Sie das Root-CA-Zertifikat zu Ihrem Debian-Server mit dem folgenden Befehl hinzu.

$ sudo update-ca-certificates

Sie sollten die folgende Ausgabe sehen ( 1 hinzugefügt), die bestätigt, dass das Root-CA-Zertifikat zu Ihrem System hinzugefügt wurde.

Aktualisierung der Zertifikate in /etc/ssl/certs...
rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL
rehash: warning: skipping root-ca.pem,it does not contain exactly one certificate or CRL
1 hinzugefügt, 0 entfernt; fertig.
Ausführen von Hooks in /etc/ca-certificates/update.d...
fertig.

Ändern Sie den Besitz des Verzeichnisses zurück auf den Benutzer opensearch.

$ sudo chown opensearch:opensearch /etc/opensearch/certs -R

Ändern Sie die Berechtigung des Verzeichnisses auf 0700.

$ sudo chmod 0700 /etc/opensearch/certs

Ändern Sie die Berechtigung der Zertifikate auf 0600.

$ sudo chmod 0600 /etc/opensearch/certs/{admin-key,admin,node1-key,node1,root-ca-key,root-ca}.pem
$ sudo chmod 0600 /etc/opensearch/certs/root-ca.crt

Schritt 7 - TLS in OpenSearch installieren

Jetzt, da alle Zertifikate generiert und eingerichtet sind, ist es an der Zeit, die Zertifikate zu installieren und zu Ihrer OpenSearch-Installation hinzuzufügen.

Der erste Schritt besteht darin, ein Bash-Skript zu erstellen, das alle erstellten Zertifikate und die TLS-Sicherheitseinstellungen in die OpenSearch-Konfigurationsdatei (/etc/opensearch/opensearch.yml) hinzufügt.

Erstellen Sie eine Datei mit dem Namen add-opensearch-tls.sh und öffnen Sie sie zur Bearbeitung.

$ cd ~
$ nano add-opensearch-tls.sh

Fügen Sie den folgenden Code ein.

#! /bin/bash

# Bevor Sie dieses Skript ausführen, stellen Sie sicher, dass Sie den CN im 
# Distinguished Name des Knotens durch einen echten DNS-A-Eintrag ersetzen.

echo "plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/node1.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/node1-key.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.enabled: true" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/certs/node1.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/node1-key.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.allow_default_init_securityindex: true" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.authcz.admin_dn:" | sudo tee -a /etc/opensearch/opensearch.yml
echo "  - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.nodes_dn:" | sudo tee -a /etc/opensearch/opensearch.yml
echo "  - 'CN=opensearch.example.com,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.audit.type: internal_opensearch" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.enable_snapshot_restore_privilege: true" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.check_snapshot_restore_write_privileges: true" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.restapi.roles_enabled: [\"all_access\", \"security_rest_api_access\"]" | sudo tee -a /etc/opensearch/opensearch.yml

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Machen Sie die Datei ausführbar.

$ chmod +x add-opensearch-tls.sh

Führen Sie das Skript aus.

$ ./add-opensearch-tls.sh

Sie sollten die folgende Ausgabe erhalten.

plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/node1.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/node1-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/certs/node1.pem
plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/node1-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
  - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.nodes_dn:
  - 'CN=opensearch.example.com,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]

Öffnen Sie die Datei /etc/opensearch/opensearch.yml, um zu überprüfen, ob Ihre Einstellungen angewendet wurden.

$ sudo nano /etc/opensearch/opensearch.yml

Scrollen Sie zum Ende der Datei, und Sie sollten Folgendes sehen.

# Wenn Sie das Sicherheits-Plugin in opensearch.yml zuvor deaktiviert haben,
# stellen Sie sicher, dass Sie es wieder aktivieren. Andernfalls können Sie diese Einstellung überspringen.
plugins.security.disabled: false
....
plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/node1.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/node1-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/certs/node1.pem
plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/node1-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/certs/root-ca.pem
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
  - 'CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.nodes_dn:
  - 'CN=opensearch.example.com,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA'
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]

Sobald Sie zufrieden sind, speichern Sie die Datei, indem Sie Strg + X drücken.

Schritt 8 - OpenSearch-Benutzer erstellen

In diesem Schritt werden wir alle Demobenutzer außer dem admin-Benutzer entfernen und das Standard-Admin-Passwort mit einem Skript ersetzen.

Wechseln Sie in das Verzeichnis der OpenSearch-Sicherheits-Plugin-Tools.

$ cd /usr/share/opensearch/plugins/opensearch-security/tools

Führen Sie das Skript hash.sh aus, um ein neues Passwort zu generieren.

$ ./hash

Das Skript schlägt fehl, und Sie erhalten die folgende Fehlermeldung, da der Pfad zur Java-Executable (JDK) nicht definiert wurde.

************************************************************************
 Dieses Tool wird in der nächsten Hauptversion von OpenSearch nicht mehr unterstützt 
 https://github.com/opensearch-project/security/issues/1755           
**********************************************************************
WARNUNG: weder OPENSEARCH_JAVA_HOME noch JAVA_HOME ist gesetzt, wird verwenden
./hash.sh: Zeile 35: java: Befehl nicht gefunden

Führen Sie den Befehl erneut aus, indem Sie die Umgebungsvariable OPENSEARCH_JAVA_HOME mit dem Speicherort des JDK deklarieren.

$ OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./hash.sh

Sie erhalten eine ähnliche Ausgabe.

**********************************************************************
 Dieses Tool wird in der nächsten Hauptversion von OpenSearch nicht mehr unterstützt 
 https://github.com/opensearch-project/security/issues/1755           
**********************************************************************
[Passwort:]
$2y$12$4NL0LqEnN4FXaUdQQC.gOupeCQT2IuMo9gN0b5d3nxdMVbLX088f2

Es wird der Passwort-Hash generiert, den wir später benötigen.

Öffnen Sie die OpenSearch-Benutzerkonfigurationsdatei internal_users.yml im Verzeichnis /etc/opensearch/opensearch-security/ zur Bearbeitung.

$ sudo nano /etc/opensearch/opensearch-security/internal_users.yml

Kommentieren Sie alle Demobenutzer aus, indem Sie ein Hash-Zeichen davor setzen, wie gezeigt.

---
# Dies ist die interne Benutzerdatenbank
# Der Hashwert ist ein bcrypt-Hash und kann mit plugin/tools/hash.sh generiert werden

_meta:
  type: "internalusers"
  config_version: 2

# Definieren Sie hier Ihre internen Benutzer

## Demobenutzer

#admin:
#  hash: "$2y$12$Twy84uxOX0SQ1QMQ68og8O/i1MvqWItt/phZX3DiJMjpBoT9u9KX6"
#  reserved: true
#  backend_roles:
#  - "admin"
#  description: "Demo-Admin-Benutzer"

#anomalyadmin:

Fügen Sie den Admin-Benutzer mit dem Hash hinzu, den Sie oben generiert haben, wie gezeigt.

---
# Dies ist die interne Benutzerdatenbank
# Der Hashwert ist ein bcrypt-Hash und kann mit plugin/tools/hash.sh generiert werden

_meta:
  type: "internalusers"
  config_version: 2

# Definieren Sie hier Ihre internen Benutzer

admin:
  hash: "$2y$12$4NL0LqEnN4FXaUdQQC.gOupeCQT2IuMo9gN0b5d3nxdMVbLX088f2"
  reserved: true
  backend_roles:
  - "admin"
  description: "Admin-Benutzer"

## Demobenutzer

#admin:

Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Jetzt, da die TLS-Zertifikate installiert und die Demobenutzer entfernt oder neuen Passwörtern zugewiesen wurden, ist es an der Zeit, die Konfigurationsänderungen anzuwenden. Um die Änderungen anzuwenden, rufen wir das Skript securityadmin.sh im Verzeichnis /usr/share/opensearch/plugins/opensearch-security/tools auf. Das Skript erfordert, dass der OpenSearch-Dienst läuft.

Starten Sie den OpenSearch-Dienst neu.

$ sudo systemctl restart opensearch

Wechseln Sie in das Verzeichnis /usr/share/opensearch/plugins/opensearch-security/tools.

$ cd /usr/share/opensearch/plugins/opensearch-security/tools

Führen Sie das Skript mit dem folgenden Befehl aus.

$ sudo OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./securityadmin.sh -h opensearch.nspeaks.com -p 9200 -cd /etc/opensearch/opensearch-security/ -cacert /etc/opensearch/certs/root-ca.pem -cert /etc/opensearch/certs/admin.pem -key /etc/opensearch/certs/admin-key.pem -icl -nhnv

Das Sicherheits-Plugin speichert seine Konfiguration - einschließlich Benutzer, Berechtigungen, Rollen und Backend-Einstellungen - in einem Systemindex im OpenSearch-Cluster. Das Speichern dieser Einstellungen im Cluster ermöglicht es Ihnen, Einstellungen zu ändern, ohne den Cluster neu zu starten, und beseitigt die Notwendigkeit, die Konfigurationsdatei auf jedem Knoten zu bearbeiten. Dies wird erreicht, indem das Skript securityadmin.sh ausgeführt wird.

  • Die Option -cd gibt an, wo sich die Konfigurationsdateien des Sicherheits-Plugins befinden.
  • Die Option -icl ( --ignore-clustername) weist das Sicherheits-Plugin an, die Konfiguration unabhängig vom Cluster-Namen hochzuladen. Sie können auch den Cluster-Namen angeben, anstatt die Option -cn ( --clustername) zu verwenden.
  • Da die Zertifikate selbstsigniert sind, verwenden wir die Option -nhnv ( --disable-host-name-verification).
  • Die Optionen --cacert, --cert und --key definieren den Speicherort des Root-Zertifikats, des Admin-Zertifikats und des privaten Schlüssels für das Admin-Zertifikat. Wenn der private Schlüssel ein Passwort hat, können Sie es mit der Option -keypass angeben.

Sie können mehr über die Konfiguration des Sicherheits-Plugins in der OpenSearch-Dokumentation erfahren.

Sie sollten eine ähnliche Ausgabe wie unten gezeigt mit dem obigen Befehl erhalten.

**********************************************************************
 Dieses Tool wird in der nächsten Hauptversion von OpenSearch nicht mehr unterstützt 
 https://github.com/opensearch-project/security/issues/1755           
************************************************************************
Security Admin v7
Wird sich mit opensearch:9200 verbinden ... fertig
Verbunden als "CN=A,OU=UNIT,O=ORG,L=TORONTO,ST=ONTARIO,C=CA"
OpenSearch-Version: 2.12.0
Kontaktaufnahme mit dem opensearch-Cluster 'opensearch' und warten auf den YELLOW-Clusterstatus ...
Clustername: opensearch
Clusterstatus: GRÜN
Anzahl der Knoten: 1
Anzahl der Datenknoten: 1
.opendistro_security-Index existiert bereits, daher müssen wir keinen erstellen.
Konfiguration aus /etc/opensearch/opensearch-security/ befüllen
Wird '/config' mit /etc/opensearch/opensearch-security/config.yml aktualisiert
   SUCC: Konfiguration für 'config' erstellt oder aktualisiert
Wird '/roles' mit /etc/opensearch/opensearch-security/roles.yml aktualisiert
   SUCC: Konfiguration für 'roles' erstellt oder aktualisiert
Wird '/rolesmapping' mit /etc/opensearch/opensearch-security/roles_mapping.yml aktualisiert
   SUCC: Konfiguration für 'rolesmapping' erstellt oder aktualisiert
Wird '/internalusers' mit /etc/opensearch/opensearch-security/internal_users.yml aktualisiert
   SUCC: Konfiguration für 'internalusers' erstellt oder aktualisiert
Wird '/actiongroups' mit /etc/opensearch/opensearch-security/action_groups.yml aktualisiert
   SUCC: Konfiguration für 'actiongroups' erstellt oder aktualisiert
Wird '/tenants' mit /etc/opensearch/opensearch-security/tenants.yml aktualisiert
   SUCC: Konfiguration für 'tenants' erstellt oder aktualisiert
Wird '/nodesdn' mit /etc/opensearch/opensearch-security/nodes_dn.yml aktualisiert
   SUCC: Konfiguration für 'nodesdn' erstellt oder aktualisiert
Wird '/whitelist' mit /etc/opensearch/opensearch-security/whitelist.yml aktualisiert
   SUCC: Konfiguration für 'whitelist' erstellt oder aktualisiert
Wird '/audit' mit /etc/opensearch/opensearch-security/audit.yml aktualisiert
   SUCC: Konfiguration für 'audit' erstellt oder aktualisiert
Wird '/allowlist' mit /etc/opensearch/opensearch-security/allowlist.yml aktualisiert
   SUCC: Konfiguration für 'allowlist' erstellt oder aktualisiert
SUCC: Erwartete 10 Konfigurationstypen für Knoten {"updated_config_types":["allowlist","tenants","rolesmapping","nodesdn","audit","roles","whitelist","internalusers","actiongroups","config"],"updated_config_size":10,"message":null} ist 10 (["allowlist","tenants","rolesmapping","nodesdn","audit","roles","whitelist","internalusers","actiongroups","config"]) aufgrund: null
Fertig mit Erfolg

Überprüfen Sie die neuen Anmeldeinformationen mit dem folgenden Befehl.

Während des vorherigen Tests haben wir Anfragen an localhost gerichtet. Jetzt, da die TLS-Zertifikate eingerichtet sind und die neuen Zertifikate auf den tatsächlichen DNS-Eintrag des Hosts verweisen, werden die Anfragen an localhost die CN-Überprüfung nicht bestehen, und das Zertifikat wird als ungültig betrachtet. Daher fügen Sie Ihren tatsächlichen DNS-Eintrag im folgenden Befehl hinzu, um zu überprüfen.

$ curl https://your.host.address:9200 -u admin:yournewpassword -k

Sie sollten die folgende Antwort sehen.

{
  "name" : "opensearch",
  "cluster_name" : "opensearch",
  "cluster_uuid" : "3oFvYn96St2MOpDP3Sf29g",
  "version" : {
    "distribution" : "opensearch",
    "number" : "2.12.0",
    "build_type" : "deb",
    "build_hash" : "2c355ce1a427e4a528778d4054436b5c4b756221",
    "build_date" : "2024-02-20T02:18:31.541484890Z",
    "build_snapshot" : false,
    "lucene_version" : "9.9.2",
    "minimum_wire_compatibility_version" : "7.10.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "Das OpenSearch-Projekt: https://opensearch.org/"
}

Schritt 9 - OpenSearch Dashboards installieren

Da wir OpenSearch bereits installiert haben, können wir den Schritt des Imports des OpenSearch GPG-Schlüssels überspringen.

Um OpenSearch Dashboards zu installieren, führen Sie den folgenden Befehl aus, um ein APT-Repository dafür zu erstellen.

$ 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

Aktualisieren Sie die System-Repository-Liste.

$ sudo apt update

Listen Sie alle verfügbaren Versionen von OpenSearch Dashboards auf.

$ sudo apt list -a opensearch-dashboards

Sie sollten eine ähnliche Ausgabe sehen.

Listing... Done
opensearch-dashboards/stable 2.12.0 amd64
opensearch-dashboards/stable 2.11.1 amd64
opensearch-dashboards/stable 2.11.0 amd64
opensearch-dashboards/stable 2.10.0 amd64
opensearch-dashboards/stable 2.9.0 amd64
opensearch-dashboards/stable 2.8.0 amd64
opensearch-dashboards/stable 2.7.0 amd64
opensearch-dashboards/stable 2.6.0 amd64
opensearch-dashboards/stable 2.5.0 amd64

Installieren Sie die neueste Version von OpenSearch Dashboard.

$ sudo apt install opensearch-dashboards

Oder installieren Sie eine bestimmte Version von OpenSearch Dashboard.

$ sudo apt install opensearch-dashboards=2.12.0

Die Version von OpenSearch Dashboards und OpenSearch sollte gleich sein, andernfalls können Sie auf mehrere Probleme stoßen.

Laden Sie den Dienstdaemon neu.

$ sudo systemctl daemon-reload

Aktivieren Sie den OpenSearch Dashboards-Dienst.

$ sudo systemctl enable opensearch-dashboards

Starten Sie den OpenSearch Dashboards-Dienst.

$ sudo systemctl start opensearch-dashboards

Überprüfen Sie den Status des OpenSearch Dashboards-Dienstes.

$ sudo systemctl status opensearch-dashboards

Sie sollten die folgende Ausgabe sehen.

? opensearch-dashboards.service - "OpenSearch Dashboards"
     Loaded: loaded (/lib/systemd/system/opensearch-dashboards.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-03-02 16:01:25 UTC; 4s ago
   Main PID: 7098 (node)
      Tasks: 11 (limit: 9484)
     Memory: 175.4M
        CPU: 5.389s
     CGroup: /system.slice/opensearch-dashboards.service
             ??7098 /usr/share/opensearch-dashboards/node/bin/node /usr/share/opensearch-dashboards/src/cli/dist

Mar 02 16:01:25 opensearch systemd[1]: Started opensearch-dashboards.service - "OpenSearch Dashboards".

Schritt 10 - OpenSearch Dashboards konfigurieren

OpenSearch Dashboards speichert seine Konfiguration in der Datei /etc/opensearch-dashboards/opensearch_dashboards.yml. Öffnen Sie sie zur Bearbeitung.

$ sudo nano /etc/opensearch-dashboards/opensearch_dashboards.yml

Suchen Sie die Zeile # server.host: "localhost" und entfernen Sie das Kommentarzeichen (#) davor und ändern Sie ihren Wert wie gezeigt.

# Gibt die Adresse an, an die der OpenSearch Dashboards-Server gebunden wird. IP-Adressen und Hostnamen sind beide gültige Werte.
# Der Standardwert ist 'localhost', was normalerweise bedeutet, dass entfernte Maschinen keine Verbindung herstellen können.
# Um Verbindungen von entfernten Benutzern zuzulassen, setzen Sie diesen Parameter auf eine nicht-loopback-Adresse.
server.host: 0.0.0.0

Das Setzen des Wertes von server.host auf 0.0.0.0 bindet OpenSearch Dashboard an jede externe IP, was es über das World Wide Web zugänglich macht. Wenn Sie die Dashboards über SSL mit einem Reverse-Proxy bereitstellen möchten, lassen Sie diesen Wert unverändert.

Scrollen Sie nach unten, um den folgenden Abschnitt zu finden.

opensearch.hosts: [https://localhost:9200]
opensearch.ssl.verificationMode: none
opensearch.username: kibanaserver
opensearch.password: kibanaserver
opensearch.requestHeadersWhitelist: [authorization, securitytenant]

Ändern Sie die Werte entsprechend unserer OpenSearch-Installation.

opensearch.hosts: [https://opensearch:9200]
opensearch.ssl.verificationMode: none
opensearch.username: admin
opensearch.password: 
opensearch.requestHeadersWhitelist: [authorization, securitytenant]

Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den OpenDashboards-Dienst neu.

$  sudo systemctl restart opensearch-dashboards

Öffnen Sie den Port 5601 in der UFW-Firewall.

$ sudo ufw allow 5601

Öffnen Sie die URL http://:5601 oder http://opensearch.example.com:5601, um die OpenSearch Dashboards-Website zu starten.

OpenSearch Dashboards Login

Wenn Sie damit zufrieden sind, auf OpenSearch Dashboards über HTTP und mit einer Portnummer in der URL zuzugreifen, können Sie hier aufhören. Es ist jedoch besser, Dashboards über SSL bereitzustellen. Dazu werden wir Nginx als Reverse-Proxy installieren und SSL darüber bereitstellen.

Schritt 11 - Nginx installieren

Debian 12 wird mit einer älteren Version von Nginx ausgeliefert. Sie müssen das offizielle Nginx-Repository herunterladen, um die neueste Version zu installieren.

Importieren Sie den Signaturschlüssel von Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Fügen Sie das Repository für die Hauptversion von Nginx hinzu.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Aktualisieren Sie die System-Repositories.

$ sudo apt update

Installieren Sie Nginx.

$ sudo apt install nginx

Überprüfen Sie die Installation. Auf Debian-Systemen funktioniert der folgende Befehl nur mit sudo.

$ sudo nginx -v
nginx version: nginx/1.25.4

Starten Sie den Nginx-Server.

$ sudo systemctl start nginx

Überprüfen Sie den Dienststatus.

$ sudo systemctl status nginx
? nginx.service - nginx - Hochleistungs-Webserver
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-03-02 12:53:57 UTC; 4s ago
       Docs: https://nginx.org/en/docs/
    Process: 3976 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 3977 (nginx)
      Tasks: 3 (limit: 9484)
     Memory: 2.7M
        CPU: 9ms
     CGroup: /system.slice/nginx.service
             ??3977 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??3978 "nginx: worker process"
             ??3979 "nginx: worker process"

Mar 02 12:53:57 opensearch systemd[1]: Starting nginx.service - nginx - Hochleistungs-Webserver...
Mar 02 12:53:57 opensearch systemd[1]: Started nginx.service - nginx - Hochleistungs-Webserver.

Schritt 12 - SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Sie können Certbot entweder mit dem Repository von Debian installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.

Debian 12 wird nicht mit Snapd installiert. Installieren Sie das Snapd-Paket.

$ sudo apt install snapd

Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Installieren Sie Certbot.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Überprüfen Sie, ob Certbot ordnungsgemäß funktioniert.

$ certbot --version
certbot 2.9.0

Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d craftcms.example.com

Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/craftcms.example.com auf Ihrem Server herunter.

Generieren Sie ein Diffie-Hellman-Gruppe-Zertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Überprüfen Sie den Zeitplan für den Certbot-Erneuerungsdienst.

$ sudo systemctl list-timers

Sie finden snap.certbot.renew.service als einen der Dienste, die geplant sind, um ausgeführt zu werden.

NÄCHSTER                        LINKS           LETZTER                        VERGANGEN    EINHEIT                         AKTIVIERT                   ---------------------------------------------------------------------------------------------------------------------------------------  
Sat 2024-03-02 16:25:00 UTC 3h 27min left  -                           -         snap.certbot.renew.timer     snap.certbot.renew.service
Sat 2024-03-02 23:00:51 UTC 10h left       Sat 2024-03-02 06:29:02 UTC 6h ago    apt-daily.timer              apt-daily.service
Sun 2024-03-03 00:00:00 UTC 11h left       -                           -         dpkg-db-backup.timer         dpkg-db-backup.service
.....

Führen Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.

Schritt 13 - Nginx konfigurieren

Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.

server_names_hash_bucket_size 64;

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/opensearch.conf zur Bearbeitung.

$ sudo nano /etc/nginx/conf.d/opensearch.conf

Fügen Sie den folgenden Code ein. Ersetzen Sie opensearch.example.com durch Ihren Domainnamen.

server {

    listen 443 ssl;
    listen [::]:443 ssl;

    http2 on;
    http3 on;
    quic_retry on;

    server_name opensearch.example.com;

    access_log  /var/log/nginx/opensearch.access.log;
    error_log   /var/log/nginx/opensearch.error.log;

    ssl_certificate      /etc/letsencrypt/live/opensearch.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/opensearch.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/opensearch.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_early_data on;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        proxy_pass http://localhost:5601;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
# HTTPS erzwingen
server {
    listen 80;
    listen [::]:80;
    server_name  opensearch.example.com;
    return 301   https://$host$request_uri;
}

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Überprüfen Sie Ihre Nginx-Konfiguration.

$ sudo nginx -t

Starten Sie den Nginx-Server neu.

$ sudo systemctl restart nginx

Besuchen Sie https://opensearch.example.com in Ihrem Browser, um OpenSearch Dashboards zu starten.

Schritt 14 - Zugriff auf OpenSearch Dashboards und Nutzung

Wenn Sie Nginx verwendet haben, greifen Sie auf die Dashboards über die URL https://opensearch.example.com zu oder verwenden Sie http://opensearch.example.com:5601, und Sie sollten die Anmeldeseite erhalten.

OpenSearch Dashboards Login Credentials

Geben Sie admin und das benutzerdefinierte Admin-Passwort ein, das Sie in Schritt 4 für OpenSearch konfiguriert haben, und klicken Sie auf die Schaltfläche Anmelden, um fortzufahren.

OpenSearch Dashboards Add Data Page

Klicken Sie auf die Schaltfläche Daten hinzufügen, um direkt Daten hinzuzufügen, oder klicken Sie auf den Link Selbst erkunden, wenn Sie zuerst stöbern möchten. Wir werden zuerst stöbern, und es sollte Sie zu einem Popup führen, das über den Dunkelmodus von OpenSearch Dashboards spricht.

OpenSearch Dashboards Theme Popup

Klicken Sie auf die Schaltfläche Schließen, um fortzufahren. Als Nächstes werden Sie aufgefordert, einen Mandanten auszuwählen.

OpenSearch Dashboards Tenant Selection screen

Mandanten in OpenSearch Dashboards sind Bereiche zum Speichern von Indexmustern, Visualisierungen, Dashboards und anderen OpenSearch Dashboards-Objekten. Jeder Benutzer kann mehrere Mandanten für verschiedene Zwecke erstellen. Mandanten sind nützlich, um Ihre Arbeit sicher mit anderen Benutzern von OpenSearch Dashboards zu teilen. OpenSearch gibt Ihnen die Möglichkeit, zwischen drei Optionen zu wählen.

  • Global - Dieser Mandant wird zwischen allen Benutzern von OpenSearch Dashboards geteilt.
  • Privat - Dieser Mandant ist exklusiv für jeden Benutzer und kann nicht geteilt werden.
  • Benutzerdefiniert - Administratoren können benutzerdefinierte Mandanten erstellen und bestimmten Rollen zuweisen. Nach der Erstellung können Sie diese Mandanten verwenden, um bestimmten Benutzern Räume bereitzustellen.

Für den Moment bleiben wir bei der Standardoption eines privaten Mandanten. Klicken Sie auf die Schaltfläche Bestätigen, um fortzufahren. Sie werden mit der folgenden Seite begrüßt.

OpenSearch Dashboards Homepage

Als Nächstes werden wir die Verbindung zwischen OpenSearch und den OpenSearch Dashboards überprüfen.

Klicken Sie auf die Schaltfläche Entwicklertools in der oberen rechten Ecke, und Ihnen wird ein Mini-Popup über die Konsolenbenutzeroberfläche für die OpenSearch Dashboards angezeigt.

OpenSearch Dashboards Dev Tools Console Popup

Klicken Sie auf die Schaltfläche Schließen, geben Sie die Abfrage GET / in die Konsole auf der linken Seite ein und klicken Sie auf die kleine Wiedergabetaste in der Mitte. Sie sollten die folgende Ausgabe auf der rechten Seite sehen.

OpenSearch Dashboards Console Connection Verification

Dies bestätigt, dass OpenSearch Dashboards Daten von OpenSearch erhält und beide einwandfrei funktionieren. Sie können ab hier mit dem Hinzufügen von Daten beginnen.

Fazit

Damit endet das Tutorial zur Installation von OpenSearch auf einem Debian 12-Server. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.