简介
OpenSearch 是亚马逊发起的社区驱动项目,是 Elasticsearch 和 Kibana 的一个分支。它是一个完全开源的搜索引擎和分析套件,具有丰富的功能和创新的特性。OpenSearch 项目的主要组件是 OpenSearch(Elasticsearch 的一个分支)和 OpenSearch Dashboards(Kibana 的一个分支)。这两个组件都提供企业安全、警报、机器学习、SQL、索引状态管理等功能。
本指南将向你展示如何在 Ubuntu 服务器上安装 OpenSearch 和 OpenSearch Dashboard。你还将使用 TLS 证书保护 OpenSearch,并启用用户名和密码的身份验证
接下来,我将一步一步教大家如何进行安装和部署!!
准备工作
服务器准备
必要前提:
- 一个充满求知欲的大脑。
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
- 点击 云产品 → 云服务器 → 立即购买。
- 选择距离你较近的区域,以保证低延迟。
- 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
- 我们使用
PowerShell
进行SSH
远程连接到服务器,Win+R
打开运行窗口,输入powershell
后点击确定。
- 输入
ssh root@你的服务器IP
例如ssh root@154.9.227.239
回车后,首次需要输入yes
,再次回车后即可登录服务器。
- 到此为止,我们的云服务器就远程连接上了。
开始部署
添加 OpenSearch 存储库
首先,你需要将 OpenSearch 和 OpenSearch Dashboard 存储库添加到你的系统中。在这个例子中,我们将使用最新稳定版本的 OpenSearch。
首先,运行以下命令在你的 Ubuntu 系统上安装基本软件包。
sudo apt install lsb-release ca-certificates curl gnupg2 -y
使用以下命令下载 OpenSearch 存储库的 GPG 密钥。
curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
使用以下命令将 OpenSearch 和 OpenSearch Dashboard 的存储库添加到你的系统中。在这个例子中,你将使用 OpenSearch 2.x 稳定版本。
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.listecho "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
最后,运行 apt
命令来更新你的软件包索引并检索新的 OpenSearch 软件包信息。
sudo apt update
安装 OpenSearch 和 OpenSearch Dashboard
添加 OpenSearch 存储库后,你将通过 APT 软件包管理器安装 OpenSearch 和 OpenSearch Dashboard。然后,你将通过 systemctl
实用程序启动这两个服务。
在安装 OpenSearch 之前,运行以下命令为 OpenSearch 安装生成一个随机密码。请确保复制输出,并包含大写字母、数字和符号。
sudo openssl rand -hex 16
现在运行以下命令来安装 opensearch
和 opensearch-dashboard
软件包。请确保更改 OPENSEARCH_INITIAL_ADMIN_PASSWORD
,并键入 Y
以确认安装。
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=B07e_af7e9f8fe12e@85ab797ddc1f174D apt-get install opensearch opensearch-dashboard
安装完成后,运行 systemctl
命令来重新加载 systemd 管理器并应用新的服务文件。
sudo systemctl daemon-reload
你现在可以使用以下命令启动、启用和验证 OpenSearch。
sudo systemctl enable --now opensearch
sudo systemctl status opensearch
你可以在下面看到 OpenSearch 正在运行。
最后,你现在可以使用以下命令启动、启用和验证 OpenSearch Dashboard 服务。
sudo systemctl enable --now opensearch-dashboards
sudo systemctl status opensearch-dashboards
在下面的输出中,你可以看到 opensearch-dashboards
服务正在运行。
配置 OpenSearch
安装 OpenSearch 后,你将通过 /etc/opensearch/opensearch.yml
文件配置安装。你还需要根据需要增加 OpenSearch 的默认最大 JVM(Java 虚拟机)大小。
使用 nano
编辑器打开默认的 OpenSearch 配置 /etc/opensearch/opensearch.yml
。
sudo nano /etc/opensearch/opensearch.yml
更改以下 OpenSearch 配置:
- 将
network.host
选项更改为你的本地 IP 地址 - 添加
discovery.type
为single-node
,以便在单节点模式下运行 OpenSearch - 将
plugins.security.disabled
设置为false
# Bind OpenSearch to the correct network interface. Use 0.0.0.0
# to include all available interfaces or specify an IP address
# assigned to a specific interface.
network.host: 192.168.10.60# Unless you have already configured a cluster, you should set
# discovery.type to single-node, or the bootstrap checks will
# fail when you try to start the service.
discovery.type: single-node# If you previously disabled the security plugin in opensearch.yml,
# be sure to re-enable it. Otherwise you can skip this setting.
plugins.security.disabled: false
保存文件并退出编辑器。
接下来,使用 nano
编辑器打开 JVM(Java 虚拟机)配置 /etc/opensearch/jvm.options
。
sudo nano /etc/opensearch/jvm.options
根据需要增加 OpenSearch 的默认最大内存。默认值是 1GB
。
-Xms2g
-Xmx2g
保存并退出文件。
最后,运行以下 systemctl
命令来重启 opensearch
并应用你的更改。这样,OpenSearch 将在单节点模式下在本地 IP 地址上运行。
sudo systemctl restart opensearch
使用 TLS/SSL 证书保护 OpenSearch
现在你已经配置了 OpenSearch,你需要通过 SSL/TLS 证书设置 OpenSearch 安全性。在本节中,你将禁用演示证书,然后生成根证书、管理员证书和主机/服务器证书。
在生成 SSL 证书之前,使用以下命令从 OpenSearch 中删除演示证书。
rm -f /opt/opensearch/{esnode-key.pem,esnode.pem,kirk-key.pem,kirk.pem,root-ca.pem}
使用 nano
编辑器编辑 OpenSearch 配置 /etc/opensearch/opensearch.yml
。
sudo nano /etc/opensearch/opensearch.yml
注释掉 OpenSearch 的 demo
安全配置,如下所示。
保存文件并退出编辑器。
现在创建一个新目录 /etc/opensearch/certs
并进入该目录。此目录将用于存储 OpenSearch 的新证书。
mkdir -p /etc/opensearch/certs; cd /etc/opensearch/certs
生成根证书
首先,运行以下命令生成根证书,该证书将用于签署你的其他证书,如服务器和客户端证书。
openssl genrsa -out root-ca-key.pem 2048
现在运行以下命令从你的私钥生成根证书。请务必使用你的服务器详细信息更改 -subj
选项。
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
生成管理员证书
使用以下命令为你的管理员证书创建一个新的私钥。
openssl genrsa -out admin-key-temp.pem 2048
使用以下命令将你的管理员密钥转换为 PKCS8 格式。
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
接下来,使用以下命令为管理员证书创建一个新的签名请求证书 (CSR)。
openssl req -new -key admin-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A" -out admin.csr
现在运行以下命令使用根证书签署你新的管理员请求证书 (CSR)。
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
生成主机或服务器证书
生成 OpenSearch 主机/服务器的私钥,并将证书转换为 PKCS8 格式。
openssl genrsa -out ubuntu24-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in ubuntu24-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out ubuntu24-key.PEM
现在运行以下命令为主机生成证书请求 (CSR)。CN 或公用名称应与你的主机服务器的 fqdn 相匹配,而不是主机名。在此示例中,服务器的 fqdn 为 ubuntu24.howtoforge.local
。
openssl req -new -key ubuntu24-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=ubuntu24.howtoforge.local" -out ubuntu24.csr
接下来,运行以下命令来创建一个包含你的主机/服务器 DNS 的新扩展文件。
echo 'subjectAltName=DNS:ubuntu24.howtoforge.local' > ubuntu24.ext
最后,运行以下命令,使用根证书签署主机/服务器证书,并包含你之前创建的扩展文件。
openssl x509 -req -in ubuntu24.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out ubuntu24.pem -days 730 -extfile ubuntu24.ext
设置证书
删除管理员和主机的临时证书、CSR(证书请求)以及扩展文件,如下所示。
rm *temp.pem *csr *ext
ls
现在使用以下命令将 root-ca.pem
证书转换为 root-ca.crt
文件。
openssl x509 -outform der -in root-ca.pem -out root-ca.crt
之后,将 root-ca.crt
证书复制到 /usr/local/share/ca-certificates
目录,并将你的根证书加载到服务器。
sudo cp root-ca.crt /usr/local/share/ca-certificates
sudo update-ca-certificates
最后,运行以下命令来设置证书文件和目录的正确权限和所有权。
sudo chown -R opensearch:opensearch /etc/opensearch/certs
sudo chmod 0700 /etc/opensearch/certs
sudo chmod 0600 /etc/opensearch/certs/*.pem
sudo chmod 0600 /etc/opensearch/certs/*.crt
将证书添加到 OpenSearch
为 OpenSearch 生成 TLS 证书后,你需要在 opensearch.yml
文件中添加新配置。在这种情况下,你将通过 bash 脚本向 opensearch.yml
添加新配置。
在将证书添加到你的 OpenSearch 服务器之前,请运行以下命令备份 opensearch.yml
文件并设置你的服务器 fqdn。
sudo cp /etc/opensearch/opensearch.yml /etc/opensearch/opensearch.yml.orig
sudo hostnamectl set-hostname ubuntu24.howtoforge.local
现在使用 nano
编辑器创建一个新文件 add-cert.sh
。
nano add-cert.sh
将以下配置插入到文件中。这样,你将向 OpenSearch 配置文件 opensearch.yml
添加新配置
#! /bin/bash# Before running this script, make sure to replace the CN in the
# node's distinguished name with a real DNS A record.echo "plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/ubuntu24.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/ubuntu24-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/ubuntu24.pem" | sudo tee -a /etc/opensearch/opensearch.yml
echo "plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/ubuntu24-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=ubuntu24.hwdomain.lan,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
保存文件并在完成后退出编辑器。
现在使 add-cert.sh
文件可执行并使用以下命令执行它。新配置将添加到 opensearch.yml
文件中。
chmod +x add-cert.sh
./add-cert.sh
使用密码身份验证保护 OpenSearch
此时,你已经使用 SSL/TLS 证书配置了 OpenSearch,在下一步中,你将为 OpenSearch 设置密码身份验证。你将设置两个用户,这两个用户将用于登录 OpenSearch 并集成到 OpenSearch Dashboard 中。
转到 /usr/share/opensearch/plugins/opensearch-security/tools
目录并执行 hash.sh
脚本以生成 OpenSearch 的新密码。执行 hash.sh
两次,为 OpenSearch 和 OpenSearch Dashboard 生成两个密码。此外,请务必将生成的密码复制到你的笔记中。
cd /usr/share/opensearch/plugins/opensearch-security/tools
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./hash.sh
现在使用以下 nano
编辑器打开文件 /etc/opensearch/opensearch-security/internal_users.yml
。
sudo nano /etc/opensearch/opensearch-security/internal_users.yml
使用你之前的密码更改用户 admin
和 kibanaserver
的哈希密码。admin
用户将用于登录 OpenSearch Dashboard,kibanaserver
用户将用于连接 OpenSearch 和 OpenSearch Dashboard。
admin:hash: "$2y$12$zPtsgbrpfmInPRuDEKvDKetuzhUzsQWyCpE9foT1uun5RTMW51p9K"reserved: truebackend_roles:- "admin"description: "Admin user"kibanaserver:hash: "$2y$12$zPtsgbrpfmInPRuDEKvDKetuzhUzsQWyCpE9foT1uun5RTMW51p9K"reserved: truedescription: "Demo OpenSearch Dashboards user"
保存文件并在完成后退出编辑器。
现在运行以下命令来重启 opensearch
服务并应用你的更改。
sudo systemctl restart opensearch
OpenSearch 重启后,运行以下命令将你的 SSL 证书应用到 OpenSearch。
cd /usr/share/opensearch/plugins/opensearch-security/tools
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./securityadmin.sh -h 192.168.10.60 -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
如果顺利,你将看到类似这样的输出:
最后,运行以下 curl
命令来验证到 OpenSearch 服务器的身份验证。
curl https://192.168.10.60:9200 -u admin:password -k
curl https://node-rock1:9200 -u kibanaserver:kibanapass -k
如果成功,你将能够通过 HTTPS 协议使用用户名和密码访问 OpenSearch。
配置 OpenSearch Dashboard
配置密码身份验证后,你将通过编辑文件 opensearch-dashboard,yml
来设置 OpenSearch Dashboard。
使用 nano
编辑器打开 OpenSearch Dashboard 的配置 /etc/opensearch-dashboards/opensearch-dashboard.yml
。
sudo nano /etc/opensearch-dashboards/opensearch-dashboard.yml
将你的本地 IP 地址输入到 server.host
选项中,如下所示:
server.host: "192.168.10.60"
请务必使用你的信息更改 OpenSearch 主机、用户名和密码。
opensearch.hosts: ["https://192.168.10.60:9200"]
opensearch.ssl.verificationMode: none
opensearch.username: kibanaserver
opensearch.password: kibanapass
保存文件并退出编辑器。
现在运行以下 systemctl
命令来重启 OpenSearch Dashboard 并应用你的更改。这样,OpenSearch Dashboard 应该连接到 OpenSearch。
sudo systemctl restart opensearch-dashboards
接下来,打开你的 Web 浏览器并访问 http://192.168.10.60:5601。如果你的安装成功,你将看到 OpenSearch Dashboard 登录页面。
输入你的管理员用户和密码,然后单击“Log in”。
登录后,选择“Add data”来添加新数据或单击“Explore on my own”选项。
为了确保 OpenSearch 和 OpenSearch Dashboard 之间的连接,你需要从仪表板检查 OpenSearch 状态。
在“Management”部分,单击“Dev Tools”。
在控制台部分中,输入 GET /
并单击播放按钮。如果你与 OpenSearch 和 OpenSearch Dashboard 的连接成功,你将看到以下页面。
结论
你已经在 Ubuntu 服务器上安装了 OpenSearch 和 OpenSearch Dashboard。OpenSearch 在单节点模式下运行,安装通过 HTTPS 进行了保护。最后,你还配置了 OpenSearch 的身份验证,并将 OpenSearch 与 OpenSearch Dashboard 集成。
相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site