[ ] [ Общие сведения ] [ Шаги по установке ] [ Развёртывание файлов дистрибутива из архива ] [ Регистрация службы в systemd ] [ Настройка на стороне административной консоли Avanpost FAM ] [ Настройка целевой системы (на примере "Континент АП") ] [ Приложение A. Спецификация конфигурационного файла config.toml ]
Общие сведения
Компонент 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.
Шаги по установке
Развёртывание файлов дистрибутива из архива
Для развёртывания файлов дистрибутива из архива необходимо:
- Создать служебного пользователя ОС
idp
(параметр-m
необходим для создания домашней директории):sudo useradd -m idp sudo passwd idp
- После выполнения команд из п.1 необходимо придумать и ввести пароль, а также подтверждение пароля. Если пароль слишком короткий или простой, то будет выдано соответствующее оповещение, после которого нужно повторить ввод пароля, соблюдая рекомендации.
- Создать директорию
/opt/ldapproxy, присвоить права на директорию пользователю idp:
sudo mkdir /opt/ldapproxy sudo chown -R idp:idp /opt/ldapproxy
- Переключиться на пользователя idp и перейти в директорию
opt/ldapproxy
sudo su idp cd /opt/ldapproxy
- Скачать архив с FAM LDAP Proxy, сохранить его.
- В зависимости от расположения файла с архивом дистрибутива FAM LDAP Proxy скопировать его из исходной директории (заменить в команде
/source-path
на правильный путь с расположением архива иAvanpost.*.tar.gz на корректное имя архива
) в целевую директорию:cp /source-path/Avanpost.*.tar.gz -t /opt/ldapproxy
- Распаковать файлы дистрибутива из архива, находясь в той же директории (заменить в команде
Avanpost.*.tar.gz на корректное имя архива
).tar -xvzf Avanpost.*.tar.gz
После успешной распаковки, получив сообщение об этом, удалить архив дистрибутива (заменить в команде Avanpost.*.tar.gz на корректное имя архива).
rm Avanpost.*.tar.gz
Регистрация службы в systemd
- Создать конфигурационный файл сервиса на основе примера. При желании можно использовать любой текстовый редактор, доступный в системе, в данном примере работа ведется на основе использования редактора 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.
- После создания добавить сервис в автозапуск и запустить его:
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 | Замена имени сервера при проверке подлинности |