OpenSearch – это проект Amazon, основанный на сообществе и являющийся форком Elasticsearch и Kibana. Это полностью открытая поисковая система и аналитический пакет с богатыми возможностями и инновационным функционалом. Основными компонентами проекта OpenSearch являются OpenSearch (форк Elasticsearch) и OpenSearch Dashboards (форк Kibana). Оба компонента предоставляют такие возможности, как корпоративная безопасность, оповещения, машинное обучение, SQL, управление состоянием индексов и многое другое.
В этом руководстве вы узнаете, как установить OpenSearch и OpenSearch Dashboard на сервер Ubuntu 24.04. Вы также защитите OpenSearch с помощью сертификатов TLS и включите аутентификацию с помощью имени пользователя и пароля.
Добавление репозитория OpenSearch
Для начала вам нужно добавить репозитории OpenSearch и OpenSearch Dashboard в вашу систему. В этом примере мы будем использовать последнюю стабильную версию OpenSearch.
Сначала выполните приведенную ниже команду для установки основных пакетов в систему Ubuntu.
sudo apt install lsb-release ca-certificates curl gnupg2 -y
Загрузите ключ GPG для репозитория OpenSearch с помощью следующей команды.
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.list
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
Наконец, запустите команду ‘apt‘ команда ниже, чтобы обновить индекс пакетов и получить новую информацию о пакете OpenSearch.
sudo apt update
Установка OpenSearch и OpenSearch Dashboard
После добавления репозитория OpenSearch вы установите OpenSearch и OpenSearch Dashboard через менеджер пакетов APT. Затем вы запустите обе службы с помощью команды ‘systemctl‘ утилита.
Перед установкой OpenSearch выполните приведенную ниже команду, чтобы сгенерировать случайный пароль для установки OpenSearch. Обязательно скопируйте вывод и включите в него заглавные буквы, цифры и символы.
sudo openssl rand -hex 16
Теперь выполните приведенную ниже команду для установки ‘opensearch‘ и ‘opensearch-dashboard‘ пакеты. Обязательно измените ‘OPENSEARCH_INITIAL_ADMIN_PASSWORD‘ и введите ‘Y‘, чтобы подтвердить установку.
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=B07e_af7e9f8fe12e@85ab797ddc1f174Dapt-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‘ файл. Вы также увеличите максимальный размер JVM (виртуальной памяти Java) по умолчанию для OpenSearch, если это необходимо.
Откройте стандартную конфигурацию OpenSearch ‘/etc/opensearch/opensearch.yml‘ с помощью ‘nano‘ редактор.
sudo nano /etc/opensearch/opensearch.yml
Измените следующие конфигурации OpenSearch:
- * Измените ‘network.host‘ с вашим локальным IP-адресом
- * Добавьте опцию ‘discovery.type‘ как ‘одноузловой‘ для запуска OpenSearch в одном режиме
- * Установите ‘plugins.security.disabled‘ к ‘ложь‘
# 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
Сохраните файл и выйдите из редактора после завершения работы.
Далее откройте конфигурацию JVM (виртуальной машины Java) ‘/etc/opensearch/jvm.options‘ с помощью ‘nano‘ редактор.
sudo nano /etc/opensearch/jvm.options
При необходимости увеличьте максимальное значение памяти по умолчанию для OpenSearch. По умолчанию используется значение ‘1 ГБ‘.
-Xms2g -Xmx2g
Сохраните и выйдите из файла.
Наконец, запустите следующую команду ‘systemctl‘ команда для перезапуска ‘opensearch‘ и примените изменения. После этого OpenSearch будет работать на локальном IP-адресе в одиночном режиме.
sudo systemctl restart opensearch
Защита OpenSearch с помощью сертификатов TLS/SSL
Теперь, когда вы настроили OpenSearch, вам нужно настроить безопасность OpenSearch с помощью SSL/TLS сертификатов. В этом разделе вы отключите демонстрационные сертификаты, а затем сгенерируете корневые сертификаты, сертификаты администратора и сертификаты хоста/сервера.
Перед генерацией SSL-сертификатов удалите демонстрационные сертификаты из OpenSearch с помощью следующей команды.
rm -f /opt/opensearch/{esnode-key.pem,esnode.pem,kirk-key.pem,kirk.pem,root-ca.pem}
Отредактируйте конфигурацию OpenSearch ‘/etc/opensearch/opensearch.yml‘ с помощью ‘nano‘ редактор.
sudo nano /etc/opensearch/opensearch.yml
Комментарий ‘демонстрация‘ конфигурация безопасности для OpenSearch выглядит следующим образом.
Сохраните файл и выйдите из редактора.
Теперь создайте новую директорию ‘/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 или Common Name должно соответствовать fqdn вашего хост-сервера, а не имени хоста. В этом примере fqdn для сервера – ‘ubuntu24.local‘.
openssl req -new -key ubuntu24-key.pem -subj "/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=ubuntu24.local" -out ubuntu24.csr
Далее выполните приведенную ниже команду, чтобы создать новый файл расширения, содержащий DNS вашего хоста/сервера.
echo 'subjectAltName=DNS:ubuntu24.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
После генерации TLS-сертификатов для OpenSearch вам нужно добавить новую конфигурацию в ‘opensearch.yml‘ файл. В этом случае вы добавите новую конфигурацию в ‘opensearch.yml’ с помощью bash-скрипта.
Прежде чем добавлять сертификаты на сервер OpenSearch, выполните приведенную ниже команду для создания резервной копии ‘opensearch.yml‘ файл и настройте свой сервер fqdn.
sudo cp /etc/opensearch/opensearch.yml /etc/opensearch/opensearch.yml.orig sudo hostnamectl set-hostname ubuntu24.local
Теперь создайте новый файл ‘add-cert.sh‘ файл с ‘nano‘ редактор.
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 с помощью парольной аутентификации
На данном этапе вы настроили OpenSearch с сертификатами SSL/TLS, и на следующем этапе вы настроите аутентификацию с помощью пароля для 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
Теперь откройте файл ‘/etc/opensearch/opensearch-security/internal_users.yml‘ со следующим ‘nano‘ редактор.
sudo nano /etc/opensearch/opensearch-security/internal_users.yml
Изменение хэш-пароля для пользователя ‘admin‘ и ‘kibanaserver‘ с вашим паролем ранее. На экране появится ‘admin‘ пользователь будет использоваться для входа в OpenSearch Dashboard, ‘kibanaserver‘ пользователь будет использоваться для связи между OpenSearch и OpenSearch Dashboard.
admin: hash: "$2y$12$zPtsgbrpfmInPRuDEKvDKetuzhUzsQWyCpE9foT1uun5RTMW51p9K" reserved: true backend_roles: - "admin" description: "Admin user"
kibanaserver:
hash: “$2y$12$zPtsgbrpfmInPRuDEKvDKetuzhUzsQWyCpE9foT1uun5RTMW51p9K”
reserved: true
description: “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
После успешной проверки вы сможете получить доступ к OpenSearch с вашим именем пользователя и паролем по протоколу HTTPS.
Настройка панели OpenSearch Dashboard
После настройки парольной аутентификации вам предстоит настроить панель OpenSearch Dashboard, отредактировав файл ‘opensearch-dashboard,yml‘.
Откройте конфигурацию для OpenSearch Dashboard ‘/etc/opensearch-dashboards/opensearch-dashboard.yml‘ с ‘nano‘ редактор.
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
Далее откройте веб-браузер и зайдите на сайт http://192.168.10.60:5601. Если установка прошла успешно, вы увидите страницу входа в OpenSearch Dashboard.
Введите свой логин и пароль администратора, затем нажмите кнопку ‘Войти‘.
После входа в систему выберите опцию ‘Добавить данные‘, чтобы добавить новые данные, или нажмите кнопку ‘Исследовать самостоятельно‘ вариант.
Чтобы убедиться в связи между OpenSearch и OpenSearch Dashboard, необходимо проверить статус OpenSearch на панели управления.
На странице ‘Менеджмент‘ раздел, нажмите ‘Dev Tools‘.
В разделе консоли введите ‘GET /‘ и нажмите кнопку воспроизведения. Если подключение к OpenSearch и OpenSearch Dashboard прошло успешно, вы увидите следующую страницу.
Заключение
Поздравляем! Вы установили OpenSearch и OpenSearch Dashboard на сервер Ubuntu 24.04. OpenSearch работает в одиночном режиме, а установка защищена с помощью HTTPS. Наконец, вы настроили аутентификацию для OpenSearch и интегрировали OpenSearch с OpenSearch Dashboard.