Вопрос или проблема
Я пытался заставить 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"
. Это указывает на то, что процесс аутентификации не может найти соответствующий хеш пароля для пользователя в системе.
Выводы из логов
- Успешная аутентификация без MSCHAP:
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812
- Неудачная аутентификация с использованием 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.
Возможные причины
- Настройка NTLM: Использование неправильного имени пользователя для NTLM может привести к ошибкам аутентификации.
- Права доступа: Убедитесь, что пользователь FreeRADIUS имеет доступ к файлам и директориям, необходимым для NTLM.
- Конфигурация 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.