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
Версия |
Перечень изменений (относительно предыдущей версии) |
|---|---|
3.5.4 |
Добавлен компонент Prohibitor |
3.8.1 |
|
3.14.0 |
Исключены параметры:
Добавлены параметры:
|
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 следующие действия:
Создать пользователя {{user}} и группу {{user_group}}, под которым будет работать prohibitor.
Установить java:
cd /distr/einfahrt
tar zxvf bellsoft-jdk17.0.7-linux-amd64.tar.gz
Установить системные переменные:
export JAVA_HOME=/distr/einfahrt/jdk-17.0.7
export PATH=$PATH:$JAVA_HOME/bin
Переменные должны устанавливаться автоматически также после перезагрузки сервера. Для этого рекомендуется внести данную настройку в profile пользователя либо в настройки ОС.
Установить 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 и внести её в систему как указано выше.
Установить контейнер ключа CryptoPro в директорию
/var/opt/cprocsp/keys/{{user}}/. Пользователь {{user}} должен быть владельцем данной директории и файлов в ней.Выложить в каталог
/distr/prohibitorконфигурационный файлapplication.yml, подготовленный согласно Раздел 10.1.3, в/distr/prohibitor/configвыложить подготовленный файлlogback.xml.В файл
/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
Доступ к админ-консоли Сервиса проверки полномочий (prohibitor) необходимо проксировать с помощью внешних инфраструктурных решений. Указанный прокси должен поддерживать работу клиента с ним только по ГОСТ TLS. Прямой доступ к порту админ-консоли prohibitor необходимо ограничить средствами ОС или инфраструктуры, для недопущения прямого доступа к нему пользователей по нешифрованному протоколу.
10.2.3. Настройка БД для работы Сервиса проверки полномочий
Установить СУБД 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 следующие действия:
Создать пользователя {{user}} и группу {{user_group}}, под которым будет запускаться totp_cli.
В домашней директории пользователя {{user}} создать поддиректорию local/bin
Переместить исполняемный файл 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}}"