10. Приложение Б Настройка и Установка Сервиса проверки полномочий

10.1. Описание конфигурационных файлов Сервиса проверки полномочий

10.1.1. Состав и содержание дистрибутивного пакета

Состав дистрибутива Сервиса проверки полномочий.

  • /distr/prohibitor – Сервис проверки полномочий:

    • /distr/prohibitor/customLogLevels.xml – файл описания настроек логирования;

    • /distr/prohibitor/conf/*.yml – заготовки конфигурационного файла;

В директории conf/ пакета находятся типовые заготовки конфигурационного файла.

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

  • шаблон конфигурационного файла Сервиса проверки полномочий для продуктивной среды (2-х ЦОДовая конфигурация: ФЦОД, РЦОД):

    • conf/prod-prohibitor-application.yml.

  • шаблон конфигурационного файла Сервиса проверки полномочий для продуктивной среды (1-на ЦОДовая конфигурация: ФЦОД):

    • conf/prod-singleDC-prohibitor-application.yml.

  • шаблон конфигурационного файла Сервиса проверки полномочий для тестовой среды (ТПОДД):

    • conf/test-prohibitor-application.yml.

Скопировать выбранный файл в каталог /distr/prohibitor под именем application.yml.

В скопированном конфигурационном файле application.yml задать необходимые параметры (в заготовке обозначены звездочками *). Более подробное описание необходимых настроек файла application.yml указаны в разделах ниже.

10.1.2. Реестр изменений конфигурационного файла

Таблица 10.1 содержит реестр изменений. Фиксация изменений ведется с версии 3.5.4

Таблица 10.1 Реестр изменений конфигурационного файла

Версия

Перечень изменений (относительно предыдущей версии)

3.5.4

Добавлен компонент Prohibitor

3.8.1

3.14.0

Исключены параметры:

  • trust-store.path

  • trust-store.password

  • data-center.default-node.pulsar.auth.keycloak-oauth.auth-type

  • data-center.default-node.pulsar.auth.keycloak-oauth.auth-protocol

Добавлены параметры:

  • notarius.target-host

  • notarius.target-port

10.1.3. Формирование конфигурационного файла Сервиса проверки полномочий

10.1.3.1. Общие настройки конфигурационного файла

В конфигурационном файле application.yml задать:

  • идентификатор агента (мнемоника ИС);

  • ОГРН Агента

  • тип используемого транспорта, параметр use-ca: прогрессивный, RSocket (true) либо традиционный, pulsar (false).

  • Идентификатор ключа КриптоПро: алиас контейнера КриптоПро. Необходимо использовать тот же ключ, что и на Агенте, с которым работает данный сервис проверки полномочий;

Эти значения должны совпадать с параметрами в конфигурационном файле Агента СМЭВ4 (Раздел 3.3.1)

# Общие настройки агента
agent:
  # Идентификатор агента
  id: '*** ИДЕНТИФИКАТОР (МНЕМОНИКА) АГЕНТА ***'
  ogrn: '*** ОГРН АГЕНТА ***'
  # использовать традиционный транспорт обмена с Ядром (pulsar, значение false)
  # либо прогрессивный вариант транспорта (rsocket, значение true)
  use-ca: true

keys:
  alias: '*** ИДЕНТИФИКАТОР КЛЮЧА КриптоПро ***'
  password:  '*** ПАРОЛЬ КЛЮЧА КриптоПро ***'

10.1.3.2. Настройка подключения к базе данных:

Переменные db.* указываются в разделе настроек подключения к PostgreSQL:

# параметры подключения к базе и настройки пулла коннектов
db:
  host: '*** hostname ***'
  port: '*** port ***'
  user: '*** username ***'
  password: '*** password ***'
  database: '*** database name ***'

10.1.3.3. Настройка подключения к сервису криптографии (Опционально)

Сервис проверки полномочий может работать как с локально установленным КриптоПро, так и без него, в этом случае за подписанием и верификацией сообщений он обращается к Агенту СМЭВ4. Для этого необходимо скопировать блок notarius в файл application.yml и заполнить параметер notarius.target-host.

Пример раздела конфигурации:

notarius:
  target-host: '*** IP АДРЕС СЕРВЕРА Агента СМЭВ4 ***'
  target-port: 8192

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

Пример раздела конфигурации:

user:
# Задание повторного логина невозможно в течении конфигурируемого периода
login-uniq-period: P3Y
# Время бездействия пользователя, после которого, он будет разлогинен
inactive-timeout: 5m
password:
    # Максимальное время жизни пароля пользователя
    max-password-lifetime: 60d
    # Минимальное время жизни пароля пользователя
    min-password-lifetime: 1d
    # Период, в который нужно уведомлять пользователя об истечения срока действия пароля
    password-expire-notification-period: 5d
block:
    # Количество попыток аутентификации, после превышения которого пользователь временно блокируется
    max-failed-login-attempts: 3
    # Время блокировки при превышении разрешенного числа попыток аутентификации
    block-period: 60m
    # Период не активности, после которого пользователь блокируется
    inactive-period: 45d
    # Частота актуализации статусов пользователей в БД
    status-actualize-period: 1m
totp:
    # Размер секрета в байтах, на основе которого генерируется дополнительный код.
    # Размер секрета и алгоритм хэширования связаны:
    # - для SHA1 рекомендуется размер не менее 20 байт (160 бит);
    # - для SHA256 рекомендуется размер не менее 32 байт (256 бит);
    # - для SHA512 рекомендуется размер не менее 64 байт (512 бит).
    secretSize: 20
    # Алгоритм хэширования. Возможные значения: SHA1, SHA256, SHA512.
    hashingAlgorithm: SHA1
    # Количество цифр дополнительного кода (длина дополнительного кода).
    digits: 8
    # Период актуальности дополнительного кода.
    period: PT30S

10.1.3.5. Настройка передачи информации аудита в ГосТех (Опционально)

Для активации передачи информации аудита при работе Агента СМЭВ4 на платформе ГосТех, необходимо скопировать данный блок в файл application.yml и заполнить параметры gostech.audit.* актуальными данными:

gostech:
  enabled: true
  audit:
    host: '*** audit_server_host ***'
    port: '*** audit_server_port ***'

10.2. Настройка и запуск Сервиса проверки полномочий

prohibitor - Сервис проверки полномочий предназначен для контроля и блокировки Поставщиком обращений к данным своей Витрины с использованием Регламентированных SQL-запросов (РЗ).

Установка Prohibitor опциональна, если Агент СМЭВ4 используется исключительно в качестве ПО, обеспечивающего доступ к данным посредством СМЭВ.

Действия (успешные и неуспешные), совершенные пользователями Сервиса проверки полномочий, логируются для передачи в систему сбора событий Аудита (SIEM) на стороне Поставщика данных. Перечень логируемых действий:

  • создание пользователя;

  • удаление пользователя;

  • блокировка и разблокировка пользователя;

  • блокировка и подтверждение полномочия на выполнение РЗ.

Внимание

Для соблюдения требований безопасности к сертифицированному Агенту ПОДД в контуре Поставщика рекомендуется:

  • развернуть систему сбора событий Аудита (SIEM);

  • хранить во внешней системе сбора событий Аудита (SIEM) данные аудита Сервиса проверки полномочий минимум один год.

10.2.1. Порядок загрузки данных и программ

Администратор УВ осуществляет развёртывание, запуск и настройку prohibitor с помощью данного руководства.

10.2.1.1. Состав и содержание дистрибутивного пакета

Состав дистрибутива Сервиса проверки полномочий (/distr/prohibitor):

  • /distr/prohibitor/app/app.jar – исполняемый файл;

  • /distr/prohibitor/prohibitor-cli/prohibitor-cli.jar – исполняемый файл;

  • /distr/einfahrt/csp-5.0.11455.tar.gz – дистрибутив CryptoPro CSP;

  • /distr/einfahrt/bellsoft-jdk17.0.7-linux-amd64.tar.gz – дистрибутив Java.

Внимание

Присутствующий в пакете дистрибутив CryptoPro CSP предназначен для установки в ОС CentOS, RedOS, ALT SP Server 10. Для Astra Linux, необходимо загрузить с сайта производителя https://cryptopro.ru/sites/default/files/private/csp/50/11455/linux-amd64_deb_astrasign.tgz дисрибутив CryptoPro CSP, соответствующий используемой операционной системе.

Путь /distr/prohibitor указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом упоминаемые ниже команды.

10.2.2. Предварительные операции (установка «пре-реквизитов»)

В случае, если prohibitor устанавливается на машине, отличной от той где установлен Агент, перед запуском prohibitor следует выполнить от имени пользователя root следующие действия:

  1. Создать пользователя {{user}} и группу {{user_group}}, под которым будет работать prohibitor.

  2. Установить java:

cd /distr/einfahrt
tar zxvf bellsoft-jdk17.0.7-linux-amd64.tar.gz
  1. Установить системные переменные:

export JAVA_HOME=/distr/einfahrt/jdk-17.0.7
export PATH=$PATH:$JAVA_HOME/bin

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

  1. Установить CryptoPro CSP (Опционально):

Внимание

Не требуется устанвливать отдельный экземпляр CryptoPro CSP для сервиса проверки полномочий, в следующих случаях:
  • Если Сервис проверки полномочий установлен на том же сервере, что и Агент СМЭВ4 в варианте «без использования docker», в такой ситуации на данном сервре уже имеется установленная CryptoPro CSP;

  • Если Сервис проверки полномочий настроен на использование Агента СМЭВ4 для проверки подписи, согласно Раздел 10.1.3.3.

При установке на CentOS, RedOS:

cd /distr/prohibitor
tar -xzvf csp-5.0.11455.tar.gz
rm -f csp-5.0.11455.tar.gz
cd csp-5.0.11455
yum -y install lsb-cprocsp-base*.rpm lsb-cprocsp-rdr-64*.rpm lsb-cprocsp-kc1-64*.rpm lsb-cprocsp-capilite-64*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-kc2-64*.rpm cprocsp-curl-64*.rpm
./install.sh
cd ..

При установке на Astra Linux:

cd /distr/prohibitor
tar -xzvf linux-amd64_deb_astrasign.tgz
rm -f  linux-amd64_deb_astrasign.tgz
cd linux-amd64_deb
apt -y install lsb-cprocsp-base*.deb lsb-cprocsp-rdr-64*.deb lsb-cprocsp-kc1-64*.deb lsb-cprocsp-capilite-64*.deb lsb-cprocsp-devel*.deb lsb-cprocsp-kc2-64*.deb cprocsp-curl-64*.deb
./install.sh
cd ..

При установке на ALT SP Server 10:

cd /distr/prohibitor
tar -xzvf csp-5.0.11455.tar.gz
rm -f csp-5.0.11455.tar.gz
cd csp-5.0.11455
apt-get -y install lsb-cprocsp-base*.rpm lsb-cprocsp-rdr-64*.rpm lsb-cprocsp-kc1-64*.rpm lsb-cprocsp-capilite-64*.rpm lsb-cprocsp-devel*.rpm lsb-cprocsp-kc2-64*.rpm cprocsp-curl-64*.rpm
./install.sh
cd ..

При наличии лицензионного кода CryptoPro CSP выполнить команду:

sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set {{cprocsp_license_code}}

В случае отсутствия лицензионного кода, CryptoPro CSP будет работать в режиме пробной лицензии.

Внимание

Срок действия пробной лицензии – 90 дней с момента установки CryptoPro CSP. Для сохранения работоспособности по окончании данного периода, необходимо приобрести лицензию на CryptoPro CSP и внести её в систему как указано выше.

  1. Установить контейнер ключа CryptoPro в директорию /var/opt/cprocsp/keys/{{user}}/. Пользователь {{user}} должен быть владельцем данной директории и файлов в ней.

  2. Выложить в каталог /distr/prohibitor конфигурационный файл application.yml, подготовленный согласно Раздел 10.1.3, в /distr/prohibitor/config выложить подготовленный файл logback.xml.

  3. В файл /etc/hosts добавить следующие записи:

172.20.59.5 podd.gosuslugi.ru
172.20.59.5 podd-cross.gosuslugi.ru
109.207.15.26 podd1.gosuslugi.ru
109.207.15.58 podd2.gosuslugi.ru
109.207.15.154 podd3.gosuslugi.ru
109.207.15.186 podd4.gosuslugi.ru
109.207.15.26 podd1-cross.gosuslugi.ru
109.207.15.58 podd2-cross.gosuslugi.ru
109.207.15.154 podd3-cross.gosuslugi.ru
109.207.15.186 podd4-cross.gosuslugi.ru
  1. Доступ к админ-консоли Сервиса проверки полномочий (prohibitor) необходимо проксировать с помощью внешних инфраструктурных решений. Указанный прокси должен поддерживать работу клиента с ним только по ГОСТ TLS. Прямой доступ к порту админ-консоли prohibitor необходимо ограничить средствами ОС или инфраструктуры, для недопущения прямого доступа к нему пользователей по нешифрованному протоколу.

10.2.3. Настройка БД для работы Сервиса проверки полномочий

  1. Установить СУБД Postgres 15

2. Подключится к БД PostgreSQL с административным аккаунтом и выполнить SQL команды ниже. Используйте собственные имя БД, имя пользователя и пароль, эти же данные должны быть указаны в конфигурационном файле сервиса prohibitor: (см. Раздел 10.1.3)

CREATE DATABASE prohibitor;
CREATE USER dbadmin_prohibitor WITH ENCRYPTED PASSWORD '<postgres_pass>' NOSUPERUSER CREATEROLE CREATEDB INHERIT LOGIN NOREPLICATION;
ALTER DATABASE prohibitor OWNER TO dbadmin_prohibitor;

Следующие команды следует выполнять от имени пользователя, подключенного к БД prohibitor с административным аккаунтом:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO dbadmin_prohibitor;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO dbadmin_prohibitor;

10.2.4. Создание пользователя для работы с Сервисом проверки полномочий

Для содания пользователя в Сервисе проверки полномочий используется консольная утилита prohibitor-cli.jar входящая в состав дистрибутивного пакета. Для этого необходимо выполнить на сервере команду:

java -jar /distr/prohibitor/prohibitor-cli/prohibitor-cli.jar -l {{user_login}} -p {{user_password}} --db_host {{db_host}} --db_port {{db_port}} --db_user {{db_user}} --db_password {{db_password}} --db_name {{db_name}}
Где:
  • {{user_login}} - логин создаваемого пользователя

  • {{user_password}} - пароль создаваемого пользователя

  • {{db_host}} - IP адрес СУБД Postgres для Сервиса проверки полномочий

  • {{db_port}} - порт СУБД Postgres для Сервиса проверки полномочий

  • {{db_user}} - пользователь БД от Сервиса проверки полномочий

  • {{db_password}} - пароль для БД от Сервиса проверки полномочий

  • {{db_name}} - имя БД от Сервиса проверки полномочий

10.2.5. Запуск Сервиса проверки полномочий

Убедитесь, что пользователь {{user}} имеет доступ к директориям, в которой установлен prohibitor: /distr/prohibitor.

Пример раздела конфигурации скрипта для запуска prohibitor с использованием сервиса systemd Данный файл, с названием prohibitor.service, необходимо сохранить в каталог /etc/systemd/system/, скорректировав, при необходимости, пути к файлам

[Unit]
Description="Service for prohibitor"
After=syslog.target

[Service]
Type=simple

WorkingDirectory=/distr/prohibitor
User={{user}}
Group={{user_group}}

Environment="JAVA_HOME=/distr/prohibitor/jdk-17.0.7"
Environment="JDK_JAVA_OPTIONS=--add-exports=java.base/sun.security.util=ALL-UNNAMED \
    --add-exports=java.base/sun.security.x509=ALL-UNNAMED \
    --add-exports=java.base/sun.security.pkcs=ALL-UNNAMED \
    --add-exports=java.base/sun.security.provider=ALL-UNNAMED \
    --add-exports=java.base/sun.security.tools.keytool=ALL-UNNAMED \
    --add-exports=java.base/sun.net=ALL-UNNAMED \
    --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED \
    --add-opens=java.base/java.lang=ALL-UNNAMED \
    --add-opens=java.base/java.nio=ALL-UNNAMED \
    --add-opens=java.xml/org.w3c.dom=ALL-UNNAMED \
    -Dsaffron.default.charset=UTF-16LE \
    -Dsaffron.default.collation.name='UTF-16LE$en_US' \
    -Dsaffron.default.nationalcharset=UTF-16LE \
    -XX:MaxRAMPercentage=80.0 \
    -XX:+UnlockExperimentalVMOptions \
    -XX:InitiatingHeapOccupancyPercent=16 \
    -XX:+UseStringDeduplication \
    -XX:+G1EagerReclaimHumongousObjects \
    -XX:+G1EagerReclaimHumongousObjectsWithStaleRefs \
    -XX:G1HeapWastePercent=2 \
    -XX:G1MaxNewSizePercent=25 \
    -XX:G1MixedGCLiveThresholdPercent=15 \
    -XX:+UseG1GC"
ExecStart=/distr/einfhrt/jdk-17.0.7/bin/java -jar app/app.jar
[Install]
WantedBy=multi-user.target

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

systemctl daemon-reload
systemctl enable prohibitor
systemctl start prohibitor
systemctl -l status prohibitor

10.3. Запуск консольной утилиты TOTP

TOTP CLI - это консольная утилита, предназначенная для генерации одноразовых паролей (TOTP, Time-based One-Time Passwords) на основе секретного ключа и текущего времени. Эта утилита необходима для аутентификации в сервисе проверки полномочий (Prohibitor).

10.3.1. Порядок загрузки данных и программ

Администратор УВ осуществляет развёртывание и настройку totp_cli с помощью данного руководства.

10.3.1.1. Состав и содержание дистрибутивного пакета

Состав дистрибутива Сервиса проверки полномочий (/distr/totp-cli):

  • /distr/totp-cli/totp_cli – исполняемый файл;

Путь /distr/totp-cli указан в качестве примера. Есть возможность использовать любой другой путь, скорректировав соответствующим образом упоминаемые ниже команды.

10.3.2. Предварительные операции

Перед запуском totp_cli выполнить от имени пользователя root следующие действия:

  1. Создать пользователя {{user}} и группу {{user_group}}, под которым будет запускаться totp_cli.

  2. В домашней директории пользователя {{user}} создать поддиректорию local/bin

  1. Переместить исполняемный файл totp_cli в /home/{{user}}/local/bin/

mkdir -p /home/{{user}}/local/bin
cp /distr/totp-cli/totp_cli /home/{{user}}/local/bin/totp_cli
chmod +x /home/{{user}}/local/bin/totp_cli

10.3.3. Запуск TOTP CLI

Для запуска TOTP CLI необходимо предварительно получить URL от Сервиса проверки полномочий. После получения URL запустить totp_cli утилиту коамндой предствленной ниже. Выполнять запуск необходимо от ранее созданого пользователя {{user}}

totp_cli "{{URL}}"