Установка Avanpost SmartPAM из архива

2.4. Установка Avanpost SmartPAM из архива

Навигатор по разделу:

1. Файлы конфигурации

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

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

2. Развертывание файлов дистрибутива Avanpost SmartPAM из архива

Для развертывания файлов дистрибутива из архива:

1. Пройдите по ссылке: https://packages.avanpost.ru/#browse/browse:avanpost-pam:stable, выберите конкретную версию дистрибутива и скачайте ее. Поместите дистрибутив на сервер, в каталог /opt/smartpam.

2. Распакуйте файлы дистрибутива из архива:

tar xzf Avanpost.Pam.<Номер версии и идентификатор сборки>.tar.gz -C /opt/smartpam, где <Номер версии и идентификатор> - разделенные плюсом номера версии и сборки

3. Установка и настройка компонентов обработки RDP-сессий GoSecure pyRDP

1. Скачайте файл по ссылке:

https://packages.avanpost.ru/repository/avanpost-pam/stable/1/utils/gosecure-pyrdp.zip

2. Скопируйте архив дистрибутива из исходного каталога (замените /source-path на правильный путь с расположением архива дистрибутива) в целевой каталог:

mkdir /opt/smartpam/utils
cp /source-path/gosecure-pyrdp.zip /opt/smartpam/utils/

3. Установите утилиту pyrdp-convert и её дополнительные зависимости:

chmod +x /opt/smartpam/session-processor/install.sh
sh /opt/smartpam/session-processor/install.sh

4. Публикация интерфейса системы на веб-сервисе

Для публикации интерфейса Avanpost SmartPAM на веб-сервере выполните следующее:

4.1 Настройка клиентской машины

Для корректной работы Avanpost SmartPAM необходимо обеспечить разрешение DNS-имен интерфейсов системы с клиентских машин. Если в инфраструктуре отсутствует DNS-служба, обеспечьте разрешение указанных имен любым доступным способом, например с помощью локального файла hosts на клиентских машинах.

В данном руководстве в качестве примера используются следующие DNS-имена:

smartpam-admin.avanpost.local
smartpam.avanpost.local

При необходимости приведенные DNS-имена могут быть изменены 


4.2. Настройка сервера

1. Создайте конфигурационный файл smartpam.conf на основе примера:

sudo nano /etc/nginx/conf.d/smartpam.conf

2. Скопируйте настройки в конфигурационный файл smartpam.conf, при необходимости отредактировав параметры (порты, DNS-имена, имена сертификатов и др.). Вы можете использовать шифрованное соединение (HTTPS), для этого необходимо сгенерировать и установить сертификаты TLS.

В примере ниже применяется HTTPS-соединение, опирающееся на пару сертификатов smartpam.crt и smartpam.key (содержащих публичный и закрытый ключи). Подразумевается, что сертификаты выписаны на оба DNS-имени smartpam-admin.avanpost.local и smartpam.avanpost.local:

#HTTP
server {
    listen       80;
    server_name  smartpam-admin.avanpost.local;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /opt/smartpam/admin-console/admin-ui;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ /api {
        proxy_pass   http://127.0.0.1:5002;
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Max-Age' 3600;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
    }
    error_page 404 =200 /index.html;
}

#HTTPS
server {
    listen 443 ssl;
    server_name smartpam-admin.avanpost.local;

    ssl_certificate     /etc/ssl/certs/smartpam.crt;
    ssl_certificate_key /etc/ssl/private/smartpam.key;

    location / {
        root   /opt/smartpam/admin-console/admin-ui;
        index  index.html index.htm;
    }

    location ~ /api {
        proxy_pass   http://127.0.0.1:5002;

        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Max-Age' 3600;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
    }

    error_page 404 =200 /index.html;
}

#HTTP
server {
    listen       80;
    server_name  smartpam.avanpost.local;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /opt/smartpam/user-console/user-ui;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ /api {
        proxy_pass   http://127.0.0.1:5001;
		proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Max-Age' 3600;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
    }
    error_page 404 =200 /index.html;
}

#HTTPS
server {
    listen 443 ssl;
    server_name smartpam.avanpost.local;

    ssl_certificate     /etc/ssl/certs/smartpam.crt;
    ssl_certificate_key /etc/ssl/private/smartpam.key;

    location / {
        root   /opt/smartpam/user-console/user-ui;
        index  index.html index.htm;
    }

    location ~ /api {
        proxy_pass   http://127.0.0.1:5001;
		proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'Access-Control-Max-Age' 3600;
            add_header 'Content-Type' 'text/plain; charset=utf-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        add_header 'Access-Control-Allow-Origin' '*' always;
        add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, PATCH, DELETE, OPTIONS' always;
        add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always;
        add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always;
    }

    error_page 404 =200 /index.html;
}

3. Проверьте конфигурацию:

sudo nginx -t

# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful

4. Перезапустите Nginx:

sudo systemctl restart nginx

5. Установка компонентов сервиса UBA

1. Предоставьте права на выполнение скрипта установки:

sudo chmod +x /opt/smartpam/uba/scripts/install.sh

2. Перейдите в каталог со скриптами UBA:

cd /opt/smartpam/uba/scripts

3. Запустите скрипт установки (скрипт может обрабатываться в течение длительного промежутка времени):

sudo ./install.sh

6. Генерация ключей и сертификатов для работы SSH и RDP служб и gRPC-сервисов

Для работы SSH- и RDP-прокси, а также gRPC-сервисов должны применяться ключи и сертификаты. Дистрибутив продукта включает в себя скрипты для генерации и установки самоподписанных ключей и сертификатов.

Если Вы не готовы применять самоподписанные сертификаты, Вам необходимо установить сертификаты, выпущенные центром сертификации. Информацию об этом см. в разделе "Установка ключей и сертификатов, выпущенных центром сертификации"

Если Вы готовы применять самоподписанные сертификаты, выполните следующие команды:

cd /opt/smartpam/utils/sshproxy/
./generate.sh  # генерация ключей для SSH, при запросе passphrase оставьте ее пустой

cd /opt/smartpam/utils/rdpproxy/
./generate.sh  # генерация сертификатов для RDP

cd /opt/smartpam/utils/grpc/
./generate.sh  # генерация сертификатов для gRPC

7. Регистрация системы в systemd и ее запуск

1. Запустите скрипт автоматической настройки, который находится в /opt/smartpam/utils/setup_smartpam_service.sh:

bash /opt/smartpam/utils/setup_smartpam_service.sh

Скрипт выполнит следующее:

  • Скопирует все необходимые service-файлы компонентов в системный каталог Systemd (/etc/systemd/system/)

  • Активирует и запустит службы SmartPAM

  • Создаст target для запуска служб SmartPAM

После выполнения скрипта будут зарегистрированы и запущены следующие службы:

  • admin-console.service

  • event-processor.service

  • pam-manager.service

  • rdp-proxy.service

  • session-processor.service

  • session-recorder.service

  • ssh-proxy.service

  • user-console.service

  • pam-vault.service

  • uba.service

  • scheduler.service

Кроме того, будет создан target "Группа сервисов SmartPAM"

8. Настройка логирования

1. Откройте файл настроек:

sudo nano /etc/systemd/journald.conf

2. Измените или добавьте параметры:

Storage=persistent        # Хранить логи на диске (в /var/log/journal)
SystemMaxUse=500M         # Максимальный размер всех логов
SystemKeepFree=100M       # Минимум свободного места на диске
SystemMaxFileSize=100M    # Максимальный размер одного лог-файла
Compress=yes              # Сжимать старые журналы

3. Сохраните файл и перезапустите службу:

sudo systemctl restart systemd-journald

4. Если каталог /var/log/journal отсутствует, создайте его:

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal

8.1. Уровни логирования

Для изменения уровня логирования необходимо отредактировать параметр log_level в соответствующих конфигурационных файлах (описание состава и параметров конфигурационных файлов см. далее в разделе "Конфигурационные файлы Avanpost SmartPAM").

Возможные уровни логирования:

  • debug — отладочная информация

  • info — информационные сообщения

  • warn — предупреждения

  • error — критические ошибки

8.2. Просмотр логов

Информация о работе с логами приведена в разделе "Просмотр логов" Руководства администратора.

9. Конфигурационные файлы Avanpost SmartPAM

Конфигурационные файлы, поставляемые с продуктом, обеспечивают работу продукта с настройками по умолчанию, принятыми в настоящем руководстве, и не требуют обязательного редактирования. Однако, при необходимости Вы можете внести в них изменения (например, изменить параметры подключения к базе данных и серверу MinIO).  Для промышленных инсталляций важно изменить все задаваемые в настройках секреты (в т.ч., но не ограничиваясь следующим:

  • ключи для шифрования jwt-токенов

  • пароль от УЗ для подключения к базе данных

  • пароль от УЗ для подключения к серверу MinIO

В дистрибутиве каждый конфигурационный файл назван config.yaml.default. Для корректной настройки необходимо переименовать каждый файл config.yaml.default в config.yaml.

Admin API

Файл находится по следующему пути: /opt/smartpam/admin-console/config.yaml

service_name: api_admin_console # имя сервиса
http:
  port: localhost:5002 # порт сервиса
  base_api: /api/v1 # базовый url admin api
  signing_key: Passw0rd # ключ для подписи jwt токенов
db:
  connection_string: postgres://pam:Passw0rd@localhost/pam?sslmode=disable # подключение к БД
  migration_dir: /opt/smartpam/migrations/postgres # каталог с файлами миграций БД
proxy_manager:
  server_addr: localhost:8009 # адрес службы pam_manager
  tls: true # включение TLS
  token: "grpc_secret" # токен аутентификации для доступа к серверу 
vault_client:
  server_addr: localhost:8010 # адрес сервиса vault
  tls: true # включение TLS
  token: "grpc_secret" # токен аутентификации для доступа к серверу 
log_level: info # уровень логирования сервиса
nats:
  url: nats://localhost:4222 # адрес брокера сообщений NATS
  login: "nats_login" # логин для аутентификации клиентов NATS
  password: "nats_password" # пароль для аутентификации клиентов NATS 
minio:
  awsAccessKeyId: "minioadmin" # логин minio
  awsSecretAccessKey: "minioadmin" # пароль minio
  awsEndpointUrl: "http://localhost:9000" # url подключения к minio
  replaysBucket: "replays" # бакет для записей сессий
uba:
  server_addr: localhost:8013
  tls: true # включение TLS
  token: "grpc_secret"
use_idle_timeout: true # включение автоматического завершения неактивных сессий по истечении таймаута

Event Processor

Файл находится по следующему пути: /opt/smartpam/event-processor/config.yaml

# event_processor_v1 config
db:
  connection_string: "postgres://pam:Passw0rd@localhost/pam?sslmode=disable" # подключение к БД
grpc_server:
  port: :8011 # порт сервиса
  enable_tls: true  # включение TLS
  cert: "/opt/smartpam/assets/grpc/grpc_cert.pem"  # сертификат GRPC
  key: "/opt/smartpam/assets/grpc/grpc.pem" # ключ GRPC
  secret: "grpc_secret" # секрет для аутентификации
log_level: "info" # уровень логирования сервиса
nats:
  url: nats://127.0.0.1:4222 # адрес брокера сообщений NATS
  client_login: "nats_login" # логин для аутентификации клиентов NATS
  client_password: "nats_password" # пароль для аутентификации клиентов NATS
proxy_manager:
  server_addr: localhost:8009 # адрес службы pam_manager
  tls: true # включение TLS
  token: "grpc_secret" # токен аутентификации для доступа к серверу 
uba:
  server_addr: localhost:8013
  tls: true # включение TLS
  token: "grpc_secret"

Manager

Файл находится по следующему пути: /opt/smartpam/pam-manager/config.yaml

# pam proxy manager node config
db:
  connection_string: "postgres://pam:Passw0rd@localhost/pam?sslmode=disable" # подключение к БД
grpc_server:
  port: :8009 # порт сервиса
  enable_tls: true  # включение TLS
  cert: "/opt/smartpam/assets/grpc/grpc_cert.pem"  # сертификат GRPC
  key: "/opt/smartpam/assets/grpc/grpc.pem" # ключ GRPC
  secret: "grpc_secret" # секрет для аутентификации 
vault_client:
  server_addr: localhost:8010 # адрес службы vault
  tls: true # включение TLS
  token: "grpc_secret" # токен аутентификации для доступа к серверу 
log_level: "info" # уровень логирования сервиса

RDP Proxy

Файл находится по следующему пути: /opt/smartpam/rdp-proxy/config.yaml

host_cert_public_path: "/opt/smartpam/assets/rdp/rdp_cert.crt" # сертификат rdp
host_cert_private_path: "/opt/smartpam/assets/rdp/rdp.key" # приватный ключ rdp
gate_cert_public_path: "/opt/smartpam/assets/rdpgw/rdpgw_cert.pem" # сертификат rdp gateway
gate_cert_private_path: "/opt/smartpam/assets/rdpgw/rdpgw.pem" # приватный ключ rdp gateway
listen_address: ":60000" # порт rdp (используется, если use_gateway: “no”)
listen_gw_address: ":4443" # порт rdp gateway (используется, если use_gateway: “yes”)
session_recorder:
  server_addr: "localhost:8012" # адрес сервиса записи сессий
  tls: true # включение TLS
  token: "grpc_secret" # токен аутентификации для доступа к серверу 
event_processor:
  server_addr: "localhost:8011" # адрес сервиса обработки событий безопасности
  tls: true # включение TLS
  token: "grpc_secret" # токен аутентификации для доступа к серверу 
proxy_manager:
  server_addr: "localhost:8009" # адрес сервиса proxy manager
  tls: true # включение TLS
  token: "grpc_secret" # токен аутентификации для доступа к серверу 
use_gateway: "yes" #использовать RDGSP (yes), использовать RDP (no)
log_level: "info"  # уровень логирования сервиса
# Ниже заданы параметры настройки виртуального компьютера.
# Эти параметры должны коррелировать со вторым сертификатом (сертификатом конечного узла) 
domain_name : "rdp" # имя домена
computer_name : "avanpost_smart_pam" # имя виртуального узла
dns_domain_name : "rdp.domain" # DNS-имя домена
dns_computer_name : "avanpost_smart_pam.rdp.domain" # полное DNS-имя компьютера (обычно формируется как: <computer_name>.<dns_domain_name>) 
dns_tree_name : "rdp.domain" # полное доменное имя леса Active Directory. Обычно совпадает с dns_domain_name

Session Processor

Файл находится по следующему пути: /opt/smartpam/session-processor/config.yaml

# session_processor_v1 config
db:
  connection_string: "postgres://pam:Passw0rd@localhost/pam?sslmode=disable" # подключение к БД
log_level: "info"  # уровень логирования сервиса
# настройка "preset" кодека H.264 в FFmpeg
h264_preset: superfast # пресет сжатия H.264. Возможные значения: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo
h264_crf: "23" # уровень качества видео. Возможные значения 0-51
pyrdp_convert_path: /opt/smartpam/session-processor/venv/bin/pyrdp-convert
pyrdp_convert_virtual_environment_path: /opt/smartpam/session-processor/venv
minio:
  awsAccessKeyId: "minioadmin" # логин minio
  awsSecretAccessKey: "minioadmin" # пароль minio
  awsEndpointUrl: "http://localhost:9000" # url подключения к minio
  replaysBucket: "replays" # бакет для записей сессий

Session Recorder

Файл находится по следующему пути: /opt/smartpam/session-recorder/config.yaml

# session_recorder_v1 config
db:
  connection_string: "postgres://pam:Passw0rd@localhost/pam?sslmode=disable" # подключение к БД
grpc_server:
  port: :8012 # порт сервиса
  enable_tls: true  # включение TLS
  cert: "/opt/smartpam/assets/grpc/grpc_cert.pem"  # сертификат GRPC
  key: "/opt/smartpam/assets/grpc/grpc.pem" # ключ GRPC
  secret: "grpc_secret" # секрет для аутентификации
log_level: "info" # уровень логирования сервиса

SSH Proxy

Файл находится по следующему пути: /opt/smartpam/ssh-proxy/config.yaml

# ssh proxy config
host_key_path: "/opt/smartpam/assets/sshproxy/id_rsa" # путь до приватного ключа RSA
port: :2222 # порт сервиса
proxy_manager:
  server_addr: localhost:8009 # адрес службы pam_manager 
  tls: true # включение TLS
  token: "grpc_secret " # токен аутентификации для доступа к серверу
event_processor:
  server_addr: localhost:8011 # адрес службы обработки событий безопасности сессий
  tls: true # включение TLS
 token: "grpc_secret " # токен аутентификации для доступа к серверу
session_recorder:
  server_addr: localhost:8012 # адрес службы записи сессий
  tls: true # включение TLS
  token: "grpc_secret " # токен аутентификации для доступа к серверу
log_level: "info" # уровень логирования сервиса

User API

Файл находится по следующему пути: /opt/smartpam/user-console/config.yaml

service_name: userapi
http:
  port: localhost:5001 # порт сервиса
  base_api: /api/v1 # базовый url user api
  signing_key: Passw0rd # ключ подписи jwt токенов
db:
  connection_string: "postgres://pam:Passw0rd@localhost/pam?sslmode=disable" # подключение к БД
log_level: info # уровень логирования
nats:
  url: nats://localhost:4222 # адрес брокера сообщений NATS
  login: "nats_login" # логин для аутентификации клиентов NATS
  password: "nats_password" # пароль для аутентификации клиентов NATS
vault_client:
  server_addr: localhost:8010 # адрес службы vault
  tls: true # включение TLS
  token: "grpc_secret" # токен аутентификации для доступа к серверу 
use_idle_timeout: true # включение автоматического завершения неактивных сессий по истечении таймаута

Vault

Файл находится по следующему пути: /opt/smartpam/pam-vault/config.yaml

# vault_v1 config
db:
  connection_string: "postgres://pam:Passw0rd@localhost/pam?sslmode=disable" # подключение к БД
grpc_server:
  port: :8010 # порт сервиса
  enable_tls: true # включение TLS
  cert: "/opt/smartpam/assets/grpc/grpc_cert.pem"  # сертификат GRPC
  key: "/opt/smartpam/assets/grpc/grpc.pem" # ключ GRPC
  secret: "grpc_secret" # секрет для аутентификации
log_level: "info" # уровень логирования

UBA

Файл находится по следующему пути: /opt/smartpam/uba/config.yaml

# uba service config
db:
  connection_string: "postgres://pam:Passw0rd@127.0.0.1/pam?sslmode=disable" # подключение к БД
grpc_server:
  port: :8013 # порт сервиса
  enable_tls: true  # включение TLS
  cert: "/opt/smartpam/assets/grpc/grpc_cert.pem"  # сертификат GRPC
  key: "/opt/smartpam/assets/grpc/grpc.pem" # ключ GRPC
  secret: "grpc_secret" # секрет для аутентификации
models_dir: /opt/smartpam/uba/models # каталог с моделями UBA

Scheduler

Файл находится по следующему пути: /opt/smartpam/scheduler/config.yaml

db:  
connection_string: postgres://pam:Passw0rd@127.0.0.1/pam?sslmode=disable # Строка под-ключения к БД
  migration_dir: /opt/smartpam/migrations/postgres # Каталог с файлами миграций БД
log_level: info # Уровень логирования сервиса
nats:
  url: nats://localhost:4222 # адрес брокера сообщений NATS
  login: "nats_login" # логин для аутентификации клиентов NATS
  password: "nats_password" # пароль для аутентификации клиентов NATS
one_time_merge_auth_provider_ldap: # подключение провайдера ldap
  id: 8aba5e45-77c5-4aa4-ab26-a9ddfa5cbcee # id ldap провайдера (рекомендуется сгенери-ровать собственный, в формате UUID)
  name: example.com  # внутреннее имя ldap провайдера
  domain: example.com # домен ldap провайдера
  query: "(&(objectCategory=person)(objectClass=user)(memberOf=cn=SmartPAMGroup,cn=Users,dc=corp,dc=example,dc=com))" # фильтр для импортируемых пользователей, находящихся в
определённой группе (в нашем случае группа=SmartPAMGroup)
  url: ldap://10.10.10.4:389 # Адрес ldap сервиса
  bind_username: ldapuser # Пользователь ldap с необходимыми правами — подключение к каталогу (bind), чтение данных каталога с применением указанного фильтра (query)
  bind_password: Passw0rd # Пароль пользователя ldap
minio:
  awsAccessKeyId: "minioadmin" # логин minio
  awsSecretAccessKey: "minioadmin" # пароль minio
  awsEndpointUrl: "http://localhost:9000" # url подключения к minio
  replaysBucket: "replays" # бакет для записей сессий
uba:
  server_addr: localhost:8013 # Адрес сервиса uba
  tls: true # включение TLS
  token: "grpc_secret" # Токен аутентификации.

# Планировщик задач (task registry). 
# Поддерживаются три формата расписания:
# 1. @after <duration> — однократный отложенный запуск.
# Можно указывать как одну единицу времени ("@after 1h"), так и комбинировать их для точности ("@after 1h5m30s").
# 2. @every <duration> — периодический запуск с фиксированным интервалом.
#  Указывается только одна единица времени: "@every 1h" (каждый час), "@every 30m" (каждые 30 минут). Комбинировать нельзя.
# 3. Классический cron — для сложных расписаний.
#    Формат: минута час день_месяца месяц день_недели.
#    Например: 45 23 * * 6 — каждую субботу в 23:45.
#    Подробнее о синтаксисе cron см. https://en.wikipedia.org/wiki/Cron 

# Миграции БД один раз после старта
- key: migrations.run
  spec: "@after 5s"
# Разовая операция слияния ldap (если настроено).
- key: auth.merge_ldap_once
  spec: "@after 10s"
# Периодический импорт пользователей.
- key: auth.import_users
  spec: "@every 1h"
# Периодический запуск инспектора UBA.
# Инспектор анализирует поведение пользователей, переобучает модели и выявляет ано-малии.
# Параметры его работы (глубина выборки, период переобучения и др.) настраиваются в интерфейсе администратора в разделе «Настройки» → «UBA».
- key: uba.inspector
  spec: "@every 1h"
# Периодическая архивация завершенных сессий.
# Проверяет наличие сессий, срок хранения которых истек, и применяет к ним действие, заданное в разделе «Настройки» → «Архивация сессий».
- key: session.archivator
  spec: "@every 1h"

10. Интеграция с LDAP

1. Для интеграции с LDAP используется параметр one_time_merge_auth_provider_ldap в конфигурационном файле API Admin:

one_time_merge_auth_provider_ldap: # подключение провайдера ldap
  id: 8aba5e45-77c5-4aa4-ab26-a9ddfa5cbcee # id ldap провайдера (рекомендуется сгенерировать собственный, в формате UUID)
  name: example.com  # внутреннее имя ldap провайдера
  domain: example.com # домен ldap провайдера
  query: "(&(objectCategory=person)(objectClass=user)(memberOf=cn=SmartPAMGroup,cn=Users,dc=corp,dc=example,dc=com))" # фильтр для импортируемых пользователей, находящихся в определённой группе (в нашем случае группа=SmartPAMGroup)
  url: ldap://10.10.10.4:389 # адрес ldap сервиса
  bind_username: ldapuser # пользователь ldap с необходимыми правами — подключение к каталогу (bind), чтение данных каталога с применением указанного фильтра (query)
  bind_password: Passw0rd # пароль пользователя ldap

При запуске сервиса административной консоли указанные в конфигурации LDAP-параметры будут автоматически добавлены в базу данных. Эти данные будут использоваться для периодической синхронизации пользователей из LDAP-каталога, интервал которой задаётся в конфигурационном файле параметром import_users_interval.

11. Интеграция с SMTP

  1. Для интеграции с SMTP используется параметр mailer в конфигурационном файле API Admin. Отредактируйте шаблоны писем в двух форматах: текстовом и HTML:

mailer:
  url: smtp://user:pass@smtp.example.com # строка подключения к smtp серверу
  sender_template: "Support <example.com>" # отправитель уведомления
  action_event_recipient_template: "Ivanov Ivan <example.com>" # ответственные получатели рассылки
  action_event_subject_template: alert #
  action_event_text_template: > # шаблон письма простой текст
    Avanpost SmartPAM выявил опасное событие в защищаемом ресурсе.
    Наименование ресурса: {{ResourceName}}
    Адрес ресурса: {{ResourceAddress}}
    Действие: {{ActionName}}
    Объект действия: {{ObjectIdentity}}
    Описание объекта действия: {{ObjectDescription}}
    Дата и время: {{EventTime}}
    ФИО пользователя: {{UserFullName}}
    Примененная привилегированная УЗ: {{AccountLogin}}
    Время начала сессии: {{SessionStartedAt}}
    ID сессии: {{SessionID}}
  action_event_html_template: > # шаблон письма с html
    <strong>
    Avanpost SmartPAM выявил опасное событие в защищаемом ресурсе.<br/>
    Наименование ресурса: {{ResourceName}}<br/>
    Адрес ресурса: {{ResourceAddress}}<br/>
    Действие: {{ActionName}}<br/>
    Объект действия: {{ObjectIdentity}}<br/>
    Описание объекта действия: {{ObjectDescription}}<br/>
    Дата и время: {{EventTime}}<br/>
    ФИО пользователя: {{UserFullName}}<br/>
    Примененная привилегированная УЗ: {{AccountLogin}}<br/>
    Время начала сессии: {{SessionStartedAt}}<br/>
    ID сессии: {{SessionID}}<br/>
    </strong>

12. Удаление архива дистрибутива

1. Если все компоненты установлены успешно и работают корректно, то можно удалить ненужные архивы приложений:

rm -f /opt/smartpam/Avanpost.*.zip
rm -f /home/smartpam/minio.deb
rm -f /home/smartpam/gosecure-pyrdp.zip
rm -f /home/smartpam/nats-server.zip

Обсуждение