Установка и защита OpenSearch на Rocky Linux 9

Кратко: пошаговое руководство по установке OpenSearch и OpenSearch Dashboards на сервер с Rocky Linux 9. Описаны подготовка системы, установка через репозиторий RPM, включение безопасности через TLS, создание пользователей и настройка Dashboards. Также приведены чеклисты, тесты приемки, рекомендации по отладке и восстановлению.
Важно: пример использует хост с именем ‘node-rock1’ и IP 192.168.5.25. Подставьте свои значения где нужно.
Что вы получите
- Рабочую инстанцию OpenSearch, запущенную как systemd сервис
- TLS для защиты межнодового и REST трафика
- Сконфигурированный пользователь admin и пользователь для Dashboards
- OpenSearch Dashboards, подключенные к защищенному OpenSearch
- Набор процедур для проверки, отладки и отката
Оглавление
- Введение
- Требования
- Подготовка системы
- Установка OpenSearch
- Базовая конфигурация
- Генерация и установка TLS сертификатов
- Настройка пользователей и применение изменений
- Установка OpenSearch Dashboards
- Конфигурация Dashboards
- Доступ и проверка работы
- Технические рекомендации и отладка
- Безопасность и соответствие
- Рекомендации по эксплуатации
- Критерии приёмки
- Чеклисты ролей
- Сценарий отката
- Тесты и контрольные проверки
- Короткий глоссарий
- Частые вопросы
- Заключение
Введение
OpenSearch это открытый проект, происходящий от Elasticsearch и Kibana, развиваемый сообществом при участии Amazon. Это полнофункциональный поисковый движок и аналитическая платформа. В этом руководстве показано, как установить OpenSearch и OpenSearch Dashboards на Rocky Linux 9, защитить их TLS сертификатами, настроить аутентификацию и подключить Dashboards.
Определение: OpenSearch Security это плагин для управления доступом, шифрованием и аудитом в OpenSearch.
Требования
- Сервер Rocky Linux 9 с минимум 4 ГБ оперативной памяти, в примерах используется 8 ГБ
- Пользователь с sudo правами
- SELinux в режиме permissive или отсоединён
- Доступ в интернет для скачивания репозиториев OpenSearch
- Закрытый ключ и сертификаты будут генерироваться на сервере
Важно: все команды запускаются от имени пользователя с sudo при необходимости.
Подготовка системы
- Настройка hostname и FQDN
В примере используются значения:
- hostname: ‘node-rock1’
- fqdn: ‘node-rock1.hwdomain.lan’
- IP: 192.168.5.25
Выполните на сервере:
sudo hostnamectl set-hostname node-rock1
echo '192.168.5.25 node-rock1.hwdomain.lan node-rock1' | sudo tee -a /etc/hosts
Затем перелогиньтесь и проверьте:
sudo hostname -f
- Отключение swap
OpenSearch требует отключенного swap для корректной работы и прохождения bootstrap проверок. Отключите swap и закомментируйте запись в /etc/fstab:
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
free -m
Проверка должна показать 0 в столбце Swap.
- Увеличение vm.max_map_count
OpenSearch использует большое количество отображений памяти, поэтому установите значение как минимум 262144:
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
cat /proc/sys/vm/max_map_count
После этих шагов система готова к установке.
Установка OpenSearch
Для Rocky Linux удобнее всего использовать официальный RPM репозиторий OpenSearch.
- Добавление репозитория
sudo curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/opensearch-2.x.repo -o /etc/yum.repos.d/opensearch-2.x.repo
sudo dnf repolist
В списке должен появиться репозиторий ‘OpenSearch 2.x’.
- Просмотр доступных версий
sudo dnf info opensearch
- Установка пакета
sudo dnf install opensearch
При установке примите GPG ключ репозитория.
- Запуск и включение сервиса
sudo systemctl daemon-reload
sudo systemctl start opensearch
sudo systemctl enable opensearch
sudo systemctl status opensearch
Статус должен быть active (running) и enabled.
Базовая конфигурация OpenSearch
Конфигурационные файлы расположены в /etc/opensearch. Для одиночного узла выполните изменения в /etc/opensearch/opensearch.yml.
- Основные параметры сети и режим кластера
Откройте файл:
sudo nano /etc/opensearch/opensearch.yml
Добавьте или измените строки на следующие, адаптируя IP под ваш хост:
network.host: 192.168.5.25
discovery.type: single-node
plugins.security.disabled: false
Сохраните и закройте.
- Настройка JVM heap
Откройте /etc/opensearch/jvm.options и измените Xms и Xmx в соответствии с объёмом памяти. Для 8 ГБ сервера разумно выделить 2 ГБ:
-Xms2g
-Xmx2g
Сохраните и перезапустите сервис:
sudo systemctl restart opensearch
Проверка открытых портов:
ss -tulpn | grep 9200 -C 3
OpenSearch слушает на порту 9200 по умолчанию.
Защита OpenSearch с помощью TLS
Рекомендуется защитить как межнодовые соединения, так и HTTP REST слой. Ниже описан процесс генерации самоподписанного CA и сертификатов для админа и узла, адаптированный для одиночного развёртывания.
В каталоге создадим папку для сертификатов и будем работать в ней:
sudo mkdir -p /etc/opensearch/certs
cd /etc/opensearch/certs
Удаление демо сертификатов
Если в системе есть демо сертификаты, удалите их:
sudo rm -f /opt/opensearch/{esnode-key.pem,esnode.pem,kirk-key.pem,kirk.pem,root-ca.pem}
sudo nano /etc/opensearch/opensearch.yml
Закомментируйте или удалите демо конфигурацию безопасности, если она присутствует.
Генерация root CA
openssl genrsa -out root-ca-key.pem 2048
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
В результате появятся root-ca-key.pem и root-ca.pem.
Генерация сертификата admin
openssl genrsa -out admin-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
openssl req -new -key admin-key.pem -subj '/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=A' -out admin.csr
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
admin.pem и admin-key.pem готовы и подписаны root CA.
Генерация сертификата для узла
openssl genrsa -out node-rock1-key-temp.pem 2048
openssl pkcs8 -inform PEM -outform PEM -in node-rock1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node-rock1-key.pem
openssl req -new -key node-rock1-key.pem -subj '/C=CA/ST=ONTARIO/L=TORONTO/O=ORG/OU=UNIT/CN=node-rock1.hwdomain.lan' -out node-rock1.csr
echo 'subjectAltName=DNS:node-rock1.hwdomain.lan' > node-rock1.ext
openssl x509 -req -in node-rock1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node-rock1.pem -days 730 -extfile node-rock1.ext
Узелный сертификат и ключ: node-rock1.pem и node-rock1-key.pem.
Очистка и установка прав
rm *temp.pem *csr *ext || true
openssl x509 -outform der -in root-ca.pem -out root-ca.crt
sudo cp root-ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
sudo chown -R opensearch:opensearch /etc/opensearch/certs
sudo chmod 0700 /etc/opensearch/certs
sudo chmod 0600 /etc/opensearch/certs/*.pem || true
sudo chmod 0600 /etc/opensearch/certs/*.crt || true
ls -l /etc/opensearch/certs
Добавление сертификатов в конфигурацию OpenSearch
Проще всего добавить настройки в opensearch.yml через небольшой скрипт, который добавит необходимые параметры. Создайте файл add.sh и сделайте его исполняемым:
cat > add.sh <<'EOF'
#! /bin/bash
echo 'plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/certs/node-rock1.pem' | sudo tee -a /etc/opensearch/opensearch.yml
echo 'plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/certs/node-rock1-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/node-rock1.pem' | sudo tee -a /etc/opensearch/opensearch.yml
echo 'plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/certs/node-rock1-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=node-rock1.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
EOF
chmod +x add.sh
sudo ./add.sh
Проверьте, что строки добавлены в /etc/opensearch/opensearch.yml.
Перезапустите OpenSearch:
sudo systemctl restart opensearch
Настройка административных пользователей
OpenSearch Security использует внутренний файл internal_users.yml для описания локальных пользователей. Для создания паролей используется утилита hash.sh.
- Сгенерируйте хеш пароля для admin и kibanaserver
cd /usr/share/opensearch/plugins/opensearch-security/tools
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./hash.sh
# Скопируйте полученный хеш
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./hash.sh
# Скопируйте второй хеш для kibanaserver
- Редактирование internal_users.yml
sudo nano /etc/opensearch/opensearch-security/internal_users.yml
Замените содержимое нужными пользователями. Пример:
admin:
hash: '$2y$12$BnfqwqWRi7DkyuPgLa8.3.kLzdpIY11jFpSXTAOKOMCVj/i20k9oW'
reserved: true
backend_roles:
- 'admin'
description: 'Admin user'
kibanaserver:
hash: '$2y$12$kYjgPjPzIp9oTghNdWIHcuUalE99RqSYtTCh6AiNuS5wmeEaWnbzK'
reserved: true
description: 'Demo OpenSearch Dashboards user'
Сохраните и закройте.
- Применение изменений
Перезапустите сервис:
sudo systemctl restart opensearch
Затем примените изменения с помощью securityadmin.sh, используя admin сертификат и ключ, и указав корневой CA:
cd /usr/share/opensearch/plugins/opensearch-security/tools
OPENSEARCH_JAVA_HOME=/usr/share/opensearch/jdk ./securityadmin.sh -h 192.168.5.25 -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
curl https://node-rock1:9200 -u admin:password -k
curl https://node-rock1:9200 -u kibanaserver:kibanapass -k
При корректной настройке вы получите ответ с информацией о кластере и код 200.
Установка OpenSearch Dashboards
- Адаптация криптополитики
Если репозиторий использует legacy SHA1, переключите политику:
sudo update-crypto-policies --set LEGACY
- Добавление репозитория и установка
sudo curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/2.x/opensearch-dashboards-2.x.repo -o /etc/yum.repos.d/opensearch-dashboards-2.x.repo
sudo dnf repolist
sudo dnf install opensearch-dashboards
Примите GPG ключ репозитория при установке.
- Запуск сервиса
sudo systemctl start opensearch-dashboards
sudo systemctl enable opensearch-dashboards
sudo systemctl status opensearch-dashboards
Конфигурация OpenSearch Dashboards
Откройте файл конфигурации:
sudo nano /etc/opensearch-dashboards/opensearch-dashboard.yml
Пример настройки сервера и подключения к OpenSearch. Укажите IP сервера и учётные данные пользователя kibanaserver.
server.port: 5601
server.host: '192.168.5.25'
opensearch.hosts: [https://192.168.5.25:9200]
opensearch.ssl.verificationMode: none
opensearch.username: kibanaserver
opensearch.password: kibanapass
Сохраните, затем перезапустите Dashboards:
sudo systemctl restart opensearch-dashboards
Доступ к OpenSearch Dashboards
- Откройте порт 5601 в firewalld
sudo firewall-cmd --add-port=5601/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
- В браузере перейдите по адресу http://192.168.5.25:5601
На странице авторизации введите логин и пароль kibanaserver и нажмите Log in.
После входа откроется стартовая страница с опциями добавления данных.
- Проверка через Dev Tools
В разделе Dev Tools выполните запрос:
GET /
Ожидаемый HTTP код 200 и JSON с информацией о версии OpenSearch.
Отладка и распространённые ошибки
- OpenSearch не стартует после включения security
- Проверьте логи systemd: sudo journalctl -u opensearch -b
- Убедитесь, что пути к сертификатам корректны и права установлены на opensearch:opensearch
- securityadmin.sh не подключается
- Проверьте адрес и порт, используйте -h и -p с текущими значениями
- Убедитесь, что admin.pem и admin-key.pem соответствуют хешу и CA
- Dashboards не подключается к OpenSearch
- Проверьте opensearch-dashboards лог: sudo journalctl -u opensearch-dashboards -b
- Для отладки временно установите opensearch.ssl.verificationMode: none
Полезные команды для диагностики:
sudo tail -n 200 /var/log/opensearch/opensearch.log
sudo journalctl -u opensearch -f
ss -tulpn | grep 9200
ss -tulpn | grep 5601
Безопасность и соответствие
- Используйте отдельный PKI и надежный CA для production, либо интегрируйте с корпоративным CA
- Минимизируйте привилегии учетных записей, назначайте роли по принципу наименьших прав
- Включите аудит логов и централизованное хранение логов для соответствия требованиям
- Шифрование запасных копий и контроль доступа к snapshot репозиториям
Приватность и GDPR
- OpenSearch сам по себе не хранит пользовательские политики конфиденциальности
- Если вы храните персональные данные, обеспечьте удаление и анонимизацию в соответствии с нормативами
- Ограничьте доступ к индексам содержащим персональные данные
Эксплуатационные рекомендации
Резервное копирование
- Используйте snapshot репозитории для регулярных резервных копий
- Настройте проверку восстановления из snapshot в тестовой среде
Обновления
- Тестируйте обновления на тестовой копии кластера
- Делайте бэкап конфигураций и snapshot перед обновлением
Мониторинг
- Собирайте метрики JVM, GC, disk I O, load average
- Настройте SLI/SLO для задержки запросов и доступности
Критерии приёмки
- OpenSearch сервис запущен и имеет статус active (running)
- Порт 9200 отвечает на запросы с кодом 200 по HTTPS с корректной аутентификацией
- OpenSearch Dashboards доступен на порту 5601 и принимает логин kibanaserver
- TLS сертификаты установлены и имеют корректные CN и SAN
- Snapshot можно создать и восстановить в тестовом окружении
Чеклисты ролей
SRE чеклист
- Проверить vm.max_map_count
- Убедиться, что swap отключён
- Проверить права на папку /etc/opensearch/certs
- Настроить мониторинг и алерты
Сетевой инженер
- Открыть порты 9200 и 5601 в межсетевом экране для нужных подсетей
- Обеспечить маршрутизацию между узлами кластера
Инженер безопасности
- Проверить цепочку CA и сроки годности сертификатов
- Проверить настройки audit logging
- Проверить роли и привилегии в internal_users.yml
Сценарий отката
- Если после применения конфигураций OpenSearch не стартует, откатите изменения в /etc/opensearch/opensearch.yml к рабочей версии из бэкапа
- Если securityadmin сломал настройки, восстановите internal_users.yml и securityconfig из бэкапа и выполните securityadmin.sh с параметром -r для реимпорта
- При проблемах с сертификатами замените на сохранённые ранее действующие сертификаты и перезапустите сервис
Тесты и критерии приёмки — подробный список
- unit тесты: проверка команд запуска и наличия процессов
- интеграционные тесты: curl https запросы к OpenSearch с различными пользователями
- smoke тест Dashboards: вход в веб UI, выполнение GET / в Dev Tools
- нагрузочный тест: базовый поисковый запрос под нагрузкой и наблюдение задержки
Короткий глоссарий
- OpenSearch: поисковый движок и аналитическая платформа
- Dashboards: веб интерфейс для визуализации и Dev Tools
- securityadmin.sh: утилита для применения конфигураций безопасности
- CA: центр сертификации
Решение задач при выборе архитектуры
Mermaid диаграмма принятия решения при развертывании
flowchart TD
A[Начать] --> B{Количество узлов}
B -->|1| C[Развернуть single-node]
B -->|>1| D[Развернуть кластер]
D --> E{Нужна высокая доступность}
E -->|Да| F[Минимум 3 узла]
E -->|Нет| G[2 узла с намерением масштабирования]
C --> H[Настроить TLS и security]
F --> H
G --> H
H --> I[Тесты и мониторинг]
I --> J[Продакшен]
Когда этот подход не подходит
- Для крупных боевых кластеров с высокой нагрузкой одиночный узел не подходит
- Если нужен enterprise уровень поддержки, рассмотрите коммерческие варианты или SLA у поставщика
Альтернативы
- Контейнерное развертывание с Docker или Kubernetes для более гибкой оркестрации
- Использование управляемых сервисов у облачных провайдеров при отсутствии желания управлять инфраструктурой
Частые вопросы
Q: Можно ли использовать сертификаты от корпоративного CA
A: Да. Для production рекомендуется использовать корпоративный CA и централизованный PKI
Q: Нужно ли отключать SELinux
A: Достаточно permissive режима или корректно настроить политики. Отключать полностью не обязательно
Q: Как масштабировать кластер
A: Добавьте узлы, обновите discovery.seed_hosts и настройте репликацию индексов
Заключение
В этом руководстве описаны шаги установки и первичной защиты OpenSearch и OpenSearch Dashboards на Rocky Linux 9. Вы должны получить рабочую, защищённую инстанцию с базовой аутентификацией и TLS. Следующие шаги для вас: резервное копирование, мониторинг, план обновлений и тестирование восстановления.
Ресурсы для дальнейшего чтения
- Официальная документация OpenSearch
Похожие материалы

Как выбрать мини‑ПК: руководство по ключевым критериям

Как посмотреть понравившиеся публикации в Instagram
Замена сбойного диска в RAID1 — тест и восстановление

Исправить код 43 для NVIDIA или Intel GPU

Отключить сенсорный экран на iPhone и iPad
