Skip to content

Руководство по установке

Список обозначений

  • Система - развернутое и работающее в сети заказчика решение "Vulns.io Enterprise VM"
  • Актив - компьютер, сервер, виртуальная машина, гипервизор или сетевое устройство, мониторинг которого ведется с помощью Системы.
  • Агент - программа, устанавливаемая на Актив, для обеспечения его сканирования в агентном режиме.
  • Инсталлер - программа установки Системы на linux-сервер.
  • Кабинет - основной web-интерфейс системы для работы пользователей.
  • Лицензия - право на использование продукта на заданный срок с оговоренными ограничениями и функционалом.
  • Ключ лицензии - буквенно-цифровой код для идентификации активированной лицензии.
  • БДУ - база данных уязвимостей, на основе которой производится сканирование Активов.

Требования к серверу

  • физический сервер или виртуальная машина,
  • любой linux-дистрибутив, поддерживающий Docker 19.03.13+ и Docker-compose 1.29.0 - 2.0.0,
  • доступ в Интернет.
Конфигурация сервера
Количество активов Количество ядер Объем памяти Тип хранилища
до 100 6 24 ГБ HDD
100 - 500 8 32 ГБ HDD
500 - 2000 12 48 ГБ SSD
2000 - 5000 16 64 ГБ SSD
5000 - 10000 32 128 ГБ SSD
10000+ * * *

* Для инфраструктур с количеством активов 10000+ разворачивание системы рекомендуется производить на нескольких серверах с оркестрацией контейнеров Docker Swarm или Kubernetes (для получении рекомендаций и помощи обратитесь в техподдержку).

Разворачивание системы в Kubernetes позволяет организовать автоматическое масштабирование ключевых компонентов системы для ускорения сканирования больших инфраструктур.

Аппаратные требования

Система использует БД MongoDB 5 в качестве основной базы данных. Это накладывает определенные требования к аппаратному обеспечению:

  • необходимо использовать процессор с поддержкой AVX-инструкций.

Подробнее:

Это нужно также учитывать при разворачивании Системы в средах виртуализации.

Конфигурация хранилища

Выбор объема хранилища, кроме количества активов в системе, зависит от:

  • занимаемого рабочего пространства, необходимого для запуска и работы системы (~30 ГБ),
  • подключенных каналов обновлений базы данных уязвимостей (~3-5 ГБ полная БД),
  • количества хранимых для каждого актива результатов аудита уязвимостей, инвентаризации, комплайса и прочих (в среднем ~90КБ один результат с учетом компрессии),
  • частоты проведения сканирования активов,
  • частоты генерации отчетов.
  • исторической глубины хранения результатов и отчетов,
  • конфигурации активов: количества установленного ПО, запущенных служб и пр.,
  • частоты обновления ПО на активах: количества найденных уязвимостей,
  • настроенного в системе уровня логирования событий.

Ниже приведены примеры ориентировочных объемов хранилища для разных вариантов частоты сканирования (каждого актива тремя типами задач) и глубины хранения:

  • Вариант 1 - ежедневное сканирование, хранение истории 30 дней.
  • Вариант 2 - ежедневное сканирование, хранение истории 180 дней.
  • Вариант 3 - еженедельное сканирование, хранение истории 1 год.
  • Вариант 4 - еженедельное сканирование, хранение истории 3 года.
Количество активов Вариант 1 Вариант 2 Вариант 3 Вариант 4
до 100 36 ГБ 40 ГБ 37 ГБ 40 ГБ
100 - 500 40 ГБ 60 ГБ 42 ГБ 55 ГБ
500 - 2000 55 ГБ 130 ГБ 65 ГБ 120 ГБ
2000 - 5000 75 ГБ 270 ГБ 105 ГБ 240 ГБ
5000 - 10000 112 ГБ 500 ГБ 170 ГБ 440 ГБ

Приведенные объемы хранилища определены условно и будут зависеть от инфраструктуры, в которой развернута система.

Сетевые доступы

В интернет

Для установки и дальнейшего обновления решения серверу Системы требуется ряд сетевых доступов в сеть Интернет:

Доменное имя Порт Тип ресурса Предназначение
api.vulns.io 443 API Получение списка файлов обновлений
data.vulns.io 443 Сервер обновлений Получение файлов обновлений БДУ
hub.vulns.io
cr.yandex
storage.yandexcloud.net
443 Реестр
docker-контейнеров
Получение обновлений docker-контейнеров

Опционально может потребоваться доступ к следующим сайтам для установки Docker и Docker-compose:

Внутри инфраструктуры
Источник Назначение Порт Описание трафика
Рабочее место
пользователя
Системы
Система 80,443 / TCP HTTP-трафик Кабинета
Актив
с Агентом
Система 443 / TCP Подключение Агентов
к серверу Системы
Система linux-активы
без Агента
22 / TCP Подключение к linux-активам
Система windows-активы
без Агента
135,137-139,
445 / TCP/UDP
Подключение к windows-активам
Система сетевое оборудование * 22,23 / TCP,
162 / UDP
Подключение к сетевым устр-вам
Система почтовый сервер 25 / TCP Отправка сообщений на email

* сетевые доступы будут зависеть от конкретного оборудования.

Требования к учетной записи

С привилегиями sudo (или root)

Рекомендуется выполнять установку под пользователем root или пользователем с привилегиями sudo (возможностью выполнять действия с правами администратора).

В этом случае у пользователя будут все необходимые права для:

  • запуска docker-контейнеров,
  • записи в папку /opt,
  • создании символической ссылки в /usr/local/bin/vio-cli.

Без привилегий sudo

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

  • у пользователя есть права на запись в папку /opt,
  • пользователь находится в группе docker (см. документацию Docker),
  • после установки необходимо выполнить команду:
sudo ln -s /opt/vulns.io/onpremise/cli/vio-cli /usr/local/bin/vio-cli

Перед установкой

Установка Docker

Для работы Системы необходимы Docker и Docker-compose не ниже версий, указанных в "Требованиях к серверу".

Инсталлер может автоматически установить Docker и Docker-compose на дистрибутивах:

  • Ubuntu,
  • Debian,
  • CentOS,
  • RedHat,
  • Fedora.

В остальных случаях необходимо произвести установку самостоятельно по инструкции https://docs.docker.com/engine/install/ или согласно документации к вашему linux-дистрибутиву.

Доменные имена

Желательно (но не обязательно) назначить внутренний домен, который будет использоваться для работы в Кабинете и работы с API Системы.

Если домен не будет указан при установке, то Кабинет и API будут доступны по ip-адресу.

SSL-сертификат

Необходимо подготовить SSL-сертификат и секретный ключ в формате PEM.

Если вместе с основным сертификатом нужно указать промежуточные, то они должны находиться в этом же файле в следующем порядке: сначала основной сертификат, а затем промежуточные.

Самоподписанный сертификат можно сгенерировать командой (параметр '-days' определяет срок действия сертификата):

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout domain.key -out domain.crt

В процессе выполнения команды введите запрашиваемую информацию, в том числе доменное имя сервиса (например, vulns.company.local).

В результате выполнения команды появятся файлы сертификата и секретного ключа: domain.crt и domain.key - они понадобятся при установке.

Лицензионный файл и ключ API

Для успешной установки Системы потребуется:

  • файл с действующей активированной Лицензией,
  • действующий ключ к облачному API Vulns.io
Проксирование HTTP/HTPS запросов

Если необходимо использование прокси для HTTP/HTPS запросов, то следуйте инструкциями ниже.

Проксирование запросов к реестру образов Docker

В процессе установки происходят запросы к реестру образов Docker.

Документация по настройке прокси Docker

Проксирование запросов к облачному API Vulns.io

В самом начале установки инсталлер предложит настроить прокси. Введите строку прокси в формате URL protocol://[username:password@]host:port

Ввод прокс строки

Этот прокси будет использоваться во время установки, а также в дальнейшей работе продукта.

Информация о прокси сохранится в главный конфигурацинный файл /opt/vulns.io/onpremise/config/main/config.ini в секциях [cloud.api.proxy] и [cloud.api.proxy.auth] (см. разделы "Конфигурирование" и "Проксирование запросов к облачному API Vulns.io" в документации администратора).

Установка системы

Установка Системы осуществляется с помощью Инсталлера - специального установочного исполнимого файла, поставляемого компанией-разработчиком.

Инсталлер можно скачать по ссылке: https://download.vulns.io/onpremise/install/vio-installer.

Важно!

Перед запуском Инсталлера необходимо:

  • cделать файл установщика исполняемым командой sudo chmod u+x vio-installer,
  • выполнить шаги раздела "Перед установкой"

Инсталлер выполняет следующие действия:

  • проверяет/устанавливает необходимое ПО (Docker и Docker Compose),
  • создает структуру каталогов в /opt/vulns.io/onpremise/,
  • создает конфигурационные файлы для данного окружения,
  • переносит указанные файлы сертификатов в /opt/vulns.io/onpremise/config/ssl/,
  • скачивает необходимые docker-образы Системы из реестра контейнеров и проверяет их целостность,
  • запускает Систему,
  • создает первого пользователя с ролью "Супер Администратор",
  • создает интеграционный ключ API для работы с API Системы,
  • генерирует уникальные для данного экземпляра Системы пароли и токены доступов для взаимодействия компонентов Системы,
  • настраивает хранилище для хранения учетных записей активов.

Инсталлер запрашивает следующие ОБЯЗАТЕЛЬНЫЕ параметры:

  • действующий ключ к облачному API Vulns.io,
  • путь к файлу с действующей активированной Лицензией,
  • имя первого пользователя с ролью "Супер Администратор" [admin],
  • email первого пользователя,
  • пароль первого пользователя.

Инсталлер запрашивает следующие ОПЦИОНАЛЬНЫЕ параметры:

  • URL к облачному API Vulns.io [https://api.vulns.io/onprem/v1]
  • доменное имя, назначенное для Системы,
  • путь к SSL-сертификату для API сервера Системы,
  • путь к ключу SSL-сертификата для API сервера Системы,
  • настройки кастомного реестра контейнеров [No],
  • вводить ли данные суперпользователя?* [Yes],
  • предложение создать первого пользователя [Yes],
  • путь к SSL-сертификату для хранилища учетных записей,
  • путь к ключу SSL-сертификата для хранилища учетных записей.

* в случае отказа первая учетная запись суперпользователя будет сгенерирована автоматически и сохранена в файле /opt/vulns.io/onpremise/config/main/credentials.ini

Установка Системы:

  1. Выполните шаги раздела "Перед установкой".
  2. Запустите инсталлер и следуйте его инструкциям.

Проверка работы системы

Проверка серверной части

При старте Системы запускается несколько docker-контейнеров. Проверить успешность запуска можно командой:

docker ps

Либо утилитой vio-cli:

/opt/vulns.io/onpremise/cli/vio-cli status

Пример вывода для нормально функционирующей Системы:

✔ Getting status from services ...
    Name                  Command               State                     Ports
---------------------------------------------------------------------------------
centrifugo     centrifugo -c config.json        Up       0.0.0.0:8000->8000/tcp
cli            node /cli-entrypoint.bundl ...   Exit 0
data-updater   docker-entrypoint.sh /app/ ...   Up
frontend       /entrypoint.sh                   Exit 0
manage_api_1   /app/api                         Up       0.0.0.0:49169->3000/tcp
manage_api_2   /app/api                         Up       0.0.0.0:49170->3000/tcp
mongodb        docker-entrypoint.sh mongod      Up       0.0.0.0:27017->27017/tcp
nginx          /docker-entrypoint.sh ngin ...   Up       0.0.0.0:443->443/tcp
redisdb        docker-entrypoint.sh redis ...   Up       0.0.0.0:6379->6379/tcp

Важно: Статус Exit 0 у сервисов cli и frontend является нормальным состоянием для этих сервисов.

Журналы установки

Процесс установки Системы подробно логируется в файлы:

  • /opt/vulns.io/onpremise/logs/installer/main.log
  • /opt/vulns.io/onpremise/logs/installer/error.log

После установки рекомендуется проинспектировать указанные файлы и убедиться в отсутствии ошибок и предупреждений.

В случае, если процесс установки не был завершен успешно, формируется специальный файл с отладочной информацией: /opt/vulns.io/onpremise/installer-error-dump.tar.gz, который необходимо отправить в службу технической поддержки разработчика Системы.

Web-интерфейс

По доменному имени, указанному при установке или ip-адресу сервера, должна открыться форма авторизации. Настроенное доменное имя можно посмотреть в файле /opt/vulns.io/onpremise/config/nginx/api.conf.

Используйте для входа email и пароль, которые вы указали при установке. Эта учетная запись также сохранена в файле /opt/vulns.io/onpremise/config/main/credentials.ini

Важно: Учетная запись в файле /opt/vulns.io/onpremise/config/main/credentials.ini сохраняется на случай утери пароля суперпользователя. Рекомендуется удалить данные из файла после первого успешного входа.

Загрузка БД уязвимостей

Дождитесь, пока закончится первоначальная загрузка базы данных уязвимостей - в Кабинете пропадет сообщение Идет загрузка данных БДУ. Дождитесь окончания процесса, иначе результаты сканирования будут недостоверными.

Конфигурирование

Конфигурационный файл config.ini

Основной конфигурационный файл Системы: /opt/vulns.io/onpremise/config/main/config.ini

Пример содержимого:

[cloud.api]
url = https://api.vulns.io/onprem/v1
key = 1234567890987654321234567890

[docker.registry]
type = primary

[api]
use_cache = true
debug_mode = false
agent_access_token_expiration = 259200
access_token_expiration = 300
user_password_max_age = 90
user_max_unsuccessful_login_attempts = 4
user_used_passwords_max_number = 3

[log]
level = info

[data-updater.scheduler]
cron = 0 * * * *
cron_type = cron

[data-updater.subscriptions]
channels = linux/*, bulletins, windows/*

[data-updater.other]
mongodb_bulkwrite_size = 10000

[smtp.sender]
name = Test name
email = mail@client.com

[smtp.transport.auth]
user = example@yandex.ru
password = 123123

[smtp.transport.smtp]
host = smtp.yandex.ru
port = 25
secure = true

#[smtp.transport]
#service = Yandex
Параметры конфигурационного файла
Параметр Описание
[cloud.api]
url URL облачного API Vulns.io
key Ключ API Vulns.io
[cloud.api.proxy]
protocol Протокол прокси для запросов к облачному API Vulns.io
host Hostname/IP прокси для запросов к облачному API Vulns.io
port Номер порта прокси для запросов к облачному API Vulns.io
[cloud.api.proxy.auth]
username Пользователь прокси для запросов к облачному API Vulns.io
password Пароль пользователя прокси для запросов
к облачному API Vulns.io
[docker.registry]
type Реестр контейнеров для обновления системы: primary
[api]
use_cache Использовать кэш при аудите уязвимостей
(ускоряет процесс аудита)
debug_mode Режим DEBUG аудита уязвимостей (в логах появится
расширенная информация о метриках процесса аудита)
agent_access_token_expiration Время жизни токена доступа Агентов
access_token_expiration Время жизни токена доступа в Кабинете
user_password_max_age Время жизни пользовательских паролей в днях
(после истечения потребуется смена)
user_max_unsuccessful_login_attempts Количество попыток ввода пользовательского пароля
до показа капчи
user_used_passwords_max_number Количество хранимых ранее использованных пользователем
паролей для проверки их уникальности
[log]
level Уровень системного логирования (для логов в
/opt/vulns.io/onpremise/logs/*): info|verbose|debug
[data-updater.scheduler]
cron Расписание проверки каналов обновлений (в формате CRON)
cron_type Тип механизма периодической проверки: cron
[data-updater.subscriptions]
channels Каналы обновления
[data-updater.other]
mongodb_bulkwrite_size Обновлять данные в БД пачками по
[smtp.sender]
name Имя отправителя в исходящих письмах
email Email отправителя в исходящих письмах
[smtp.transport.auth]
user Имя пользователя для подключению к SMTP-серверу
password Пароль пользователя для подключению к SMTP-серверу
[smtp.transport.smtp]
host Hostname или ip-адрес SMTP-сервера
port Порт SMTP-сервера
secure SSL (true/false)
[smtp.transport] [Альтернативно настройкам smtp.transport.smtp]
service Сервис почтовой службы (например: "Yandex", "Mail.ru", "Gmail")
см. полный список

После изменения параметров в конфигурационном файле необходимо перезапустить Систему командой:

/opt/vulns.io/onpremise/cli/vio-cli restart

Доменное имя

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

  1. Откройте конфигурационный файл: /opt/vulns.io/onpremise/config/nginx/api.conf
  2. Укажите новое доменное имя в директиве server_name
  3. Перезапустите сервис Nginx командой:
/opt/vulns.io/onpremise/cli/vio-cli restart nginx

Важно: если Система настроена на использование SSL-соединения, необходимо перевыпустить сертификат на новое доменное имя!

Настройки безопасности

SSL-сертификаты

Установка сертификата от Certificate Authority

Используемый для SSL-соединения сертификат должен храниться в каталоге /opt/vulns.io/onpremise/config/ssl/.

  1. Подготовьте SSL-сертификат и секретный ключ в формате PEM.
  2. Назовите их api.crt и api.key и поместите в каталог /opt/vulns.io/onpremise/config/ssl/.
  3. Раскоментируйте или добавьте в конфигурационный файл /opt/vulns.io/onpremise/config/nginx/api.conf настройки SSL:
listen 443 ssl;

if ($scheme = http) { return 307 https://$host$request_uri; }
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /opt/vulns.io/onpremise/config/ssl/api.crt;
ssl_certificate_key /opt/vulns.io/onpremise/config/ssl/api.key;

Перезапустите Nginx командой:

/opt/vulns.io/onpremise/cli/vio-cli restart nginx

Откройте в браузере адрес Кабинета и проверьте правильность настройки сертификата.

Установка самоподписанного сертификата

Используемый для SSL-соединения сертификат должен храниться в каталоге /opt/vulns.io/onpremise/config/ssl/.

Выполните команду генерации сертификата (параметр '-days' определяет срок действия сертификата):

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /opt/vulns.io/onpremise/config/ssl/api.key \
-out /opt/vulns.io/onpremise/config/ssl/api.crt

В процессе выполнения команды введите запрашиваемую информацию, в том числе доменное имя для Системы (например, vulns.company.local).

В каталоге /opt/vulns.io/onpremise/config/ssl/ появятся файлы сертификата и секретного ключа: api.crt и api.key.

Раскоментируйте или добавьте в конфигурационный файл /opt/vulns.io/onpremise/config/nginx/api.conf настройки SSL:

listen 443 ssl;

if ($scheme = http) { return 307 https://$host$request_uri; }
ssl_protocols TLSv1.2 TLSv1.3;
ssl_certificate /opt/vulns.io/onpremise/config/ssl/api.crt;
ssl_certificate_key /opt/vulns.io/onpremise/config/ssl/api.key;

Перезапустите Nginx командой:

/opt/vulns.io/onpremise/cli/vio-cli restart nginx

Откройте в браузере адрес Кабинета и проверьте правильность настройки сертификата.

Ограничение доступа по IP-адресам

По умолчанию доступ к Системе и API Системы открыт для любых сетевых адресов.

Для того, чтобы ограничить/открыть доступ на сетевом уровне, выполните следующие шаги:

  1. Откройте конфигурационный файл /opt/vulns.io/onpremise/config/nginx/api.conf
  2. С помощью директив allow и deny определите необходимые доступы.
  3. Перезапустите Nginx командой /opt/vulns.io/onpremise/cli/vio-cli restart nginx

Примеры:

allow 192.168.30.88; ## разрешает доступ с ip-адреса
deny 192.168.42.0/24; ## запрещает доступ из сети 192.168.42.0/255.255.255.0
deny all; ## запрещает доступ

Управление паролями и авторизацией

Сложность паролей

В Системе установлены следующие условия для паролей пользователей:

  • длина не менее 8 символов,
  • наличие цифр,
  • наличие букв в обоих регистрах,
  • наличие спецсимволов.

Это позволяет обеспечить необходимую сложность паролей при создании пользователей или смене ими своих паролей.

Время жизни пароля

По умолчанию в Системе установлен срок жизни для паролей пользователей - 90 дней. По истечении этого срока пользователю потребуется изменить пароль на новый.

Время жизни пароля можно изменить в главном конфигурационном файле /opt/vulns.io/onpremise/config/main/config.ini в параметре user_password_max_age.

Количество попыток ввода пароля

После определенного количества неудачных попыток ввода пароля при авторизации пользователю начнет отображаться капча с дополнительным текстовым кодом и формой для ввода.

Количество попыток ввода пользовательского пароля до показа капчи можно изменить в главном конфигурационном файле /opt/vulns.io/onpremise/config/main/config.ini в параметре user_max_unsuccessful_login_attempts.

Ротация паролей

При изменении пароля пользователя Система проверит, не ввел ли пользователь ранее использованный пароль. Этим обеспечивается ротация паролей пользователей.

Количество хранимых использованных ранее пользователем паролей можно изменить в главном конфигурационном файле /opt/vulns.io/onpremise/config/main/config.ini в параметре user_used_passwords_max_number.

После изменения параметров в конфигурационном файле необходимо перезапустить Систему командой:

/opt/vulns.io/onpremise/cli/vio-cli restart
Двухфакторная авторизация

Сразу после установки Системы рекомендуется настроить двухфакторную авторизацию (2FA) для пользователя с ролью "Супер Администратор".

После включения 2FA для входа в Систему потребуются:

  • данные учетной записи пользователя (логин и пароль),
  • уникальный код, который генерируется специальным приложением для одноразовых паролей (Google Authenticator, Яндекс.Ключ и подобные).

Двухфакторная авторизация включается в профиле пользователя:

  1. Откройте форму редактирование профиля.
  2. Переведите переключатель "Двухфакторная аутентификация (2fa)" в положение "Включено".
  3. Просканируйте отображенный QR-код приложением для одноразовых паролей.
  4. Введите в форму сгенерированный код из приложения.
  5. Сохраните предложенные резервные коды (с помощью этих одноразовых кодов можно будет войти в аккаунт в случае, если будет невозможно получить код через приложение).
  6. Нажмие кнопку Подтверждаю, что коды сохранены.

Следующий вход в Кабинет Системы потребует ввода одноразового пароля из приложения.

Отключение двухфакторной авторизации также производится в профиле пользователя:

  1. Откройте форму редактирование профиля.
  2. Переведите переключатель "Двухфакторная аутентификация (2fa)" в положение "Выключено".

Настройка хостовой ОС

Система функционирует на хосте под управлением ОС Linux. Все зависимости от используемого дистрибутива рекомендуется произвести настройку операционной системы по общепризнанным рекомендациям безопасности.

Согласно рекомендациям ФСТЭК ("МЕТОДИЧЕСКИЙ ДОКУМЕНТ РЕКОМЕНДАЦИИ ПО БЕЗОПАСНОЙ НАСТРОЙКЕ ОПЕРАЦИОННЫХ СИСТЕМ LINUX", Утвержден ФСТЭК России 25 декабря 2022 г.) при осуществлении безопасной настройки операционных систем Linux выполняются следующие процедуры:

  • настройка авторизации в операционной системе,
  • ограничение механизмов получения привилегий,
  • настройка прав доступа к объектам файловой системы,
  • настройка механизмов защиты ядра Linux,
  • уменьшение периметра атаки ядра Linux,
  • настройка средств защиты пользовательского пространства со стороны ядра Linux.

О том, какие именно действия необходимо выполнить, подробно описано в самом документе: https://fstec.ru/dokumenty/vse-dokumenty/spetsialnye-normativnye-dokumenty/metodicheskij-dokument-ot-25-dekabrya-2022-g

Предлагается также использовать для настройки ОС рекомендации "CIS Benchmarks" для Linux-систем: https://www.cisecurity.org/cis-benchmarks

Обновление системы

Обновление Системы осуществляется с помощью команды:

/opt/vulns.io/onpremise/cli/vio-cli update

Скачивание обновленных образов контейнеров займет какое-то время, затем они будут автоматически перезапущены.

Удаление системы

При необходимости сохранить БД Системы, сделайте копию папки /opt/vulns.io/onpremise/data/mongodb

Для удаления Системы перейдите в папку с Инсталлером и выполните команду:

./vio-installer --uninstall

После выполнения команды удалите папку /opt/vulns.io/onpremise/