Skip to main content

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

Для интеграции целевых ресурсов с сервисом 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

Настройка агента в случае недоступности сервиса 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/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