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

Настройка поддержки протокола 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 и ввести этот хост в домен.

Для этого:

  1. Установите роль Microsoft NPS на хост.

  2. В оснастке NPS в узле RADIUS Clients and ServersRADIUS clients добавьте IP-адрес FRA и общий с ним секрет.

  3. В узле PoliciesConnection Request Policy на вкладке Overview создайте новую политику, отметив флажок Policy enabled и не выбирая Type of network access server.

  4. На вкладке Conditions этой же политики укажите, если нужно, ограничения по дням и времени доступа.

  5. На вкладке Settings в пункте Authentication выберите Authenticate requests on this server.

  6. В узле PoliciesNetwork Policies на вкладке Overview создайте новую политику, отметив флажок Policy enabled, выбрав Grant access и не выбирая Type of network access server.

  7. На вкладке Conditions этой же политики укажите, если нужно, ограничения по дням и времени доступа.

  8. На вкладке Settings в пункте Authentication Methods выберите Microsoft Encrypted Authentication version 2 (MS‑CHAP‑v2) и Unencrypted authentication (PAP, SPAP).

  9. Перезапустите NPS, выполнив команду:

    net stop ias && net start ias

Настройка FreeRADIUS

Чтобы настроить FreeRADIUS в качестве внешнего сервера RADIUS для агента FRA, выполните следующие операции (пример приведён для операционной системы Ubuntu):

  1. Установите на хосте пакеты freeradius, winbind, smbd, nmbd, выполнив команду:

    sudo apt install freeradius samba winbind libpam-winbind libnss-winbind krb5-user -y
  2. В файл /etc/resolv.conf добавьте адрес DNS-сервера для разрешения внутренних имён.

  3. В файл /etc/hosts добавьте адрес контроллера домена.

  4. Выполните следующие команды. Если каталога 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
  5. Отредактируйте файл /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
  6. Отредактируйте файл /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 домена
  7. Проверьте настройку Kerberos.

    sudo kinit Administrator@INDEED.LOCAL
  8. Присоедините хост к домену.

    sudo net ads join -U Administrator --no-dns-updates
  9. Перезапустите сервисы.

    sudo systemctl restart smbd nmbd winbind
  10. Отредактируйте файл /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}"
    }
  11. Перезапустите сервис FreeRADIUS.

    sudo systemctl restart freeradius
  12. Проверьте NTLM-аутентификацию.

    sudo ntlm_auth --username=testuser --domain=INDEED --password=$Password1

Настройка подключения FRA к серверу аутентификации

Для этого:

  1. В файле 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
    }
  2. Добавьте клиентов RADIUS в файл clients.conf.

  3. Разверните контейнер 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 # Используйте актуальное имя образа (версия может меняться)
  4. Добавьте FRA как узел аутентификации

  5. Включите политику предварительной аутентификации с правилами для запросов от MS‑CHAP v2 клиентов (Агент: RADIUS, Тип аутентификатора: Мобильный пуш; правило должно идти первым). При этом необходимо включить проброс IP-адресов RADIUS-клиентов.

  6. Для учётных записей в домене установите параметр Dial-in → Network Access Permission в значение Allow access.