Перейти к основному содержимому
Версия: 4.0

Обновление Smart Monitor

внимание!

Инструкция описывает процесс обновления Smart Monitor с версии 3.2.* на 4.0.*.

Информация

Условные обозначения:

  • SMOS_40 - директория, куда разархивируется установочный пакет Smart Monitor версии 4.0
  • USER - пользователь системы с правами администратора, обычно это 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), и перейдите в меню Навигационное меню - Параметры системы - Консоль разработчика.

Для обеспечения бесперебойного выполнения запланированных заданий, необходимо выполнить миграцию по следующему алгоритму:

  1. Создать резервную копию индекса, выполнив реиндексацию для .sm_jsc_jobs. В качестве индекса для резервной копии рекомендуется указать backup_sm_jsc_jobs. Этот шаг необходим для обеспечения сохранности данных в случае неожиданных сбоев.
POST _reindex
{
"source":{
"index":".sm_jsc_jobs"
},
"dest":{
"index":"backup_sm_jsc_jobs"
}
}
  1. Выполнить процесс миграции 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"
}
}
}
  1. Выполнить миграцию объектов 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"
}
}
}
  1. Действия по миграции завершены. После выполнения вышеперчисленных шагов неободимо выполнить обновление компонентов 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.