FreeRadius, вход не работает при использовании mschap

Вопрос или проблема

Я пытался заставить RADIUS работать с Zentyal, но безуспешно. Я пробовал входить с Android телефона и ПК с Windows 10, но ни один из них не сработал. Присоединение к домену по LAN работает нормально, использование radtest без mschap также работает, проблема здесь, похоже, заключается в mschap. Я искал в интернете несколько часов, но ничего не помогло.

Когда я пытался войти, используя свой телефон или ПК, я использовал точку доступа Ubiquiti, которая, похоже, настроена правильно, запросы обрабатываются FreeRADIUS. AP не является проблемой, так как radtest тоже не работает, но вот как я подключаюсь, используя свой телефон.

Метод EAP: PEAP
Аутентификация фазы 2: Нет
CA Сертификат: Не проверять

Логин: Elia
Пароль: stackoverflow

Radtest работает нормально без использования mschap

root@zenelia:~# radtest -x  Elia stackoverflow localhost 0 secret
Отправка Access-Request с id 211 на 127.0.0.1 порт 1812
    User-Name = "Elia"
    User-Password = "stackoverflow"
    NAS-IP-Address = 127.0.1.1
    NAS-Port = 0
    Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: пакет Access-Accept от хоста 127.0.0.1 порт 1812, id=211, длина=20

Вывод freeradius -X предыдущей команды

rad_recv: пакет Access-Request от хоста 127.0.0.1 порт 52877, id=91, 
длина=74
        User-Name = "Elia"
        User-Password = "stackoverflow"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        Message-Authenticator = 0x0cca55945b14f3caf1f8f1ab3374df4c
# Выполнение секции authorize из файла /etc/freeradius/sites-enabled/default
+группа authorize {
++[preprocess] = ok
++[chap] = noop
++[mschap] = noop
[eap] Нет EAP-Сообщения, не выполняю EAP
++[eap] = noop
[files] пользователи: найдено совпадение DEFAULT на строке 1
++[files] = ok
[ldap] выполнение аутентификации пользователя для Elia
[ldap]  expand: %{Stripped-User-Name} ->
[ldap]  ... расширение второго условия
[ldap]  expand: %{User-Name} -> Elia
[ldap]  expand: (sAMAccountName=%{%{Stripped-User-Name}:-%{User-Name}}) -> (sAMAccountName=Elia)
[ldap]  expand: DC=zentyal-domain,DC=lan -> DC=zentyal-domain,DC=lan
  [ldap] ldap_get_conn: Проверка Id: 0
  [ldap] ldap_get_conn: Получен Id: 0
  [ldap] попытка повторного соединения LDAP
  [ldap] (re)connect to ldap://127.0.0.1, аутентификация 0
  [ldap] соединение как CN=zentyal-radius-zenelia,CN=Users,DC=zentyal-domain,DC=lan/ELEwgGNcoFmjQ@Yj5oJS к ldap://127.0.0.1
  [ldap] ожидание результата соединения ...
  [ldap] Соединение прошло успешно
  [ldap] выполнение поиска в DC=zentyal-domain,DC=lan, с фильтром (sAMAccountName=Elia)
  [ldap] повторное соединение с URL ldap://zentyal-domain.lan/CN=Configuration,DC=zentyal-domain,DC=lan
[ldap] Нет стандартной последовательности входа NMAS
[ldap] поиск элементов проверки в каталоге...
[ldap] поиск ответных элементов в каталоге...
ПРЕДУПРЕЖДЕНИЕ: Не найдено "известного хорошего" пароля в LDAP. Вы уверены, что пользователь настроен правильно?
[ldap] Установка Auth-Type = LDAP
  [ldap] ldap_release_conn: Освобождение Id: 0
++[ldap] = ok
++[expiration] = noop
++[logintime] = noop
[pap] ПРЕДУПРЕЖДЕНИЕ! Не найдено "известного хорошего" пароля для пользователя. Аутентификация может не сработать из-за этого.
++[pap] = noop
+} # группа authorize = ok
Найден Auth-Type = LDAP
# Выполнение группы из файла /etc/freeradius/sites-enabled/default
+группа LDAP {
[ldap] попытка входа "Elia" с паролем "stackoverflow"
[ldap] DN пользователя: CN=Elia Perantoni,CN=Users,DC=zentyal-domain,DC=lan
  [ldap] (re)connect to ldap://127.0.0.1, аутентификация 1
  [ldap] соединение как CN=Elia Perantoni,CN=Users,DC=zentyal-domain,DC=lan/stackoverflow к ldap://127.0.0.1
  [ldap] ожидание результата соединения ...
  [ldap] Соединение прошло успешно
[ldap] пользователь Elia успешно аутентифицирован
++[ldap] = ok
+} # группа LDAP = ok
Вход выполнен: [Elia] (от клиента 127.0.0.1/32 порт 0)
# Выполнение секции post-auth из файла /etc/freeradius/sites-enabled/default
+группа post-auth {
++[exec] = noop
+} # группа post-auth = noop
Отправка Access-Accept с id 91 на 127.0.0.1 порт 52877
Завершен запрос 0.
Переход к следующему запросу
Просыпаюсь через 4.9 секунд.
Очистка запроса 0 ID 91 с отметкой времени +8
Готов к обработке запросов.

Это не работает, обратите внимание, что я использую mschap здесь

root@zenelia:~# radtest -x -t mschap  Elia stackoverflow localhost 0 secret
Отправка Access-Request с id 183 на 127.0.0.1 порт 1812
    User-Name = "Elia"
    NAS-IP-Address = 127.0.1.1
    NAS-Port = 0
    Message-Authenticator = 0x00000000000000000000000000000000
    MS-CHAP-Challenge = 0xf7a1a65b013d5d6b
    MS-CHAP-Response = 0x0001000000000000000000000000000000000000000000000000f024d5b89a20308d6a54dffacb2c4bb6ca20a6deedaebf71
rad_recv: пакет Access-Reject от хоста 127.0.0.1 порт 1812, id=183, длина=38
    MS-CHAP-Error = "\000E=691 R=1"

Вывод freeradius -X при выполнении предыдущей команды

rad_recv: пакет Access-Request от хоста 127.0.0.1 порт 59549, id=63, 
длина=130
        User-Name = "Elia"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 0
        Message-Authenticator = 0xb28350b23c97bdfc9d9bac99504dcd4a
        MS-CHAP-Challenge = 0xadac5f0fddda582f
        MS-CHAP-Response = 0x0001000000000000000000000000000000000000000000000000b4a9b44b238efc1cc4fbaf934c8e8b47fc72ebf43104a100
# Выполнение секции authorize из файла /etc/freeradius/sites-enabled/default
+группа authorize {
++[preprocess] = ok
++[chap] = noop
[mschap] Найдены атрибуты MS-CHAP. Установка 'Auth-Type  = mschap'
++[mschap] = ok
[eap] Нет EAP-Сообщения, не выполняю EAP
++[eap] = noop
[files] пользователи: найдено совпадение DEFAULT на строке 1
++[files] = ok
[ldap] выполнение аутентификации пользователя для Elia
[ldap]  expand: %{Stripped-User-Name} ->
[ldap]  ... расширение второго условия
[ldap]  expand: %{User-Name} -> Elia
[ldap]  expand: (sAMAccountName=%{%{Stripped-User-Name}:-%{User-Name}}) -> (sAMAccountName=Elia)
[ldap]  expand: DC=zentyal-domain,DC=lan -> DC=zentyal-domain,DC=lan
  [ldap] ldap_get_conn: Проверка Id: 0
  [ldap] ldap_get_conn: Получен Id: 0
  [ldap] попытка повторного соединения LDAP
  [ldap] (re)connect to ldap://127.0.0.1, аутентификация 0
  [ldap] соединение как CN=zentyal-radius-zenelia,CN=Users,DC=zentyal-domain,DC=lan/ELEwgGNcoFmjQ@Yj5oJS к ldap://127.0.0.1
  [ldap] ожидание результата соединения ...
  [ldap] Соединение прошло успешно
  [ldap] выполнение поиска в DC=zentyal-domain,DC=lan, с фильтром (sAMAccountName=Elia)
  [ldap] повторное соединение с URL ldap://zentyal-domain.lan/CN=Configuration,DC=zentyal-domain,DC=lan
[ldap] Нет стандартной последовательности входа NMAS
[ldap] поиск элементов проверки в каталоге...
[ldap] поиск ответных элементов в каталоге...
ПРЕДУПРЕЖДЕНИЕ: Не найдено "известного хорошего" пароля в LDAP. Вы уверены, что пользователь настроен правильно?
  [ldap] ldap_release_conn: Освобождение Id: 0
++[ldap] = ok
++[expiration] = noop
++[logintime] = noop
[pap] ПРЕДУПРЕЖДЕНИЕ! Не найдено "известного хорошего" пароля для пользователя. Аутентификация может не сработать из-за этого.
++[pap] = noop
+} # группа authorize = ok
Найден Auth-Type = MSCHAP
# Выполнение группы из файла /etc/freeradius/sites-enabled/default
+группа MS-CHAP {
[mschap] Клиент использует MS-CHAPv1 с NT-Password
[mschap]        expand: %{Stripped-User-Name} ->
[mschap]        ... расширение второго условия
[mschap]        expand: %{User-Name} -> Elia
[mschap]        expand: %{%{User-Name}:-None} -> Elia
[mschap]        expand: --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} -> --username=Elia
[mschap]  mschap1: ad
[mschap]        expand: %{mschap:Challenge} -> adac5f0fddda582f
[mschap]        expand: --challenge=%{%{mschap:Challenge}:-00} -> --challenge=adac5f0fddda582f
[mschap]        expand: %{mschap:NT-Response} -> b4a9b44b238efc1cc4fbaf934c8e8b47fc72ebf43104a100
[mschap]        expand: --nt-response=%{%{mschap:NT-Response}:-00} -> --nt-response=b4a9b44b238efc1cc4fbaf934c8e8b47fc72ebf43104a100
Exec output: Ошибка входа (0xc000006d)
Exec plaintext: Ошибка входа (0xc000006d)
[mschap] Exec: программа вернула: 1
[mschap] Внешний скрипт завершился неудачно.
[mschap] MS-CHAP-Response неверный.
++[mschap] = отклонить
+} # группа MS-CHAP = отклонить
Не удалось аутентифицировать пользователя.
Неправильный логин (mschap: Внешний скрипт говорит: Ошибка входа (0xc000006d)): [Elia] (от клиента 127.0.0.1/32 порт 0)
Используя Post-Auth-Type Reject
# Выполнение группы из файла /etc/freeradius/sites-enabled/default
+группа REJECT {
[attr_filter.access_reject]     expand: %{User-Name} -> Elia
attr_filter: найдено совпадение DEFAULT на строке 11
++[attr_filter.access_reject] = обновлено
+} # группа REJECT = обновлено
Задержка отклонения запроса 0 на 1 секунду
Переход к следующему запросу
Просыпаюсь через 0.9 секунд.
Отправка задержанного отклонения для запроса 0
Отправка Access-Reject с id 63 на 127.0.0.1 порт 59549
        MS-CHAP-Error = "\000E=691 R=1"
Просыпаюсь через 4.9 секунд.
Очистка запроса 0 ID 63 с отметкой времени +9
Готов к обработке запросов.

/var/log/freeradius/radius.log

Пт Июн  9 16:11:52 2017 : Auth: Вход выполнен: [Elia] (от клиента 127.0.0.1/32 порт 1812)

Пт Июн  9 16:11:58 2017 : Auth: Неправильный вход (mschap: Внешний скрипт говорит: Ошибка входа (0xc000006d)): [Elia] (от клиента 127.0.0.1/32 порт 1812)

NTLM, похоже, работает

root@zenelia:~# ntlm_auth --username=Elia --password=stackoverflow
NT_STATUS_OK: Успех (0x0)

Искал в интернете и узнал, что распространенной проблемой, приводящей к той же ошибке MS-CHAP-Error = "\000E=691 R=1", является отсутствие у пользователя freerad прав на чтение /var/lib/samba/winbindd_privileged, но это, похоже, не мой случай.

root@zenelia:/var/lib/samba# ls -l
всего 1404
-rw-------   1 root root          421888 мая 31 17:03 account_policy.tdb
-rw-------   1 root root             696 мая 31 17:03 group_mapping.tdb
drwxr-x---   2 root ntp             4096 июн  9 15:21 ntp_signd
drwxr-xr-x  10 root root            4096 мая 31 17:02 printers
drwxr-xr-x   8 root root            4096 июн  9 16:26 private
-rw-------   1 root root          528384 мая 31 17:03 registry.tdb
-rw-------   1 root root          421888 мая 31 17:03 share_info.tdb
drwxrwx---+  3 root adm             4096 мая 31 17:07 sysvol
drwxrwx--T   2 root sambashare      4096 мая 31 17:03 usershares
 -rw-------   1 root root           32768 июн  9 16:24 winbindd_cache.tdb
drwxr-x---   2 root winbindd_priv   4096 июн  9 15:21 winbindd_privileged

root@zenelia:/var/lib/samba# grep '^winbindd_priv:' /etc/group
winbindd_priv:x:118:freerad

winbindd_privileged принадлежит группе winbindd_priv, в которую входит freerad.

Некоторые пользователи в интернете предлагают добавлять пользователей вручную в /etc/freeradius/users

Elia Cleartext-Password := "stackoverflow", MS-CHAP-Use-NTLM-Auth := No

что работает, но следующее не работает

Elia Cleartext-Password := "stackoverflow"

Теперь я не могу позволить себе добавлять каждого пользователя вручную, мне нужно, чтобы FreeRADIUS собирал пользователей из домена, но я подумал, что стоит упомянуть, что отключение NTLM работает, хотя я не знаю, как отключить его для каждого пользователя.

Существует ли способ заставить FreeRADIUS работать с Zentyal без необходимости добавлять пользователей вручную?

Ударил по этому моменту, выяснил, что некоторые домены AD (или, вероятно, неправильная конфигурация winbindd или какого-то другого слоя NTLM-авторизации) требуют, чтобы хеши создавались только из имени пользователя, а не из UPN или DOMAIN\username. Таким образом, для меня решение заключалось в использовании mschap:User-Name вместо имени пользователя при передаче данных в ntlm_auth.

Полная строка была:

 ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{mschap:User-Name}:-%{%{User-Name}:-None}}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"

Вероятно, это можно сократить, чтобы было меньше вещей для расширения, но это работает для меня.

Ответ или решение

Проблема с аутентификацией FreeRADIUS при использовании MSCHAP: Решение

Введение

Ваша проблема с аутентификацией RADIUS, связанная с использованием метода MSCHAP на FreeRADIUS и Zentyal, может возникать по нескольким причинам, включая неправильную конфигурацию или недостающие атрибуты аутентификации. В этой статье мы рассмотрим основные моменты вашей настройки и предложим решение для успешного подключения клиентских устройств.

Описание проблемы

Вы успешно аутентифицируетесь с помощью команды radtest, но сталкиваетесь с проблемами при использовании MSCHAP. При попытке аутентификации через Android и Windows 10 вы получаете сообщение об ошибке MS-CHAP-Error = "\000E=691 R=1". Это указывает на то, что процесс аутентификации не может найти соответствующий хеш пароля для пользователя в системе.

Выводы из логов

  1. Успешная аутентификация без MSCHAP:
    rad_recv: Access-Accept packet from host 127.0.0.1 port 1812
  2. Неудачная аутентификация с использованием MSCHAP:
    rad_recv: Access-Reject packet from host 127.0.0.1 port 1812
    MS-CHAP-Error = "\000E=691 R=1"

Судя по вашему выводу, FreeRADIUS успешно находит пользователя и может выполнить аутентификацию через LDAP. Однако в процессе MSCHAP FreeRADIUS не находит "известный хороший" пароль для пользователя Elia.

Возможные причины

  1. Настройка NTLM: Использование неправильного имени пользователя для NTLM может привести к ошибкам аутентификации.
  2. Права доступа: Убедитесь, что пользователь FreeRADIUS имеет доступ к файлам и директориям, необходимым для NTLM.
  3. Конфигурация FreeRADIUS: Проверьте конфигурацию в файлах default и users, чтобы удостовериться, что все необходимые атрибуты правильно прописаны.

Решение проблемы

Для решения этой проблемы попробуйте изменить строку вызова ntlm_auth в вашей конфигурации FreeRADIUS, чтобы использовать правильный формат имени пользователя. Используйте следующее:

ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{mschap:User-Name}:-%{%{User-Name}:-None}}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"

Это изменение позволит вам использовать имя пользователя из атрибута mschap, что должно устранить проблемы с аутентификацией.

Важные рекомендации

  • После внесения изменений обязательно перезапустите FreeRADIUS:
    sudo systemctl restart freeradius
  • Проверьте права доступа к папкам и файлам, чтобы убедиться, что FreeRADIUS может получить доступ к ним.
  • Запустите FreeRADIUS в режиме отладки, используя команду freeradius -X, чтобы изучить логи в реальном времени и отследить любые возможные ошибки аутентификации.
  • В качестве временной меры вы можете использовать статические учетные записи в /etc/freeradius/users, но рекомендуется использовать динамическую аутентификацию для удобства.

Заключение

Следуя этим рекомендациям и внесенным изменениям, вы должны быть в состоянии настроить FreeRADIUS с использованием MSCHAP в комбинации с Zentyal. Убедитесь, что ваша система соответствует всем лучшим практикам по безопасности и доступности для обеспечения надежной аутентификации пользователей. Если проблема сохраняется, пожалуйста, проверьте конфигурацию Samba и убедитесь, что проблема не в сетевых настройках или ограничениях со стороны вашего Access Point.

Оцените материал
Добавить комментарий

Капча загружается...