Avanpost FAM/MFA+ : 4.3.8. Установка Avanpost FAM Reverse Proxy Service в ОС Linux

Начиная с Avanpost FAM Service версии 1.13.1 механизм Reverse Proxy реализуется при помощи отдельного MVP-модуля Avanpost Reverse Proxy Service. В статье рассмотрен вопрос установки и настройки данного компонента.

К моменту осуществления настройки должны быть выполнены следующие требования:

  • В сети существуeт экземпляр Avanpost FAM Server;
  • В сети или на одной машине с сервисами Avanpost FAM запущен NATS-сервер, к которому FAM и Reverse Proxy Service могут подключиться;
  • В ОС семейства Debian Linux должны быть установлены следующие программы:
    - openssl (программа управления сертификатами);
    - psql (CLI-клиент из состава PostgreSQL);
    - nginx (веб-сервер/прокси-сервер);
    - sudo (программа выполнения команд от имени суперпользователя).

Установка и настройка FAM ReverseProxy

Установка компонента необходимо осуществлять следующим образом: 

  1. Скачать и архив с актуальной версией Avanpost FAM Reverse Proxy Service из репозитория.
  2. Создать пользователя idp, используя следующую команду:
    sudo useradd idp
  3. Создать отлельную папку сервиса, используя следующую команду:
    sudo mkdir /opt/avanpost_reverseproxy
  4. Распаковать архив, используя следующую команду:
    sudo tar -C /opt/avanpost_reverseproxy -xvzf /path_to_tar_file/avanpost_reverseproxy-1.0-4.linux.tar.gz
  5. Перейти в папку avanpost_reverseproxy, используя команду:
    cd /opt/avanpost_reverseproxy/
  6. Скопировать стандартный конфигурационный файл FAM ReverseProxy, используя команду:
    cp config.sample.toml config.toml
  7. Предоставить пользователю idp полные права на осуществление действий с созданной папкой при помощи команды:
    sudo chown -R idp:idp /opt/avanpost_reverseproxy
  8. Создать файл сервиса для дальнейшего автоматического запуска, используя команду: 
    sudo nano /etc/systemd/system/reverseproxy.service
    [Unit]
    Description=ReverseProxy
    [Service]
    WorkingDirectory=/opt/avanpost_reverseproxy
    ExecStart=/opt/avanpost_reverseproxy/reverseproxy_linux_amd64
    Restart=always
    RestartSec=10
    SyslogIdentifier=reverseproxy
    User=idp
    Environment="SSO_CFG=/opt/avanpost_reverseproxy/config.toml"
    [Install]
    WantedBy=multi-user.target
  9. Перезагрузить конфигурацию, используя команду:
    sudo systemctl daemon-reload
  10. По необходимости отредактировать конфигурационный файл config.toml приложениями (более подробно о настройке параметров описано в приложении Б).

  11. Сконфигурировать веб-сервер nginx (более подробно процесс описан в разделе Настройка Reverse Proxy).
  12. Создать ReverseProxy-приложение в административной консоли Avanpost FAM Server (более подробно описано в разделе Управление Reverse Proxy-приложениями):
    1. Зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" в сервисе "Приложения" административной консоли.
    2. На этапе "Основные настройки" ввести наименование и выбрать тип Reverse Proxy.
    3. На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов.
    4. На этапе завершения настройки установить флажок "Сделать приложение активным" и сохранить.
  13. Добавить в конфигурационный файл Avanpost FAM Server следующие настройки (если в разделе [reverseproxyServer] настроены параметры host и port, заменить их параметром runNatsServer):
    [reverseproxyServer]
    runNatsServer=true
    
    [reverseproxyServer.nats]
    embedded = false
    connection = 'nats://localhost:4222'
    #serverCfgFile = ''
    #useTls = false
    #caCertPath = 'develop-cert-ca.pem'
    #certPath = ''
    #keyPath = ''
    #clientCertPath = 'develop-cert-client.pem'
    #clientKeyPath = 'develop-key-client.pem'
  14. Перезагрузить Avanpost FAM Server для применения настроек.
  15. Запустить FAM Reverse Proxy Service, используя команду:
    sudo systemctl start reverseproxy
  16. Проверить, что ReverseProxy-сервер запущен и успешно подключается к Avanpost FAM Server. Для этого требуется просмотрев его лог (локация лог-файла определяется в конфигурационном файле согласно приложению А), в котором должна содержаться следующая запись:
    {"level":"info","time":"2024-11-08T13:45:07+05:00","message":"Run reverse proxy server"}
    В случае если данной записи в логах нет, следует ознакомиться с ошибками в логах и вернуться на предыдущие шаги настройки.

Обновление FAM ReverseProxy

Обновление компонента Avanpost FAM ReverseProxy следует проводить следующим образом:

  1. Скачать и распаковать на рабочую машину обновленную версию Avanpost FAM ReverseProxy из репозитория.
  2. Остановить сервисы FAM ReverseProxy, используя команду:
    sudo systemctl stop reverseproxy.service
  3. Удалить папку /public, используя команду:
    sudo rm -r /opt/avanpost_reverseproxy/public/
  4. Используя скачанный файл, обновить компонент FAM Reverse Proxy Service при помощи команды:
    tar -C /opt/avanpost_reverseproxy -xvzf /path_to_tar_file/avanpost_reverseproxy-*.linux.tar.gz
  5. Запустить FAM Reverse Proxy Service, используя команду:
    sudo systemctl start reverseproxy.service

Приложение А. Параметры конфигурационного файла FAM Reverse Proxy config.sample.json

ПараметрОписание
[reverseproxyServer]
host

IP, на котором размещен сервер (0.0.0.0 для публичного доступа, localhost для локального)

port

Порт, по которому доступен сервис

lang

Язык шаблонов

natsTimeoutSecondsТаймаут запроса к FAM серверу
syncTimeoutMinutesПериод синхронизации (в минутах) неключевой информации между FAM Server и FAM Reverse Proxy Service 
startupTimeoutSecondsВремя ожидания (в секундах) первого ответа от FAM Server перед отключением
[nats]
connection

Параметр, по которому можно указать адрес хоста NATS-сервера, для которого выпущен сертификат.

embedded

Параметр, позволяющий задать тип NATS-сервера:

  • true - используется встроенный NATS-сервер;
  • false - используется внешний NATS-сервер.

По умолчанию в конфигурационном файле: true

serverCfgFileПуть к конфигурационному файлу NATS-сервера.
useTls

Параметр, позволяющий использовать защищенное TLS-соединение:

  • true - TLS-соединение используется;
  • false - TLS-соединение используется.
caCertPathПуть к корневому сертификату удостоверяющего центра (УЦ).
certPathПуть к открытой части сертификата NATS-сервера, выпущенного через УЦ.
keyPathПуть к закрытой части (ключу) сертификата NATS-сервера, выпущенного через УЦ.
clientCertPath

Путь к открытой части сертификата клиента, выпущенного через УЦ.

clientKeyPath

Путь к закрытой части (ключу) сертификата клиента, выпущенного через УЦ.

usernameЛогин клиента, подключающегося к NATS-серверу.
passwordПароль клиента, подключающегося к NATS-серверу.
tokenТокен клиента, подключающегося к NATS-серверу (токен используется как замена логина и пароля).
[logging]
levelУровень логгирования
log_fileПуть для записи лог-файла

Приложение Б. Пример конфигурационного файла 

[nats]
connection = 'nats://localhost:4222'

[reverseproxyServer]
host = 'localhost'
port = 4010
lang = "ru"
natsTimeoutSeconds = 30
lkBaseUrl = "http://localhost:4200"
syncTimeoutMinutes = 60
startupTimeoutSeconds = 30
# authorityBaseURL = "http://localhost:4008" # не обязательно для работы с одним FAM сервером

[cookie]
secure = false
http_only = true

[logging]
level = 'debug'
log_file='\tmp\logs'

# embedded example with TLS
# [nats]
# embedded = true
# connection = 'tls://localhost:4222'
# serverCfgFile = ''
# useTls = true
# caCertPath = 'develop-cert-ca.pem'
# certPath = 'develop-cert.pem'
# keyPath = 'develop-key.pem'
# clientCertPath = 'develop-cert-client.pem'
# clientKeyPath = 'develop-key-client.pem'

# External connection without TLS
# [nats]
# connection = 'nats://localhost:4222'
                                   


Обсуждение