[ ] [ Общие сведения ] [ Порядок установки ] [ Развёртывание файлов дистрибутива из архива ] [ Регистрация службы в systemd ] [ Настройка на стороне административной консоли Avanpost FAM Server ] [ Настройка целевой системы (на примере "Континент АП") ] [ Приложение A. Спецификация конфигурационного файла config.toml ] [ Приложение Б. Спецификация конфигурационного файла системы управления службами ] [ Приложение В. Экспорт сертификата LDAPS из FreeIPA ]
Общие сведения
Компонент Avanpost FAM LDAP Proxy позволяет обеспечить решение задачи двухфакторной аутентификации для унаследованных приложений с поддержкой аутентификации по паролю (LDAP BIND) через LDAP-каталог (Microsoft Active Directory, FreeIPA и т.д.). Данная инструкция описывает порядок установки и настройки компонента Avanpost FAM LDAP Proxy в ОС Linux из tar.gz-архива.
Сценарий аутентификации при помощи компонента LDAP Proxy осуществляется следующим образом:
- Пользователь проходит аутентификацию путём ввода логина и пароля в интерфейс аутентификации целевого приложения;
- Пользователю проходит аутентификацию по второй фактору через один из выбранных администратором методов (push-уведомление в Avanpost Authenticator или push-уведомление в Telegram);
- После успешной проверки второго фактора осуществляется проверка логина и пароля в LDAP-каталоге, подключенном к компоненту LDAP Proxy;
- После успешной проверки пароля в LDAP-каталоге ответ возвращается целевому приложению, завершая процесс аутентификации.
До выполнения шагов, указанных в инструкции, требуется обеспечить:
- Наличие и доступность gRPC-порта (по умолчанию TCP 9007) развернутого компонента Avanpost FAM Server;
- Наличие и доступность LDAP-порта каталога/домена (по умолчанию TCP 389 для LDAP и TCP 636 для LDAPS), с которым будет взаимодействовать компонент Avanpost FAM LDAP Proxy;
- Наличие в ОС программы
sudo
(программа выполнения команд от имени суперпользователя); - Корректную настройку метода аутентификации по запросам/push-запросам в мобильном приложении Avanpost Authenticator (настройка выполняется согласно инструкции Настройка метода Avanpost Authenticator) и/или метода аутентификации по запросам в мессенджер Telegram (настройка выполняется согласно инструкции Настройка метода Telegram).
Порядок установки
Установка компонента осуществляется последовательно в три этапа:
- Развертывание файлов дистрибутива из tar.gz-архива.
- Регистрация службы в systemd.
- Создание приложения на стороне Avanpost FAM Server.
Развёртывание файлов дистрибутива из архива
Для развёртывания файлов дистрибутива из архива необходимо:
- Скачать актуальную версию компонента Avanpost FAM LDAP Proxy.
- Создать служебного пользователя ОС
idp
(параметр-m
необходим для создания домашней директории) при помощи команд:sudo useradd -m idp sudo passwd idp
- Ввести пароль и подтвердить его (если введенный пароль окажется слишком коротким и/или простым, будет выдано соответствующее оповещение, после которого нужно повторить ввод пароля, соблюдая рекомендации).
- Создать директорию /opt/ldapproxy, использую команду:
sudo mkdir /opt/ldapproxy
- Присвоить права на директорию пользователю idp, использую команду:
sudo chown -R idp:idp /opt/ldapproxy
- Переключиться на пользователя idp и перейти в директорию
opt/ldapproxy,
используя команды:
sudo su idp cd /opt/ldapproxy
- В зависимости от расположения файла с архивом дистрибутива FAM LDAP Proxy скопировать его из исходной директории в целевую директорию
opt/ldapproxy
(заменить в нижеприведенной команде/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
Для корректного запуска, контроля и управления компонентом FAM LDAP Proxy требуется зарегистрировать его в системе инициализации и управления службами systemd:
- Создать конфигурационный файл сервиса на основе примера в приложении Б (в данном примере используется текстовый редактор vi, однако допускается использовать любой текстовый редактор, доступный в системе), используя команду.
sudo vi /etc/systemd/system/ldapproxy.service
Примечание
Перечень команд в текстовом редакторе vi:
:i
— перейти в режим ввода из командного режима в текстовом редакторе.:w
— сохранить файл.:q
— выйти из редактора (с сохранением).:q!
— выйти из редактора без сохранения.:wq
— сохранить файл и выйти.
Выход из режима ввода в командный режим осуществляется клавишей Esc.
- Перезагрузить конфигурационные файлы юнитов systemd при помощи команды:
sudo systemctl daemon-reload
- Включить автозапуск службы LDAP Proxy при помощи команды:
sudo systemctl enable ldapproxy
- Запустить службу LDAP Proxy при помощи команды:
sudo systemctl start ldapproxy
Настройка на стороне административной консоли Avanpost FAM Server
Настройка компонента на стороне административной консоли Avanpost FAM проводится следующим образом:
- Открыть административную консоль Avanpost FAM Server и зайти во вкладку создания приложения, нажав кнопку "Добавить приложение" режима "Приложения".
- На этапе "Основные настройки" требуется ввести наименование и выбрать тип LDAP Proxy (более подробно процесс создания и управления приложениями описан в разделах Управление приложениями и Управление LDAP Proxy-приложениями).
- На этапе "Настройки аутентификации" выбрать факторы аутентификации приложения, установив переключатели напротив тех или иных факторов (более подробно описано в Шаг.2 Настройки аутентификации для LDAP Proxy-приложений). При этом необходимо обязательно включить использование фактора Password на первом шаге аутентификации.
- На этапе "Завершение" следует сохранить приложение, делая его активным сразу после создания (более подробно описано в Шаг 3. Завершение для LDAP Proxy-приложений).
- Создать группу (если таковая отсутствует), пользователи которой будет аутентифицироваться с использованием компонента. Для этого необходимо нажать кнопку "Добавить группу" в режиме "Группы" и в открывшейся вкладке ввести запрашиваемые параметры (более подробно в разделе Добавление новых групп).
- Добавить в группу пользователей, которые будут аутентифицироваться в настроенных приложениях (более подробно о настройке интеграции с внешними LDAP-источниками пользователей описано в разделе Управление LDAP-источниками).
- Предоставить группе доступ к созданному приложению: в профиле группы зайти во вкладку "Приложения", найти созданное LDAP Proxy-приложение и перевести переключать напротив него в положение (более подробно функционале описан в Управление группами).
Настройка целевой системы (на примере "Континент АП")
Если компонент FAM LDAP Proxy запущен на другом хосте, отличном от контроллера домена, в целевой системе необходимо изменить порт и IP-адрес на значения, указанные в параметре "listen" конфигурационного файла (Рисунок).
Местоположение настройки IP-адреса и порта зависит от конкретной целевой системы
При настройке для FreeIPA следует использовать DN Bind в качестве параметра аутентификации.
Приложение A. Спецификация конфигурационного файла config.toml
Конфигурационный файл доступен в архиве с FAM LDAP Proxy. Подробное описание параметров приведено в таблице.
Пример конфигурационного файла:
[server] listen = "172.24.38.14:12636" listen_enabled = true start_tls_enabled = true debug = true retry_count = 3 [log] level = "debug" output = ["stdout"] [backend] endpoint = "hq-dc02.rugrid.ru:389" start_tls_enabled = true [auth] endpoint = "127.0.0.1:9007" app_id = "Continent" dn_search_attribute = "dn" upn_search_attribute = "userPrincipalName" empty_domain_override = "rugrid" skip_service_accounts = ["HQ_svc_LDAP_AUTH_FAM@rugrid.ru"] request_timeout = "10s" tls_enabled = true tls_config = "fam" #[tls.default] #key_file="" #cert_file="" #insecure_skip_verify=true #server_name_override="" [tls.backend] key_file="develop-key-client.pem" cert_file="develop-cert-client.pem" #client_session_cache_enabled = true #insecure_skip_verify=true #server_name_override="" [tls.fam] key_file="/opt/ldapproxy-rugrid/ssl/key.pem" cert_file="/opt/ldapproxy-rugrid/ssl/cert.pem" insecure_skip_verify=true [profile] enabled = true listen = ":6060" dump_enabled = true dump_interval = "30s" dump_output = "./profile_data"
Спецификация параметров конфигурационного файла:
Параметр | Описание | Пример устанавливаемых значений |
---|---|---|
[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 | Ключ конфигурации TLS для использования определенных в ней настроек: указывает как настройки TLS будут применены (например, при значении tls_config = "default" будут применены настройки TLS из секции [tls.default] ). | |
[auth] | ||
endpoint | Задает адрес сервера FAM. | "10.10.181.96:9007" |
app_id | Название LDAP Proxy-приложения. Должно совпадать с наименование приложения, созданного на этапе настройки в административной консоли 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" |
[tls.default] | ||
key_file | Путь к файлу с закрытым ключом. | |
cert_file | Путь к файлу с сертификатом. | |
insecure_skip_verify | Отключение проверки подлинности сервера (при использовании самоподписанного сертификата необходимо установить значение параметра | true/false |
server_name_override | Замена имени сервера при проверке подлинности. | |
[tls.backend] | ||
key_file | Путь к файлу с закрытым ключом. | |
cert_file | Путь к файлу с сертификатом. | |
client_session_cache_enabled | Включение повторного использования защищенных соединений для оптимизации использования вычислительных ресурсов. | true/false |
insecure_skip_verify | Отключение проверки подлинности сервера (при использовании самоподписанного сертификата необходимо установить значение параметра | true/false |
server_name_override | Замена имени сервера при проверке подлинности. | |
[tls.fam] | ||
key_file | Путь к файлу с закрытым ключом. | |
cert_file | Путь к файлу с сертификатом. | |
insecure_skip_verify | Отключение проверки подлинности сервера (при использовании самоподписанного сертификата необходимо установить значение параметра | true/false |
server_name_override | Замена имени сервера при проверке подлинности. | |
[profile] | ||
enabled | Включение профилирования FAM (с возможностью ручной выгрузки профиля, если | true/false |
listen | Порт для прослушивания профиля. | ":6060" |
dump_enabled | Включение автоматического сохранения профиля FAM с заданной периодичностью. | true/false |
dump_interval | Временной интервал, по прошествии которого происходит автоматическое сохранение профиля. | "40s" |
dump_output | Имя и путь к файлу, в котором будут сохраняться профили. | "./profile_data" |
Приложение Б. Спецификация конфигурационного файла системы управления службами
Конфигурационный файл настраивается при регистрации Avanpost FAM LDAP Proxy в системе управления службами Linux-системы systemd.
Пример конфигурационного файла:
[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
Спецификация параметров конфигурационного файла:
Параметр | Описание |
---|---|
[Unit] | |
Description | Наименование службы, используемое для идентификации и маркировки службы. |
[Service] | |
WorkingDirectory | Путь к директории, в которой будет выполняться программа. |
ExecStart | Путь к исполняемому файлу, запускаемому в качестве службы. |
Restart | Поведение системы при завершении работы службы:
|
RestartSec | Интервал в секундах между перезапусками службы. |
SyslogIdentifier | Идентификатор сообщений службы в системном журнале. |
User | Пользователь, от имени которого выполняется служба. |
[Install] | |
WantedBy | Цель (target), для которой используется данный юнит при его активации (multi-user.target — многопользовательский режим без графического интерфейса). |
Приложение В. Экспорт сертификата LDAPS из FreeIPA
Перед экспортом сертификатов следует убедиться, что выполнены условия:
- Убедитесь, что есть необходимые права доступа для выполнения нижеприведенных команд.
- Если используется самоподписанный сертификат, необходимо добавить его в доверенные корневые сертификаты на клиентских машинах.
При использовании FreeIPA необходимости следующим образом:
- Найти сертификат LDAPS в хранилище сертификатов. Чтобы найти хранилище сертификатов допускается использовать команду (заменить
YOUR_REALM_NAME
на фактическое имя домена):certutil -L -d /etc/dirsrv/slapd-YOUR_REALM_NAME
- Экспортировать сертификат в формат .pem при помощи команды (в данной команде сертификат
ldapserver-cert
экспортируется вldapserver-cert.pem
):certutil -L -d /etc/dirsrv/slapd-YOUR_REALM_NAME -n "ldapserver-cert" -a > ldapserver-cert.pem
- Настроить LDAP клиент, используя экспортированный сертификат.