Avanpost FAM/MFA+ : 4.3.5. Установка FAM LDAP Proxy в ОС Linux из tar.gz-архива

Общие сведения

Компонент Avanpost FAM LDAP Proxy позволяет обеспечить решение задачи двухфакторной аутентификации для унаследованных приложений с поддержкой аутентификации по паролю (LDAP BIND) через LDAP-каталог (Microsoft Active Directory, FreeIPA и т.д.).

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

  • Пользователь проходит аутентификацию путём ввода логина и пароля в интерфейс аутентификации целевого приложения;
  • Пользователю будет приходить второй фактор по одному из выбранных администратором методов (либо push в Avanpost Authenticator, либо push в Telegram);
  • После успешной проверки второго фактора будет выполняться проверка логина и пароля в подключенном к LDAP Proxy LDAP-каталоге;
  • После успешной проверки пароля ответ от LDAP-каталога будет возвращён целевому приложению.

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

  • Наличие и доступность gRPC-порта (по умолчанию TCP 9007) развёрнутого компонента Avanpost FAM Server;
  • Наличие и доступность LDAP-порта каталога/домена (по умолчанию TCP 389 для LDAP и TCP 636 для LDAPS), с которым будет взаимодействовать компонент Avanpost FAM LDAP Proxy.

Также необходимо обеспечить корректную настройку на стороне административной консоли Avanpost FAM одного из следующих методов аутентификации:

  • Аутентификацию по запросам/push-запросам в мобильное приложение Avanpost Authenticator;
  • Аутентификацию по запросам в мессенджер Telegram.

Шаги по установке

Развёртывание файлов дистрибутива из архива

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

  1. Создать служебного пользователя ОС idp (параметр -m необходим для создания домашней директории):
    sudo useradd -m idp
    sudo passwd idp
    
  2. После выполнения команд из п.1 необходимо придумать и ввести пароль, а также подтверждение пароля. Если пароль слишком короткий или простой, то будет выдано соответствующее оповещение, после которого нужно повторить ввод пароля, соблюдая рекомендации.

         

  1. Создать директорию /opt/ldapproxy, присвоить права на директорию пользователю idp:
    sudo mkdir /opt/ldapproxy
    sudo chown -R idp:idp /opt/ldapproxy
  2. Переключиться на пользователя idp и перейти в директорию opt/ldapproxy
    sudo su idp
    cd /opt/ldapproxy
  3. Скачать архив с FAM LDAP Proxy, сохранить его.
  4. В зависимости от расположения файла с архивом дистрибутива FAM LDAP Proxy скопировать его из исходной директории (заменить в команде /source-path на правильный путь с расположением архива и Avanpost.*.tar.gz на корректное имя архива) в целевую директорию:
    cp /source-path/Avanpost.*.tar.gz -t /opt/ldapproxy
  5. Распаковать файлы дистрибутива из архива, находясь в той же директории (заменить в команде Avanpost.*.tar.gz на корректное имя архива).
    tar -xvzf Avanpost.*.tar.gz
  6. После успешной распаковки, получив сообщение об этом, удалить архив дистрибутива (заменить в команде Avanpost.*.tar.gz на корректное имя архива).

    rm Avanpost.*.tar.gz

Регистрация службы в systemd 

  1. Создать конфигурационный файл сервиса на основе примера. При желании можно использовать любой текстовый редактор, доступный в системе, в данном примере работа ведется на основе использования редактора vi.
    sudo vi /etc/systemd/system/ldapproxy.service

    Пример кода для конфигурационного файла:
    [Unit]
    Description=LDAPPROXY
    
    [Service]
    WorkingDirectory=/opt/ldapproxy
    ExecStart=/opt/ldapproxy/ldap-proxy_linux_amd64
    Restart=always
    RestartSec=10
    SyslogIdentifier=ldap_proxy
    User=idp
    
    [Install]
    WantedBy=multi-user.target

    Примечание

    Переход в режим ввода из командного режима в текстовом редакторе vi осуществляется командой i. Выход из режима ввода в командный режим осуществляется клавишей Esc. Для того, чтобы закончить редактирование и сохранить файл в текстовом редакторе vi,  нужно ввести в командном режиме команду : , далее ввести команду для записи файла и выхода из редактора wq.

  2. После создания добавить сервис в автозапуск и запустить его:
    sudo systemctl daemon-reload
    sudo systemctl enable ldapproxy
    sudo systemctl start ldapproxy

Настройка на стороне административной консоли Avanpost FAM

В административной консоли FAM следует создать приложение с типом Agent и через группы предоставить доступ к данному приложению:

Настройка целевой системы (на примере "Континент АП")

Если компонент FAM LDAP Proxy запущен на другом хосте, отличном от контроллера домена, в целевой системе необходимо изменить порт и IP-адрес на значения, указанные в параметре "listen" конфигурационного файла (Рисунок).

Местоположение настройки IP-адреса и порта зависит от конкретной целевой системы

Приложение A. Спецификация конфигурационного файла config.toml

Конфигурационный файл доступен в архиве с FAM LDAP Proxy. Подробное описание параметров приведено в таблице.

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

[server]
listen = "10.10.181.97:12389"
#listen_enabled = false
#listen_tls = ":636"
#listen_tls_enabled = false
#tls_config = "default"
#shutdown_timeout = "30s"

[log]
level = "debug"
output = ["stdout", "log.txt"]

[backend]
endpoint = "10.10.181.97:389"
#tls_enabled = true
#tls_config = "default"

[auth]
endpoint = "10.10.181.96:9007"
app_id = "LDAP"
dn_search_attribute = "dn"
upn_search_attribute = "userPrincipalName"
empty_domain_override = "avt"
skip_service_accounts = ["admin@doska.local"]
#allow_anonymous = true
#disabled = true
request_timeout = "30s"
#tls_enabled = true
#tls_config = "default"

#[tls.default]
#key_file=""
#cert_file=""
#insecure_skip_verify=true
#server_name_override=""

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

ПараметрОписаниеПример устанавливаемых значений

[server]

listen

Задает IP-адрес сетевого адаптера, на котором прослушиваются входящие запросы от целевых систем, использующих LDAP

"10.10.181.97:389"
listen_enabledНастройка прослушивания порта (выключение/выключение) из параметра "listen"true/false
listen_tls

Порт для SSL/TLS-шифрованного прослушивания

":636"
listen_tls_enabled

Включение прослушивания порта из параметра "listen_tls"

true/false
tls_config

Имя конфигурации TLS для использования определенных в ней настроек (указано в последней секции "[tls.default]")

"default"

shutdown_timeout

Определяет время, в течение которого сервер должен завершить все текущие запросы перед принудительной остановкой

"30s"
[log]
level

Уровень логирования (debug, info, error и др.)

"debug"
output

Места вывода логов (stdout, файл)

["stdout", "log.txt"]

[backend]

endpointАдрес контроллера домена
"10.10.181.97:389"
tls_enabledВключение/отключение TLS-шифрованияtrue/false
tls_config

[auth]

endpointЗадает адрес сервера FAM
"10.10.181.96:9007"
app_id

Название Agent-приложения, созданного в административной консоли Avanpost FAM Server

"LDAP"
dn_search_attribute

Указывает, какой атрибут в LDAP-запросе будет использоваться для поиска пользовательской информации по DN.

DN – уникальное имя, которое идентифицирует узел в дереве домена Active Directory (AD)

"dn"
upn_search_attribute

Указывает, какой атрибут в LDAP-запросе будет использоваться для поиска пользовательской информации по UPN.

UPN –  уникальное имя пользователя в AD, которое представляет собой комбинацию логина пользователя и домена

"userPrincipalName"
empty_domain_override

Переопределение домена по умолчанию

"avt"
skip_service_accounts

Список сервисных аккаунтов, для которых отключена двухфакторная авторизация.

Для указанных аккаунтов запрос приходит на указанный порт и перебрасывается в домен без обращения к FAM

["admin@doska.local"]
allow_anonymous

Разрешение анонимной авторизации

true/false
disabled

Отключает функциональность, связанную с аутентификацией, предоставляемую компонентом.

В этом случае (true) компонент LDAP Proxy не будет выполнять процесс аутентификации для запросов клиентов, и сервер LDAP будет обрабатывать запросы без использования LDAP Proxy.

true/false
request_timeout

Таймаут запроса к серверу FAM

"30s"
tls_enabled

Включение SSL/TLS для подключения к серверу FAM

true/false
tls_config

Имя конфигурации TLS для использования определенных в ней настроек (указано в последней секции "[tls.default]")

"default"
[tls.default]
key_file

Путь к файлу с закрытым ключом


cert_file

Путь к файлу с сертификатом


insecure_skip_verify

Отключение проверки подлинности сервера


server_name_override

Замена имени сервера при проверке подлинности


Обсуждение