Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
IOS9 и WPA2-Enterprise/RADIUS, UniFi Network
 
Потерпите, этот пост может получиться длинноватым — хочу подробно рассказать, что я пробовал и заметил! Мы — часть большого университета и предоставляем студентам Eduroam (федеративную мировую беспроводную сеть с использованием WPA2 Enterprise и серверов RADIUS каждого учебного заведения для аутентификации). Мы используем Unifi AP, но в других отделах университета применяются другие системы. Проблема не связана конкретно с Unifi — у других подразделений с другими поставщиками она тоже есть, однако у некоторых отделов проблемы нет, и единственное, что их отличает — это поставщик Wi-Fi.

С выходом iOS9 любые существующие устройства, обновлённые до неё, а также новые студенты не могут подключиться, если пытаются сделать это вручную — сертификат показывается как «не доверенный» (сертификат выдан TERENA, которого нет в списке доверенных корневых ЦС), после чего соединение просто обрывается. Можно «доверять» сертификату, но после этого устройство бесконечно подключается и отключается и так и не остаётся в сети.

Если пользователь удаляет сеть Eduroam и проходит через конфигурационный инструмент Eduroam (cat.eduroam.org), который скачивает конфигурационный файл, сеть работает без сбоев. Этот профиль устанавливает полный цепочку сертификатов до корневого ЦС, которому iOS9 доверяет. В остальном разницы не вижу. Устройства на других версиях iOS работают нормально, как при ручной настройке с принятием сертификата, так и через конфигурационный файл.

Первоначально я думал, что дело в том, что сертификат не доверенный, но дальнейшее расследование заставляет меня усомниться и считать это ложным следом. Сейчас у нас настроен freeradius-прокси, который принимает запросы от наших AP и передаёт их на центральный сервер RADIUS университета. Сертификаты выданы именно центральным сервером RADIUS, и у меня нет доступа для их пересоздания. Я также пробовал обойти прокси, чтобы AP напрямую общались с центральным сервером (через NAT-шлюз) — без изменений.

Теперь самое странное. Некоторые пользователи жаловались, что их устройство отлично работает в некоторых частях университета, но не в моём или других. При дальнейшем выяснении выяснилось, что единственное общее — в местах, где всё работает, стоят Aerohive AP. В отделах с Unifi, Ruckus ситуация одинаковая (по Cisco не уверен, поступают разные данные). В отделах с Aerohive есть и proxys RADIUS, и прямое подключение к центральным серверам. Я проверил — сертификаты, которые получают при ручном подключении в Aerohive-сетях, абсолютно такие же, как наши, с тех же серверов, и также показываются как «не доверенные» и требуют принятия. Разница в том, что там, где у нас проблема, у них всё работает. Один из коллег из отдела с Aerohive принес своё исправно работающее устройство к нам — и оно сразу же тоже начало бесконечно подключаться и отключаться.

Значит, дело точно не в сертификате. Я исключил влияние RADIUS-прокси, обойдя его. Известна проблема с TLS1.2 против 1.0 — серверы RADIUS работают на версии, не поддерживающей 1.2, поэтому iOS не могла уйти на бракованную реализацию TLS1.2, хотя требования к TLS1.2 в релизе iOS9 вообще убрали. Если бы проблема была повсеместной, я бы списал всё на изменение в Apple, но когда оно работает только на AP одного вендора, а на других — нет, значит, обходной путь явно есть.

Мне ещё рассказали, что их iOS9-устройство не может подключиться к старому домашнему роутеру с сетью только WPA (не WPA2) — та же история с бесконечным подключением/отключением. Я пробовал заставить SSID использовать только WPA2/AES вместо WPA и WPA2 по умолчанию — безрезультатно.

Каким образом AP вообще может влиять на процесс? И почему проблема только у iOS9? Недавно, говорят, Aerohive выпустили обновление прошивки, которое исправляет проблемы подключения iOS с logjam — правда, не знаю, установили ли все отделы Aerohive этот апдейт. Но непонятно, почему AP влияет на WPA2-аутентификацию — по идее, он просто передаёт запросы клиента на сервер RADIUS, который тот же для всех вендоров.

Итак… Есть мысли, как AP может влиять на процесс аутентификации? Может, есть какая-то настройка (AP или RADIUS-прокси), которую можно поменять, чтобы обойти проблему? Или стоит менять что-то в самом AP, как это, судя по всему, сделали в Aerohive?

Для информации: у меня контроллер версии 4.7.5 с прошивкой 3.2.12 на AP (в основном обычные Unifi, несколько Pro — жду появления новых AC). На тестовом сайте настроен отдельный AP с возможностью переключения на другой RADIUS-прокси, дающий тестовый SSID, чтобы я мог экспериментировать, не влияя на рабочую сеть.
 
Думаю, никак нельзя изменить конфигурацию hostapd на точке доступа (там стоит старая версия 0.7.3 с 2010 года, в то время как сейчас уже 2.5...) или, что более вероятно, на моём freeradius прокси-сервере, чтобы он не позволял клиенту и серверу RADIUS договариваться использовать TTLS и в итоге не переключался на PEAP?
 
@xfrz

Хорошо, теперь понятно и это подтверждает наши подозрения — mobileconfig, который мы используем, не сгенерирован нами, но я теперь подозреваю, что он тоже, скорее всего, настроен на использование PEAP. Попытаюсь достать AppleConfigurator, чтобы разобраться, но похоже, что Apple заменили его на версию, которая работает только на OSX 10.11, а у меня всё ещё 10.10...

К сожалению, для нас это скорее временное решение, чем настоящий выход, потому что большинство наших пользователей — это студенты, которые, похоже, не могут просто последовательно выполнить инструкции по установке mobileconfig и просто жалуются, что ничего не работает (особенно при обновлении с IOS8 — который работал — до IOS9!).

Но в любом случае, это направляет нас в нужную сторону. Посмотрим, удастся ли заставить центральный университет переключиться на чистый PEAP, хотя особо на это не надеюсь!
 
@sjwk

Спасибо за подсказку про PEAP vs TTLS. Я создал профиль .mobileconfig с помощью Apple Configurator и указал PEAP как единственный разрешённый тип EAP. После импорта этого профиля мой iPhone и macOS подключаются без проблем. На следующей неделе проверю проблемные Android-устройства.
 
@xfrz

В этой ситуации винить UBNT не стоит. Начиная с Yosemite, Apple устроила полный хаос со всем, что связано с беспроводными технологиями на своих устройствах. Обещали исправления, но почти ни одно из них так и не вышло в свет. El Capitan, похоже, работает чуть лучше, особенно на частоте 2.4 ГГц, но всё равно всё довольно ненадёжно.
 
Жаль, что у тебя нет доступа к RADIUS-серверу. Лично я сейчас не могу ничего проверить, но все мои RADIUS-серверы настроены только на PEAP, и быстрый просмотр логов показывает, что устройства на iOS (версии 9.0 и выше) ведут переговоры именно так, как надо. Возможно, позже, когда вернусь, я копну глубже и попробую воспроизвести эти проблемы.

Кстати, почему у вас разрешены и TTLS, и PEAP? Между ними нет особой разницы, а все знают, что Apple с iOS8 и Yosemite устроили настоящий бардак с WiFi, добавив кучу подобных проблем.
 
Думаю, здесь дело в каком-то «особом наборе обстоятельств». Мы знаем, что всё работает, когда пользователи iOS используют специальный инструмент настройки, который устанавливает беспроводной профиль, а не просто вручную выбирают SSID и доверяют сертификату, выданному вышестоящими RADIUS-серверами (CA, выпустивший сертификат, не входит в список доверенных iOS, профайл содержит полный цепочку — возможно, он также настраивает устройство на использование PEAP вместо TTLS, но я не могу расшифровать .mobileconfig-файл, чтобы проверить). Мы также знаем, что на оборудовании некоторых других производителей точек доступа всё срабатывает и без профиля, так что дело не только в сертификатах. К сожалению, у меня нет доступа и знаний о настройках центрального RADIUS-сервера, а iOS не даёт нормально посмотреть логи, которые могли бы объяснить, почему не удаётся подключиться. Я работаю только с логами самой точки доступа или своего RADIUS-прокси, если иду через него.
 
С этой проблемой на iOS9 вообще не сталкиваюсь. У меня есть большая развертка, которая запускает RADIUS через виртуальную машину Azure. Ни с MacBook, ни с iPhone никаких проблем. Правда, я заметил, что iPhone почему-то время от времени «забывает» сеть, но, как мне кажется, это уже совсем другая история.
 
Небольшое обновление. Проблема с IOS 9.1 всё ещё сохраняется. Я провёл несколько тестов на автономной точке доступа с включённым отладочным логированием. Устройства IOS, настроенные вручную, устанавливают соединение через туннель TTLS, что приводит к записи в логе «deauthentication due to local deauth request» (деаутентификация из-за локального запроса на деаутентификацию). Устройства Android работают на той же SSID, но по умолчанию создают туннель PEAP, а не TTLS. Если переключиться на TTLS (что на Android возможно, в отличие от IOS), то он падает с примерно такой же последовательностью событий. Думаю, это симптом, а не причина. По-моему, что-то не так с частью рукопожатия, из-за чего устройство теряет соединение. Один из моих коллег, который пользуется Ruckus и сталкивается с той же проблемой, недавно приглашал их для снятия дампов пакетов и прочего. Они нашли проблему, скорее всего связанную с методом рукопожатия, и собираются исправить её в прошивке (он на это надеется). Я тоже надеюсь узнать больше деталей, и если получится – обязательно поделюсь, чтобы помочь с исправлением.
 
О, и забыл упомянуть, что та же проблема касается и некоторых андроидов. Так что это не только у Apple. Мы начали получать сообщения об этих проблемах где-то в сентябре-октябре — что совпало с выходом Unifi Controller версии 4.7.4 (с прошивками), так что это тоже может быть причиной. Пока не было времени проверить старые версии прошивок для точек доступа.
 
То же самое здесь. Аутентификация по Radius раньше отлично работала до iOS9, да и сейчас нормально работает на Windows-машинах. Устройства с iOS9 и OSX10.11.1 постоянно отключаются спустя считанные секунды после (кажущейся успешной) аутентификации EAP-TTLS. Станции UAP-PRO и старые UAP-AC. Контроллер 4.7.5 со всеми включёнными обновлениями прошивки.
 
Спасибо, но, к сожалению, думаю, что ответ — нет. У меня уже настроена эта строка на прокси-сервере. Я создал локальную тестовую область с жёстко заданными учётными данными и могу аутентифицироваться через неё. Но мне кажется, что когда прокси передаёт запрос, конечный клиент и сервер по другую сторону договариваются о протоколах между собой, а прокси просто перебрасывает пакеты. Если бы он мог вмешиваться, то можно было бы устроить атаку «человек посередине», поэтому подозреваю, что по задумке я не могу вмешиваться в переговоры внутри туннеля.

Тем не менее, Aerohive AP работают с теми же клиентами и теми же серверами аутентификации. У нас есть коллега, который вручную подключился к SSID в своём отделе, где стоит Aerohive, чтобы привести сюда свой iPhone, и он сразу начал вести себя странно. Значит, в его точках доступа происходит что-то с рукопожатием соединения, что даёт возможность работать. Правда, что именно они делают — заставляют PEAP или каким-то образом обходят проблему с TTLS — я не уверен.
 
Для справки — следующее на моей тестовой установке тоже работает без необходимости клиенту импортировать файл .mobileconfig. Я указал peap как тип EAP по умолчанию на моём тестовом freeradius сервере: default_eap_type = peap. Поскольку я не знаю, не сломает ли это работу других клиентов, мне не очень хочется внедрять это на боевом сервере. Также я не уверен, можно ли изменить этот параметр "на лету" в freeradius proxy.
Страницы: 1
Читают тему (гостей: 1)