Перейти к основному содержимому

Установка и конфигурирование

Для интеграции целевых ресурсов с сервисом MFA компании «Индид Облако» по протоколу RADIUS необходим шлюз, состоящий из сервера FreeRADIUS и агента FreeRADIUS (агента FRA).

Шлюз FRA поставляется в виде готового образа контейнера Docker.

Чтобы установить и настроить, на каждой из машин с шлюзами выполните следующее:

Установка и конфигурирование среды Docker​

Перед развертыванием агента на машину установите Docker Engine, запустите и добавьте машину в автозагрузку. Может потребоваться предварительно подключить и обновить репозитории, детальные инструкции по подключению и обновлению репозиториев с Docker Engine для разных дистрибутивов Linux на веб-сайте вендора.

yum install docker-ce docker-ce-cli (для RedHat-совместимых дистрибутивов)
или
apt install -y docker.io (для Debian-совместимых дистрибутивов)

systemctl start docker

systemctl enable --now docker

Подключение к серверу аутентификации​

Чтобы задать параметры подключения шлюза RADIUS к серверу аутентификации:

  1. Скопируйте файл config.ini из дистрибутива FRA в произвольный каталог.

  2. В этом файле в разделе [connection] впишите в строку sas_address_1 имя или IP-адрес и порт (если он отличается от 443) сервера аутентификации:

    sas_address_1= mfa.indeed-cloud.ru
  3. Чтобы агент FRA автоматически удалял префикс домена при запросе на сервер аутентификации, укажите:

    strip_netbios_prefix= yes
  4. Чтобы агент FRA автоматически удалял суффикс UPN записи при запросе на сервер аутентификации, укажите:

    strip_realm_from_upn= yes
  5. Чтобы агент FRA включал отладочный режим (данные будут сохраняться внутри докера в файле /var/log/freeradius/radius.log), укажите:

    debug= yes
  6. Чтобы включить поддержку HTTP/HTTPS прокси-сервера при веб запросах, укажите:

    proxy= yes

    В случае использования веб-прокси при создании контейнера необходимо указать параметры прокси-сервера через переменные окружения:

docker run -d --network host \
--name fra-1.13.010925-proxy \
-v `pwd`/config.ini:/etc/fra/config.ini \
-v `pwd`/clients.conf:/etc/freeradius/3.0/clients.conf \
-e https_proxy="http://10.0.0.22:3128" \
-e http_proxy="http://10.0.0.22:3128" \
-t fra:1.13.010925 # Используйте актуальное имя образа (версия может меняться)

Настройка агента в случае недоступности сервиса MFA​

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

Для этого в файле конфигурации config.ini выставьте следующие параметры в разделе [bypass]:

#Enable bypass RADIUS request - default value is no (standard RADIUS request)
bypass_request= yes

Для того, чтобы агент FRA по умолчанию возвращал значение Access-Accept (успешно), выставьте параметру bypass_response_success значение yes. Для того, чтобы агент FRA по умолчанию возвращал значение Access-Reject (неуспешно), выставьте параметру bypass_response_success значение no.

[bypass]
#Enable bypass RADIUS request - default value is no (standard RADIUS request)
bypass_request= yes
#Default response for bypass request - default value is no (Access-Reject)
bypass_response_success= no

Настройка правил предварительной аутентификации​

Агент FRA позволяет настроить правила предварительной аутентификации на самом агенте.

Для настройки правил предварительной аутентификации включите опцию предварительной аутентификации в разделе [preauth]:

enable= yes

Далее в параметре rule[] создайте правила предварительной аутентификации. Значения в квадратных скобках должны разделяться точкой с запятой.

Общий шаблон правила имеет вид:

rule[]=[список IP-адресов через запятую или пусто];[список LDAP-групп через запятую или пусто];[логическая операция для правил LDAP- групп или пусто];[используемый тип токена или пусто];[тип операции]

Список логических операций:

  • 0 — логическое ИЛИ: пользователь принадлежит хотя бы одной из групп;
  • 1 — логическое И: пользователь принадлежит всем группам.

Список доступных значений параметра токенов:

  • h — аппаратный токен,
  • g — программный токен,
  • s — SMS-токен,
  • e — почтовый токен,
  • t — Telegram-токен,
  • p — программный токен в режиме push,
  • пусто — любой токен.

Список доступных операций:

  • 0 — проброс запроса в сервис MFA;
  • 1 – только LDAP-аутентификация;
  • 2 – в случае успешной LDAP-аутентификации отправлять запрос в сервис MFA;
  • 3 – в случае неуспешной LDAP-аутентификации отправлять запрос в сервис MFA;
  • 4 — всегда возвращать «Успешная аутентификация» (Access-Accept);
  • 5 — всегда возвращать «Неспешная аутентификация» (Access-Reject).

Примеры правил:

rule[]=;;;;5 — агент всегда возвращает Access-Reject.
rule[]=10.0.0.100;VPN1,VPN2,VPN3;0;t;2 — в случае запроса с хоста с IP-адресом 10.0.0.100 под учетной записью, входящей в хотя бы одну из групп, необходимо выполнить LDAP-аутентификацию и в случае успеха выполнить аутентификацию в сервисе MFA через Telegram.
rule[]=10.0.0.100,10.0.0.101;Admins,VPN;1;;2 — в случае запроса с хостов с IP-адресами 10.0.0.100 или 10.0.0.101 под учетной записью, входящей в группу Admins и VPN, необходимо выполнить LDAP-аутентификацию и в случае успеха выполнить аутентификацию в сервисе MFA одним из токенов в формате Challenge-Response.
rule[]=10.0.0.100;NO_2FA_USERS;;;1 — в случае запроса с хоста с IP-адресом 10.0.0.100 под учетной записью, входящей в группу NO_2FA, выполнить только LDAP-аутентификацию и вернуть результат.

Настройка агента в режиме миграции​

Агент FRA позволяет осуществить плавную миграцию с одного решения по двухфакторной аутентификации на сервис MFA компании «Индид Облако».

Общий принцип работы режима миграции состоит в следующем:

  1. Создается запрос на аутентификацию с агента FRA на сервер аутентификации сервиса MFA.
  2. В случае если ответ содержит информацию, что пользователь найден, но у него нет активного токена, и в агенте включен режим миграции, то запрос на аутентификацию будет перенаправлен на RADIUS-сервер стороннего решения по аутентификации.
  3. Результат аутентификации на стороннем сервере аутентификации будет отправлен через агент FRA на сторону клиента, выполнившего запрос.

Это необязательная настройка.

Включение режима миграции​

Чтобы шлюз мог работать в режиме миграции, перенаправляя к стороннему решению запросы на аутентификацию от пользователей, у которых нет аутентификаторов:

  1. В файле config.ini в разделе [radius_migration_mode] включите режим миграции:

    enable= yes
  2. Задайте IP-адреса всех развернутых серверов RADIUS стороннего решения:

    radius_host_1= 10.0.0.20
    radius_host_2= 10.0.0.21
  3. Задайте порты всех развернутых серверов RADIUS стороннего решения:

    radius_port_1= 1812
    radius_port_2= 1812
  4. Задайте секрет всех развернутых серверов RADIUS стороннего решения:

    shared_secret_1=$Secret1
    shared_secret_2=$Secret2
  5. Если в стороннем решении развернуты дополнительные серверы RADIUS, установите тайм-аут переключения на другой сервер, если первый станет недоступен:

    timeout_radius= 5
  6. Если в стороннем решении развернуты дополнительные серверы RADIUS, установите тайм-аут возврата на первый сервер, когда он снова станет доступен:

    timeout_to_restore_to_first_radius= 180

Подключение клиентов RADIUS​

Чтобы шлюз RADIUS мог принимать запросы от целевых ресурсов:

  1. Скопируйте в произвольный каталог на машине файл clients.conf из дистрибутива FRA.
  2. Добавьте в этот файл группу строк:
    client gateway{
    ipaddr= 10.0.0.10
    secret= Secret1
    }
    где:
  • client gateway — условное имя целевого ресурса,
  • ipaddr — IP-адрес целевого ресурса,
  • secret — общий для клиента и сервера секрет RADIUS.
Примечание

Если между целевым ресурсом и шлюзом RADIUS используется трансляция сетевых адресов (NAT), то в качестве IP-адреса клиента нужно указывать интерфейс маршрутизатора NAT, через который приходят запросы на шлюз RADIUS.

Установка корневого сертификата веб-серверов​

Чтобы агент FRA мог проверять подлинность LDAP-серверов, установите в контейнер агента корневой сертификат удостоверяющего центра в локальное хранилище сертификатов.

Это необязательная настройка.

Для этого при создании Docker-контейнера сделайте сопоставление:

-v/home/fra/certs/R3.crt:/usr/local/share/ca-certificates/R3.crt

где R3.crt – корневой сертификат.

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

docker run -d --network host --name fra --restart always \
-e TZ=Europe/Moscow \
-v /opt/indeed/fra/config.ini:/etc/fra/config.ini \
-v /opt/indeed/fra/clients.conf:/etc/freeradius/3.0/clients.conf \
[-v /opt/indeed/fra/R3.crt:/usr/local/share/ca-certificates/R3.crt]*
[-v /opt/indeed/fra/radiusd.conf]:/etc/freeradius/3.0/radiusd.conf]*
-t fra:1.13.110725

Чтобы проверить, что корневой сертификат находится в хранилище:

  1. Получите доступ к содержимому Docker-контейнера:

    docker exec -it <ID контейнера> bash
  2. Далее внутри контейнера выполните:

    awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)}; {print | cmd}' < /etc/ssl/certs/ca-certificates.crt

Для использования локального хранилища сертификатов задайте параметр:

verify_ssl= yes

Для отключения проверки подлинности SSL-сертификата задайте параметр:

verify_ssl= no

Развертывание образа, создание и запуск контейнера RADIUS​

Чтобы развернуть образ и запустить контейнер:

  1. Запустите сервис Docker:

    # systemctl start docker
  2. Скопируйте образ на машину и разверните его:

    # docker load -i fra-1.13.110725.tar.gz
  1. Создайте и запустите контейнер, выбрав ему имя и указав пути к файлам конфигурации и, если он используется, к сертификату:
    docker run -d --network host --name fra --restart always \
    -e TZ=Europe/Moscow \
    -v /opt/indeed/fra/config.ini:/etc/fra/config.ini \
    -v /opt/indeed/fra/clients.conf:/etc/freeradius/3.0/clients.conf \
    -v /opt/indeed/fra/proxy.conf:/etc/freeradius/3.0/proxy.conf \
    -t fra:1.13.180525 # Используйте актуальное имя образа (версия может меняться)