Настройка поддержки протокола MS-CHAP v2
Единый образ контейнера FRA поддерживает протоколы PAP и MS‑CHAP v2. Для настройки интеграции по протоколу RADIUS с использованием схемы аутентификации MS‑CHAP v2 необходимо настроить интеграцию с внешним сервером RADIUS. В качестве такого сервера может выступать Microsoft NPS или FreeRADIUS. При этом внешний сервер RADIUS должен иметь возможность аутентифицироваться в контроллере домена. В качестве аутентификаторов для второго фактора могут использоваться программный токен в режиме PUSH или токен Telegram в режиме PUSH.
Агент FRA будет выступать в роли RADIUS-прокси. Поэтому сначала нужно настроить внешний сервер RADIUS (Microsoft NPS или FreeRADIUS), а затем — подключение FRA к серверу аутентификации SAS.
Настройка Microsoft NPS
Необходимо подготовить хост с предустановленной операционной системой Microsoft Windows Server и ввести этот хост в домен.
Для этого:
Установите роль Microsoft NPS на хост.
В оснастке NPS в узле RADIUS Clients and Servers → RADIUS clients добавьте IP-адрес FRA и общий с ним секрет.
В узле Policies → Connection Request Policy на вкладке Overview создайте новую политику, отметив флажок Policy enabled и не выбирая Type of network access server.
На вкладке Conditions этой же политики укажите, если нужно, ограничения по дням и времени доступа.
На вкладке Settings в пункте Authentication выберите Authenticate requests on this server.
В узле Policies → Network Policies на вкладке Overview создайте новую политику, отметив флажок Policy enabled, выбрав Grant access и не выбирая Type of network access server.
На вкладке Conditions этой же политики укажите, если нужно, ограничения по дням и времени доступа.
На вкладке Settings в пункте Authentication Methods выберите Microsoft Encrypted Authentication version 2 (MS‑CHAP‑v2) и Unencrypted authentication (PAP, SPAP).
Перезапустите NPS, выполнив команду:
net stop ias && net start ias
Настройка FreeRADIUS
Чтобы настроить FreeRADIUS в качестве внешнего сервера RADIUS для агента FRA, выполните следующие операции (пример приведён для операционной системы Ubuntu):
Установите на хосте пакеты
freeradius,winbind,smbd,nmbd, выполнив команду:sudo apt install freeradius samba winbind libpam-winbind libnss-winbind krb5-user -yВ файл
/etc/resolv.confдобавьте адрес DNS-сервера для разрешения внутренних имён.В файл
/etc/hostsдобавьте адрес контроллера домена.Выполните следующие команды. Если каталога
winbindd_privilegedнет, создайте его.sudo chown root:winbindd_priv /var/lib/samba/winbindd_privileged
sudo chmod 750 /var/lib/samba/winbindd_privileged
sudo usermod -aG winbindd_priv freeradОтредактируйте файл
/etc/samba/smb.conf, указав параметры вашего домена.[global]
workgroup = INDEED # Имя домена
realm = INDEED.LOCAL # Домен
security = ADS
encrypt passwords = yes
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind nss info = rfc2307Отредактируйте файл
/etc/krb5.conf.[libdefaults]
default_realm = INDEED.LOCAL # Домен
dns_lookup_kdc = true
dns_lookup_realm = false
[realms]
INDEED.LOCAL = { # Домен
kdc = dc.indeed.local # FQDN домена
admin_server = dc.indeed.local # FQDN домена
}
[domain_realm]
.mfa-soft.local = INDEED.LOCAL # FQDN домена
mfa-soft.local = INDEED.LOCAL # FQDN доменаПроверьте настройку Kerberos.
sudo kinit Administrator@INDEED.LOCALПрисоедините хост к домену.
sudo net ads join -U Administrator --no-dns-updatesПерезапустите сервисы.
sudo systemctl restart smbd nmbd winbindОтредактируйте файл
/etc/freeradius/3.0/mods-enabled/mschapсервера FreeRADIUS.mschap {
use_mppe = yes
require_encryption = yes
require_strong = yes
with_ntdomain_hack = yes
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key \
--username=%{mschap:User-Name} \
--domain=INDEED \ # указать имя домена
--challenge=%{mschap:Challenge} \
--nt-response=%{mschap:NT-Response}"
}Перезапустите сервис FreeRADIUS.
sudo systemctl restart freeradiusПроверьте NTLM-аутентификацию.
sudo ntlm_auth --username=testuser --domain=INDEED --password=$Password1
Настройка подключения FRA к серверу аутентификации
Для этого:
В файле
proxy.confукажите значения для параметров подключения к внешнему серверу RADIUS. Остальные параметры оставьте без изменений.home_server external_radius_1 {
type = auth
ipaddr = 10.0.0.22
port = 1812
secret = $Secret1
}
home_server_pool remote_radius_failover {
type = fail-over
home_server = external_radius_1
}
realm external_radius_pool {
auth_pool = remote_radius_failover
}Добавьте клиентов RADIUS в файл
clients.conf.Разверните контейнер FRA.
docker run -d --network host --name fra-1.13.180525 --restart always \
-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 # Используйте актуальное имя образа (версия может меняться)Добавьте FRA как узел аутентификации
Включите политику предварительной аутентификации с правилами для запросов от MS‑CHAP v2 клиентов (Агент:
RADIUS, Тип аутентификатора:Мобильный пуш; правило должно идти первым). При этом необходимо включить проброс IP-адресов RADIUS-клиентов.Для учётных записей в домене установите параметр
Dial-in → Network Access Permissionв значениеAllow access.