Установка и конфигурирование
Для интеграции целевых ресурсов с сервисом MFA компании «Индид Облако» по протоколу RADIUS необходим шлюз, состоящий из сервера FreeRADIUS и агента FreeRADIUS (агента FRA).
Шлюз FRA поставляется в виде готового образа контейнера Docker.
Чтобы установить и настроить, на каждой из машин с шлюзами выполните следующее:
- установите и сконфигурируйте Docker Engine;
- скопируйте файлы конфигурации на машину, где будет запускаться контейнер с агентом FRA, и задайте параметры подключения к серверу аутентификации;
- настройте подключение клиентов RADIUS;
- включите режим миграции (это необязательная настройка);
- установите сертификаты сервера аутентификации (это необязательная настройка);
- создайте и запустите контейнер с агентом.
Установка и конфигурирование среды 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 к серверу аутентификации:
Скопируйте файл config.ini из дистрибутива FRA в произвольный каталог.
В этом файле в разделе
[connection]впишите в строкуsas_address_1имя или IP-адрес и порт (если он отличается от 443) сервера аутентификации:sas_address_1= mfa.indeed-cloud.ruЧтобы агент FRA автоматически удалял префикс домена при запросе на сервер аутентификации, укажите:
strip_netbios_prefix= yesЧтобы агент FRA автоматически удалял суффикс UPN записи при запросе на сервер аутентификации, укажите:
strip_realm_from_upn= yesЧтобы агент 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 компании «Индид Облако».
Общий принцип работы режима миграции состоит в следующем:
- Создается запрос на аутентификацию с агента FRA на сервер аутентификации сервиса MFA.
- В случае если ответ содержит информацию, что пользователь найден, но у него нет активного токена, и в агенте включен режим миграции, то запрос на аутентификацию будет перенаправлен на RADIUS-сервер стороннего решения по аутентификации.
- Результат аутентификации на стороннем сервере аутентификации будет отправлен через агент FRA на сторону клиента, выполнившего запрос.
Это необязательная настройка.
Включение режима миграции
Чтобы шлюз мог работать в режиме миграции, перенаправляя к стороннему решению запросы на аутентификацию от пользователей, у которых нет аутентификаторов:
В файле config.ini в разделе
[radius_migration_mode]включите режим миграции:enable= yesЗадайте IP-адреса всех развернутых серверов RADIUS стороннего решения:
radius_host_1= 10.0.0.20
radius_host_2= 10.0.0.21Задайте порты всех развернутых серверов RADIUS стороннего решения:
radius_port_1= 1812
radius_port_2= 1812Задайте секрет всех развернутых серверов RADIUS стороннего решения:
shared_secret_1=$Secret1
shared_secret_2=$Secret2Если в стороннем решении развернуты дополнительные серверы RADIUS, установите тайм-аут переключения на другой сервер, если первый станет недоступен:
timeout_radius= 5Если в стороннем решении развернуты дополнительные серверы RADIUS, установите тайм-аут возврата на первый сервер, когда он снова станет доступен:
timeout_to_restore_to_first_radius= 180
Подключение клиентов RADIUS
Чтобы шлюз RADIUS мог принимать запросы от целевых ресурсов:
- Скопируйте в произвольный каталог на машине файл clients.conf из дистрибутива FRA.
- Добавьте в этот файл группу строк:где:
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
Чтобы проверить, что корневой сертификат находится в хранилище:
Получите доступ к содержимому Docker-контейнера:
docker exec -it <ID контейнера> bashДалее внутри контейнера выполните:
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
Чтобы развернуть образ и запустить контейнер:
Запустите сервис Docker:
# systemctl start dockerСкопируйте образ на машину и разверните его:
# docker load -i fra-1.13.110725.tar.gz
- Создайте и запустите контейнер, выбрав ему имя и указав пути к файлам конфигурации и, если он используется, к сертификату:
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