Обновление Smart Monitor
Инструкция описывает процесс обновления Smart Monitor с версии 3.2.* на 4.0.*.
Информация
Условные обозначения:
SMOS_40
- директория, куда разархивируется установочный пакет Smart Monitor версии 4.0USER
- пользователь системы с правами администратора, обычно этоadmin
OPENSEARCH_HOME
- домашняя директория OpenSearch, обычно это/app/opensearch/
OPENSEARCH_DATA
- директория, где хранятся проиндексированные данные, обычно это/app/data/
OSD_HOME
- домашняя директория OpenSearch Dashboards, обычно это/app/opensearch-dashboards/
PATH_SSL
- место расположения сертификата, закрытого ключаadmin
, а такжеca-cert
, обычно совпадает с/app/opensearch/config/
Для обновления с версии 3.2 до версии 4.0 предусмотрены два метода: автоматизированный с использованием скрипта обновления и ручной режим.
Первоочередным шагом для обновления является определение текущей установленной версии Smart Monitor. Это можно сделать, просмотрев версии модулей на главной странице или выполнив команду в командной строке:
curl https://127.0.0.1:9200/_cat/plugins -k -u $USER
После ввода данной команды потребуется ввести пароль учётной записи $USER
. Рекомендуется использовать пользователя admin
.
В версии 4.0 были обновлены компоненты и модули OpenSearch и OpenSearchDashboards, изменена структура хранения MitreAction и объектов Mitre, изменены стили SmartMonitor. Рассмотрим процедуру обновления каждого компонента. Установщик 4.0 требуется распаковать в директорию, например, /app/distr/
.
Перед началом работ строго рекомендуется сделать бэкап основных конфигурационных файлов и настроек Security.
Рекомендуемые действия
Рекомендуется создать директорию, например, /app/backup
, где будут сохранены:
- директория
config
, обычно$OPENSEARCH_HOME/config
или$OSD_HOME/config
- файл
systemd.service
, обычно это/etc/systemd/system/opensearch.service
и/etc/systemd/system/opensearch-dashboards.service
- файл
/etc/sysctl.d/00-opensearch.conf
- копия настроек Security, сделать это нужно один раз, для чего потребуются сертификат и закрытый ключ admin пользователя
JAVA_HOME=$OPENSEARCH_HOME/jdk/ $OPENSEARCH_HOME/plugins/opensearch-security/tools/securityadmin.sh -backup my-backup-directory \
-icl \
-nhnv \
-cacert $OPENSEARCH_HOME/config/ca-cert.pem \
-cert $OPENSEARCH_HOME/config/admin-cert.pem \
-key $OPENSEARCH_HOME/config/admin-key.pem
Миграция Mitre Action и объектов Mitre
В версии 4.0 были внесены значительные изменения во внутреннюю структуру хранения документов объектов Mitre. Эти изменения требуют миграции данных для обеспечения корректной работы системы после обновления с версии 3.2 до 4.0.
Цель миграции данных заключается в переносе информации из существующих индексов .sm_jsc_jobs
и .smos_mitre-yyyy.ww
в соответствии с новой структурой хранения, учитывая изменения, внесенные в версии 4.0.
Процесс миграции необходимо выполнить перед осуществлением основного обновления. Эти действия требуется выполнить однократно.
Действия, описанные ниже, выполняются в Консоли разработчика
. Чтобы перейти в нее, откройте веб-интерфейс (OpenSearch-Dashboards), и перейдите в меню Навигационное меню - Параметры системы - Консоль разработчика
.
Для обеспечения бесперебойного выполнения запланированных заданий, необходимо выполнить миграцию по следующему алгоритму:
- Создать резервную копию индекса, выполнив реиндексацию для
.sm_jsc_jobs
. В качестве индекса для резервной копии рекомендуется указатьbackup_sm_jsc_jobs
. Этот шаг необходим для обеспечения сохранности данных в случае неожиданных сбоев.
POST _reindex
{
"source":{
"index":".sm_jsc_jobs"
},
"dest":{
"index":"backup_sm_jsc_jobs"
}
}
- Выполнить процесс миграции c помощью скрипта.
При выполнении скрипта будут безвозвратно удалены следующие поля: technique_id
, technique_name
, technique
, tech
.
POST .sm_jsc_jobs/_update_by_query
{
"script" : {
"source": """
for (int i = 0; i < ctx._source.actions.length; i++)
if (ctx._source.actions[i].mitre != null) {
HashMap mitre = ctx._source.actions[i].mitre;
mitre.rule = mitre.index_fields.rule;
mitre.index_fields.remove("rule");
mitre.layers = mitre.index_fields.layers;
mitre.index_fields.remove("layers");
mitre.technique_id = [];
mitre.technique_id.add(mitre.index_fields.technique_id);
mitre.index_fields.remove("technique_id");
mitre.index_fields.remove("technique_name");
mitre.index_fields.remove("technique");
mitre.index_fields.remove("tech");
mitre.severity = mitre.index_fields.severity;
mitre.index_fields.remove("severity");
mitre.custom_fields = mitre.index_fields;
mitre.remove("index_fields");
}
""",
"params" : {},
"lang": "painless"
},
"query": {
"exists": {
"field": "actions.mitre.index_fields"
}
}
}
- Выполнить миграцию объектов Mitre с помощью скрипта, представленного ниже:
Скрипт рекомендуется выполнить для актуальных данных .smos_mitre-yyyy.ww
, где yyyy.ww
- необходимо заменить на дату в формате год-неделя.
При выполнении скрипта будут безвозвратно удалены следующие поля: technique
, tech
, tactic
.
POST .smos_mitre-yyyy.ww/_update_by_query
{
"script" : {
"source": """
ctx._source.remove("technique");
ctx._source.remove("tech");
ctx._source.remove("tactic");
""",
"params" : {},
"lang": "painless"
},
"query": {
"exists": {
"field": "technique"
}
}
}
- Действия по миграции завершены. После выполнения вышеперчисленных шагов неободимо выполнить обновление компонентов
Smart Monitor
.
Обновление стилей интерфейса
Обновление до версии 4.0 включает в себя не только функциональные улучшения, но и изменения в дизайне пользовательского интерфейса. Одним из таких изменений является обновление стилей интерфейса и логотипа. Для того чтобы применить эти изменения, необходимо выполнить команду, представленную ниже:
POST .sm_settings/_update_by_query
{
"query": {
"match": {
"_meta.id.keyword": "styles"
}
},
"script" : {
"source": "ctx._source.fontColor = \"#585857\";ctx._source.fontFamily = \"PT Sans, \\\"Source Sans 3\\\"\";ctx._source.mainGreen = \"#3B8646\";ctx._source.mainRed = \"#DC4E41\"; ctx._source.mainYellow = \"#F8BE32\";ctx._source.primaryColor = \"#3B8646\"; ctx._source.secondaryColor = \"#44686e\" ",
"lang": "painless"
}
}
Эта команда обновляет параметры стилей интерфейса, включая цвет шрифта, семейство шрифтов и основные цвета.
Обновление OpenSearch
В версии 4.0 обновились плагины OpenSearch и OpenSearch Dashboards, а также компоненты inventory, SME-RE. Установщик 4.0 требуется распаковать в директорию, например, /app/distr/
. Куда вы распакуете содержимое архива пометим как $SMOS_40
. Измените пользователя для всей директории.
SMOS_40=/app/distr/smos_4.0
Автоматический режим
Для работы скрипта потребуется наличие следующих предустановленных пакетов:
curl
zip
unzip
Если в конце Вы не увидели надписи, что Smart Monitor обновлён, не запускайте повторно скрипт обновления, сделайте скриншот на каком месте остановился скрипт и обратитесь в техническую поддержку.
Скрипт автоматического обновления позволяет автоматизировать действия при обновлении и находится по пути $SMOS_40/opensearch/update.sh
. При вызова скрипта есть возможность указать конфигурационный файл. Формат файла YAML и аналогичен конфигурационному файлу при установке.
Начинать обновление нужно с узлов без роли master, узлы data могут подключаться к более старым версиям узлов master, но не наоборот.
Для запуска обновления нужно запустить скрипт:
$SMOS_40/opensearch/update.sh
Потребуется ввести корректные пути до следующих директорий:
OpenSearch Home Directory
- директория расположения OpenSearch, обычно это/app/opensearch
OpenSearch Conf Directory
- директория расположения конфигурационных файлов OpenSearch, обычно/app/opensearch/config/
OpenSearch Data Directory
- директория расположения данных, обычно/app/data/
OpenSearch Logs Directory
- директория расположения логов, обычно/app/logs/
Скрипт обновления не производит никаких действий с директорией data
и logs
, директория конфигураций
и systemd файлы
будут сохранены во временную директорию $SMOS_40/opensearch/staging/
. Если запустить скрипт повторно, то директория staging
очистится.
================================================================================
SMART MONITOR UPDATE SCRIPT - OPENSEARCH
================================================================================
Current working directory: /app/distr/smos_4.0/opensearch
Current name of install's archive: opensearch-2.11.1-linux-x64.tar.gz
New version OpenSearch: 2.11.1
================================================================================
-- STEP 1. INSTALLATION DIRECTORIES
Opensearch home directory [/app/opensearch]:
Opensearch conf directory [/app/opensearch/config]:
Opensearch data directory [/app/data]: /app/data/opensearch
Opensearch logs directory [/app/logs]: /app/logs/opensearch
Final Opensearch home directory: /app/opensearch
Final Opensearch conf directory: /app/opensearch/config
Final Opensearch data directory: /app/data/opensearch
Final Opensearch logs directory: /app/logs/opensearch
Is this correct? [y/n]:
После ввода директорий требуется подтвердить введённые данные, нажав y
, или ввести заново нажав n
.
На втором шаге потребуется ввести пароль от пользователя admin (или другого пользователя с полными правами). При вводе пароль не будет отображаться.
-- STEP 2. GET ADMIN PASSWORD
Enter password for user "admin":
Затем будут произведены подготовительные действия перед обновлением, перед применением обновления будет задан вопрос о продолжении, до этого момента никаких действий в системе не производится. Также будет выведена некоторая информация о текущем узле и кластере в целом.
get current list of plugins
sm-core
sm-im
sm-inventory
sm-job-scheduler
sm-knowledge-center
sm-mitre
sm-mssp
sm-rsm
sm-uba
sme
opensearch-security
Information about current node OpenSearch:
{
"name" : "smos-node-00",
"cluster_name" : "smos-cluster",
"cluster_uuid" : "6--CRke0T3amFzo0RZwpjw",
"version" : {
"distribution" : "opensearch",
"number" : "2.11.1",
"build_type" : "tar",
"build_hash" : "6b1986e964d440be9137eba1413015c31c5a7752",
"build_date" : "2023-11-29T21:43:10.135035992Z",
"build_snapshot" : false,
"lucene_version" : "9.7.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
!!! AT THIS POINT WE START TO MAKE CHANGES IN OPERATING SYSTEM !!!
Do you want to continue? [y/N]:
Если нажать Enter
- обновление прервётся, для продолжения нужно нажать y
.
По успешному завершению обновления должны увидеть надпись SMART MONITOR SUCCESSFULLY UPDATED!
, предварительно будет выведена информация о кластере и текущем узле.
-- STEP 9. PRINT INFORMATION
current state of cluster
{
"cluster_name" : "smos-cluster",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"discovered_master" : true,
"discovered_cluster_manager" : true,
"active_primary_shards" : 50,
"active_shards" : 50,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 15,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 76.92307692307693
}
current state clusters nodes
172.16.0.27 14 99 8 1.47 0.63 0.26 dim data,ingest,master * smos-node-00
Information about current node OpenSearch:
{
"name" : "smos-node-00",
"cluster_name" : "smos-cluster",
"cluster_uuid" : "6--CRke0T3amFzo0RZwpjw",
"version" : {
"distribution" : "opensearch",
"number" : "2.11.1",
"build_type" : "tar",
"build_hash" : "6b1986e964d440be9137eba1413015c31c5a7752",
"build_date" : "2023-11-29T21:43:10.135035992Z",
"build_snapshot" : false,
"lucene_version" : "9.7.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
================================================================================
-- SMART MONITOR SUCCESSFULLY UPDATED!
================================================================================
Стоит обратить внимание, что скрипт обновления учитывает текущий список установленных плагинов на узлах OpenSearch, если требуется установить какой-нибудь плагин дополнительно, то действие стоит производить вручную дополнительно.
Обновление OpenSearch Dashboards
Для работы скрипта потребуется наличие следующих предустановленных пакетов:
curl
zip
unzip
Скрипт автоматического обновления позволяет автоматизировать действия при обновлении и находится по пути $SMOS_40/opensearch-dashboards/update.sh
. При вызова скрипта есть возможность указать конфигурационный файл. Формат файла YAML и аналогичен конфигурационному файлу при установке.
При работе скрипт сделает резервную копию файла сервиса systemd, opensearch-dashboards.yml
и директории с конфигурациями во временную директорию $SMOS_40/opensearch-dashboards/staging/
.
Для обновления нужно запустить скрипт:
$SMOS_40/opensearch-dashboards/update.sh
Потребуется ввести корректные пути до следующих директорий:
OpenSearch Dashboards Home Directory
- директория расположения OpenSearch Dashboards, обычно это/app/opensearch-dashboards
OpenSearch Dashboards Conf Directory
- директория расположения конфигурационных файлов OpenSearch Dashboards, обычно/app/opensearch-dashboards/config/
OpenSearch Dashboards Data Directory
- директория расположения данных, обычно/app/data/
OpenSearch Dashboards Logs Directory
- директория расположения логов, обычно/app/logs/
================================================================================
SMART MONITOR INSTALL SCRIPT - OPENSEARCH DASHBOARDS
================================================================================
Current working directory: /app/distr/smos_4.0/opensearch-dashboards
Current name of install's archive: opensearch-dashboards-2.11.1-linux-x64.tar.gz
Current version OpenSearch-Dashboards: 2.11.1
================================================================================
-- STEP 1. INSTALLATION DIRECTORIES
Proceed with installation. Shutdown the running service OpenSearch-Dashboards.
Opensearch Dashboards home directory [/app/opensearch-dashboards]:
Opensearch Dashboards conf directory [/app/opensearch-dashboards/config]:
Opensearch Dashboards data directory [/app/data]: /app/data/opensearch-dashboards/
Opensearch Dashboards logs directory [/app/logs]: /app/logs/opensearch-dashboards/
Final Opensearch Dashboards home directory: /app/opensearch-dashboards
Final Opensearch Dashboards conf directory: /app/opensearch-dashboards/config
Final Opensearch Dashboards data directory: /app/data/opensearch-dashboards/
Final Opensearch Dashboards logs directory: /app/logs/opensearch-dashboards/
Is this correct? [y/n]:
После ввода директорий требуется подтвердить введённые данные, нажав y
, или ввести заново нажав n
.
Затем будут произведены подготовительные действия перед обновлением, перед применением обновления будет задан вопрос о продолжении, до этого момента никаких действий, влияющих на работоспособность системы, не производится. Также будет выведена некоторая информация о текущем узле и кластере в целом.
Current list of plugins:
-- smartMonitor
-- smartMonitorColumnChart
-- smartMonitorCyberSecurity
-- smartMonitorDrawio
-- smartMonitorHeatmapChart
-- smartMonitorHtmlChart
-- smartMonitorIncidentManager
-- smartMonitorInventory
-- smartMonitorKnowledgeCenter
-- smartMonitorLineChart
-- smartMonitorLookupManager
-- smartMonitorMitreAttack
-- smartMonitorPDFExport
-- smartMonitorPieChart
-- smartMonitorSingleValue
-- smartMonitorTable
-- smartMonitorUserBehaviorAnalytics
Current version of OpenSearch-Dashboards: 2.11.1
!!! AT THIS POINT WE START TO MAKE CHANGES IN OPERATING SYSTEM !!!
Do you want to continue? [y/N]:
При успешном завершении скрипта обновления будет выведен соответствующий текст SMART MONITOR DASHBOARDS SUCCESSFULLY UPDATED
.