Установка

Пошаговое руководство по развёртыванию Security Center

Системные требования для работы Security Center:

  • Минимальные системные ресурсы: 4 ГБ ОЗУ и 2 ядра ЦПУ.

  • Свободное дисковое пространство для установки и хранения данных Security Center.

  • Сетевой доступ для внешних пользователей (пользователи должны иметь возможность подключаться к Security Center по сети).

Для улучшения стабильности работы рекомендуется устанавливать Auditor и Security Center на разных машинах (физических или виртуальных)

Подготовка

Перед установкой Security Center, убедитесь что у вас установленные следующие компоненты (для установки с помощью Docker-compose):

Создание SSH-ключей

Чтобы безопасно подключиться к серверу Linux, вам нужно настроить SSH-ключи.

Если у вас еще нет SSH-ключей, вы можете сгенерировать их с помощью следующей команды в терминале сервера:

ssh-keygen

⚠️ При копировании ключей убедитесь, что они скопированы без пробелов.

Установка SSH-ключа на сервер

После генерации SSH-ключей вам нужно скопировать открытый SSH-ключ на сервер Linux. Используйте эту команду для копирования открытого ключа:

ssh-copy-id <имя_пользователя>@<ip-адрес_сервера>

Замените <имя_пользователя> на имя пользователя вашей учетной записи Linux-сервера, а <ip-адрес_сервера> на IP-адрес Linux-сервера. Вам будет предложено ввести пароль для аутентификации.

Откройте на локальной машине файл, в котором хранится закрытый SSH-ключ. Закрытый ключ обычно сохраняется с расширением .pem или .ssh.

Выберите и скопируйте содержимое файла закрытого ключа. Убедитесь, что вы скопировали ключ с правильными разрешениями и разрывами строк.

Обратите внимание, что Security Center в настоящее время несовместим с базой данных Amazon Aurora.

Установка

Установка GitLab CI

Шаг 1: Сделайте форк репозитория Security Center. Это создаст копию репозитория под вашей учетной записью, которую вы сможете изменять и настраивать по мере необходимости.

Шаг 2: Задайте публичный SSH-ключ на сервере где будет развернут Security Center. Добавьте SSH-ключ в Ваш аккаунт GitLab Этот ключ будет использоваться для установления безопасного соединения между хостом и репозиторием.

Шаг 3: Настройте переменные окружения для форк-проекта в настройках GitLab CI/CD

  • Обязательные переменные окружения, которые должны быть указаны (в настройках CI/CD необходимо задать следующие переменные окружения для этих ключей):

SEC_CENTER_HOST: Укажите хост, на котором будет развернут Security Center

SSH_KEY_PRIVATE: Установите приватный SSH-ключ для форк-репозитория. Этот ключ будет использоваться для аутентификации в процессе установки

  • Необязательные переменные окружения. Вы можете использовать значения по умолчанию, предоставленные в демонстрационных целях, или указать их при необходимости:

IMAGE_VERSION=latest
DB_NAME=db_name
DB_USER=db_user
DB_PASS=db_pass
DB_HOST=db_host
DB_PORT=5432
GUNICORN_WORKERS=4
GUNICORN_THREADS=4
IMPORTER_GUNICORN_WORKERS=1
IMPORTER_GUNICORN_THREADS=1
RABBITMQ_DEFAULT_USER=admin
RABBITMQ_DEFAULT_PASS=mypass
AMQP_HOST_STRING=amqp://admin:mypass@rabbitmq:5672/
DOMAIN=http://localhost
COOKIES_SECURE=False (True if you use https)

IMAGE_VERSION: Скрипт самостоятельно определит последнюю версию.

Для оптимальной производительности (проверено на 1 миллионе нахождений) рекомендуется указать следующие значения окружения: GUNICORN_WORKERS = 4 и GUNICORN_THREADS= 4 Для настройки обработчика импорта и потоков импорта необходимо скорректировать следующие переменные: IMPORTER_GUNICORN_WORKERS определяет количество обработчиков задач импорта. Рекомендуется устанавливать значение, учитывающее объем и интенсивность задач импорта. IMPORTER_GUNICORN_THREADS определяет количество потоков в каждом обработчике импорта. Это влияет на параллельную обработку задач внутри обработчика.

DB_NAME, DB_USER, DB_PASS, DB_HOST, DB_PORT переменные, необходимые для настройки базы данных

Если брокер сообщений размещен на внешнем сервере, то переменная AMQP_HOST_STRING должна быть задана. Однако, если контейнер установлен локально, то все три переменные RABBITMQ_DEFAULT_USER RABBITMQ_DEFAULT_PASS также должны быть заданы. Имя пользователя и пароль в переменных RABBITMQ_DEFAULT_PASS и RABBITMQ_DEFAULT_USER должны быть идентичны переменной AMQP_HOST_STRING.

Переменная COOKIES_SECURE определяет флаг безопасности cookie. Она должна иметь значение True при использовании HTTPS.

Шаг 4: Запустите конвейер

Шаг 5: Выберите раздел Установка

Скрипт GitLab CI полученный после форка выполнит процесс установки. Этот скрипт запустит Security Center и создаст пользователя с правами администратора используя стандартные логин и пароль "admin/admin"

Обратите внимание, что после первоначальной установки необходимо сбросить пароль для пользователя-администратора через панель администрирования Django: перейлите по ссылке <ваш-домен>.com/admin и войдите в систему, используя учетные данные суперпользователя, затем выберите "Users" в левой панели. Здесь вы можете добавить пользователей.

Следующий шаг: Запустите Security Center и добавьте лицензию

Установка с использованием Helm

Перед использованием Helm убедитесь, что Helm установлен на вашем компьютере и что ваш кластер Kubernetes настроен на работу с Helm

Шаг 1: Клонируйте репозиторий

Клонируйте репозиторий Security Center на Ваш сервер:

git clone https://gitlab.com/whitespots-public/security-center.git security-center

Шаг 2: Перейдите в корневой каталог

Перейдите в каталог, в который были клонированы файлы Security Center, каталог helm:

cd security-center/SecurityCenter-HelmChart  

Шаг 3: Настройте переменные окружения

В файле values.yaml, измените переменные окружения по умолчанию в желаемых секциях:

  • в секции deploymentSpec:

release: 
  • в секции ingresses:

- name: ingress-webhook
  path: /api/v1/jira-helper/jira-event/<your-webhook>/

Замените your-webhook в пути переменной '/api/v1/jira-helper/jira-event/your-webhook/' уникальным идентификатором (токеном) связанным с конкретным событием вебхука, например, e2b7e8be-1c77-4969-9105-58e91bd311cc.

  • в секции configMap:

COOKIES_SECURE: "True"  
DB_HOST: "postgres"     
DB_PORT: "5432"         
DB_NAME: "postgres"       
DB_USER: "postgres"      
DEBUG: "True"           
DOMAIN: http://localhost  
RABBITMQ_DEFAULT_USER: admin 
  • COOKIES_SECURE: определяет флаг безопасности cookie. Она должна иметь значение True при использовании HTTPS.

  • DB_NAME, DB_USER, DB_HOST, DB_PORT и DB_PASS укажите переменные, необходимые для настройки базы данных, или используйте значения по умолчанию.

  • в переменной DOMAIN укажите домен, в котором будет доступен Security Center.

  • если контейнер развернут локально, переменная RABBITMQ_DEFAULT_USER должна быть задана

  • в секции secrets:

AMQP_HOST_STRING: "amqp://admin:mypass@rabbitmq:5672/"
DB_PASS: "postgres"
JWT_PRIVATE_KEY: <your key>
JWT_PUBLIC_KEY: <your key>
SECRET_KEY: <your key>
RABBITMQ_DEFAULT_PASS: "mypass"
  • Если брокер сообщений размещен на внешнем сервере, то переменная AMQP_HOST_STRING должна быть задана. Однако, если контейнер установлен локально, то все три переменные, включаяRABBITMQ_DEFAULT_USER и RABBITMQ_DEFAULT_PASS должны быть заданы

  • Переменная JWT_PRIVATE_KEY и JWT_PUBLIC_KEY это пара ключей RSA, используемых для подписи ключей JWT

  • SECRET_KEY: переменная используется для генерации хэшей Django

  • в секции db:

Рекомендуется использовать внешнюю базу данных. Для этого достаточно указать значение true для переменной external_db, остальные переменные в этом разделе указывать не нужно

Но если вы используете базу данных внутри кластера, настройте для нее переменные

external_db: false 
name: postgres
storageClassName: local-storage
node: minikube
path: /mnt/local-storage
mountPath: /mnt
claimName: postgres-pv-claim

external_db: false name: название базы данных storageClassName: название класса хранилища для базы данных node: узел в кластере, на котором будет размещена база данных path: путь к хранилищу базы данных на узле mountPath: место внутри контейнера, где будет смонтировано хранилище базы данных claimName: имя PersistentVolumeClaim, которое используется для запроса на выделение хранилища

Шаг 4: Настройка входа

Чтобы настроить вход в чарт Helm, добавьте необходимые аннотации. Мы рекомендуем включить следующие:

Для ingress-webhook:

ingress.kubernetes.io/scheme: internet-facing
ingress.kubernetes.io/target-type: ip

Для ingress-hosts:

ingress.kubernetes.io/scheme: internal
ingress.kubernetes.io/target-type: ip

Для ingress-import:

ingress.kubernetes.io/scheme: internal
ingress.kubernetes.io/target-type: ip

Шаг 5: Установите приложение используя Helm

Запустите приложение, выполнив следующую команду:

helm install securitycenter <path-to-helm-directory>

замените <path-to-helm-directory> путем к каталогу, содержащему чарт Helm для вашего приложения.

После первого запуска вы получите Access Token.

Скопируйте значение Access Token и добавьте его в файл values.yaml в секцию secret, после чего перезапустите scanner-worker pod

Следующий шаг: Запустите Security Center и добавьте лицензию

Установка через Docker-compose

Шаг 1: Клонируйте репозиторий

Клонируйте репозиторий Security Center на Ваш сервер:

git clone https://gitlab.com/whitespots-public/security-center.git security-center

Шаг 2: Перейдите в корневой каталог

Перейдите в корневой каталог проекта Security Center, выполнив следующую команду:

cd security-center

Шаг 3: Настройте переменные окружения

В корневом каталоге проекта Security Center выполните следующую команду:

./set_vars.sh

Сценарий запрашивает значения для следующих переменных окружения, включая необязательные. Вы также можете принять значения по умолчанию для необязательных переменных, нажав Enter:

DB_NAME{default=postgres}
DB_USER{default=postgres}
DB_PASS{default=postgres}
DB_HOST{default=postgres}
DB_PORT{default=5432}
RABBITMQ_DEFAULT_USER{default=admin}
RABBITMQ_DEFAULT_PASS{default=mypass}
AMQP_HOST_STRING{default=amqp://admin:mypass@rabbitmq:5672/}
COOKIES_SECURE{default=True}
DOMAIN=http://localhost
IMAGE_VERSION=latest
  • В переменной IMAGE_VERSION обязательно должна быть задана. Укажите версию приложения например release_v24.02.3 или latest и скрипт установит последнюю актуальную версию.

  • Переменная DOMAIN обязательно должна быть задана. Укажите домен, в котором будет доступен Security Center

  • DB_NAME, DB_USER, DB_PASS, DB_HOST, DB_PORT неообязательные переменные. Укажите переменные, необходимые для настройки базы данных, или используйте значения по умолчанию.

  • Если брокер сообщений размещен на внешнем сервере, то переменная AMQP_HOST_STRING должна быть задана. Однако, если контейнер установлен локально, то все три переменные RABBITMQ_DEFAULT_USER , RABBITMQ_DEFAULT_PASS также должны быть заданы. Имя пользователя и пароль в переменных RABBITMQ_DEFAULT_PASS и RABBITMQ_DEFAULT_USER должны быть идентичны переменной AMQP_HOST_STRING.

  • Переменная COOKIES_SECURE определяет флаг безопасности cookie. Она должна иметь значение True при использовании HTTPS.

Скрипт set_vars.sh создает файл .env с настроенными переменными окружения и генерирует пару JWT-ключей, которые используются для подписи JWT-ключей, а SECRET_KEY используется для генерации хэшей в Django.

НЕ ЗАПУСКАЙТЕ команду ./set_vars.sh дважды. Если вам нужно изменить значение переменной, сделайте это в файле .env.

Шаг 4: Запустите Security Center

Чтобы запустить Security Center, выполните следующую команду:

sh run.sh

Шаг 5: Создайте учетную запись суперпользователя

Чтобы создать учетную запись администратора, выполните следующую команду:

docker-compose exec back python3 manage.py createsuperuser --username admin

Это имя пользователя и пароль позволят вам войти в установленный Security Center

или

Создайте пользователей с помощью панели администратора Django

Чтобы получить доступ к настройкам администратора, перейдите по URL-адресу <ваш-домен>.com/admin и войдите в систему, используя учетные данные суперпользователя, затем выберите Users на левой панели. Отсюда вы можете добавлять пользователей. Не забудьте назначить пользователям необходимые разрешения.

Следующий шаг: Запустите Security Center и добавьте лицензию

Поздравляем, вы завершили установку Security Center! Далее добавьте полученную лицензию.

Если у вас возникнут какие-либо вопросы или проблемы в процессе установки или использования приложения, обратитесь за помощью в нашу службу поддержки sales@https://cybercodereview.ru/.

Last updated