Настройка RADIUS + LDAP для WPA2 в Ubuntu

Я настраиваю беспроводную сеть для ~150 пользователей. Короче говоря, я ищу руководство по настройке сервера RADIUS для аутентификации WPA2 по LDAP. На Ubuntu.

  • Я получил работающий LDAP, но, поскольку он не используется в рабочей среде, его очень легко адаптировать к любым изменениям, которые могут потребоваться в этом проекте.
  • Я смотрел на FreeRADIUS, но подойдет любой сервер RADIUS.
  • У нас есть отдельная физическая сеть только для WiFi, поэтому не стоит беспокоиться о безопасности на этом фронте.
  • Наши точки доступа - это корпоративные продукты от HP - кажется, они поддерживают все, о чем вы только можете подумать.
  • Весь сервер Ubuntu, детка!

И плохие новости:

  • Теперь кто-то менее знающий, чем я, в конце концов возьмет на себя администрирование, поэтому настройка должна быть как можно более "тривиальной".
  • Пока что наша установка основана только на программном обеспечении из репозиториев Ubuntu, за исключением нашего веб-приложения для администрирования LDAP и нескольких небольших специальных сценариев. Так что не "извлекать пакет X, untar, ./configure"-things, если этого можно избежать.

ОБНОВЛЕНИЕ 2009-08-18:

Хотя я нашел несколько полезных ресурсов, есть одно серьезное препятствие:

Ignoring EAP-Type/tls because we do not have OpenSSL support.
Ignoring EAP-Type/ttls because we do not have OpenSSL support.
Ignoring EAP-Type/peap because we do not have OpenSSL support.

В основном версия FreeRADIUS для Ubuntu не поддерживает SSL ( ошибка 183840), что делает все защищенные типы EAP бесполезными. Облом.

Но некоторые полезные документы для всех, кто заинтересован:

ОБНОВЛЕНИЕ 2009-08-19:

Вчера вечером я скомпилировал свой собственный пакет FreeRADIUS - на http://www.linuxinsight.com/building-debian-freeradius-package-with-eap-tls-ttls-peap-support.html есть действительно хороший рецепт (см. комментарии к посту для обновленных инструкций).

Я получил сертификат от http://cacert.org/ (если возможно, вы должны получить "настоящий" сертификат)

Затем я следовал инструкциям по адресу http://vuksan.com/linux/dot1x/802-1x-LDAP.html. Это ссылка на http://tldp.org/HOWTO/html_single/8021X-HOWTO/, который очень стоит прочитать, если вы хотите знать, как работает безопасность WiFi.

ОБНОВЛЕНИЕ 2009-08-27:

Следуя вышеприведенному руководству, мне удалось заставить FreeRADIUS общаться с LDAP:

Я создал тестового пользователя в LDAP с паролем mr2Yx36M - это дает запись LDAP примерно из:

uid: testuser
sambaLMPassword: CF3D6F8A92967E0FE72C57EF50F76A05
sambaNTPassword: DA44187ECA97B7C14A22F29F52BEBD90
userPassword: {SSHA}Z0SwaKO5tuGxgxtceRDjiDGFy6bRL6ja

Когда используешь radtestЯ могу подключиться нормально:

> radtest testuser "mr2Yx36N" sbhr.dk 0 radius-private-password
Sending Access-Request of id 215 to 130.225.235.6 port 1812
    User-Name = "msiebuhr"
    User-Password = "mr2Yx36N"
    NAS-IP-Address = 127.0.1.1
    NAS-Port = 0
rad_recv: Access-Accept packet from host 130.225.235.6 port 1812, id=215, length=20
> 

Но когда я пытаюсь пройти через AP, он не вылетает - хотя он и подтверждает, что вычисляет пароли NT и LM:

...
rlm_ldap: sambaNTPassword -> NT-Password == 0x4441343431383745434139374237433134413232463239463532424542443930
rlm_ldap: sambaLMPassword -> LM-Password == 0x4346334436463841393239363745304645373243353745463530463736413035
[ldap] looking for reply items in directory...
WARNING: No "known good" password was found in LDAP.  Are you sure that the user is configured correctly?
[ldap] user testuser authorized to use remote access
rlm_ldap: ldap_release_conn: Release Id: 0
++[ldap] returns ok
++[expiration] returns noop
++[logintime] returns noop
[pap] Normalizing NT-Password from hex encoding
[pap] Normalizing LM-Password from hex encoding
...

Понятно, что пароли NT и LM отличаются от приведенных выше, но сообщение [ldap] user testuser authorized to use remote access - и пользователь позже отклонен...

5 ответов

Я постараюсь ответить на вопрос LDAP здесь.

Вот краткий ответ: убедитесь, что ldap модуль удален из authenticate раздел и убедитесь, что mschap Модуль присутствует как в authorize и authenticate раздел. И просто не обращайте внимания на пароль "Нет хорошего пароля".

А теперь вот (очень) длинный ответ.

Как работает модуль ldap?

Когда вы активируете ldap модуль в authorize раздел, это то, что он делает, когда FreeRADIUS получает пакет RADIUS:

  1. он пытается привязаться к серверу LDAP (в качестве гостевого пользователя или с использованием данного идентификатора, если он настроен в ldap.conf)
  2. он ищет запись DN пользователя, используя фильтр под базовым DN (настроенным в ldap.conf).
  3. он выбирает все атрибуты LDAP, которые он может получить среди настроенных в ldap.attrmapи преобразует их в атрибуты RADIUS.
  4. он добавляет эти атрибуты в список пунктов проверки пакета RADIUS.

Когда вы активируете ldap модуль в authenticate раздел, это то, что делает FreeRADIUS:

  1. он пытается привязаться к серверу LDAP как пользователь.
  2. если это может связать, то это успешная аутентификация, и Radius-Accept пакет будет отправлен обратно клиенту, или же это сбой, приводящий к Radius-Reject пакет.

Итак, как я могу настроить FreeRADIUS, чтобы PEAP/MS-CHAP-v2 работал с LDAP?

Важным моментом здесь является то, что привязка как пользователя будет работать только в том случае, если сервер FreeRADIUS сможет извлечь пароль пользователя в виде открытого текста из полученного им пакета RADIUS. Это только тот случай, когда используются методы аутентификации PAP или TTLS/PAP (и, возможно, также EAP/GTC). Только метод TTLS/PAP действительно безопасен, и он не доступен по умолчанию в Windows. Если вы хотите, чтобы ваши пользователи соединялись с TTLS/PAP, вам нужно, чтобы они установили программное обеспечение соискателя TTLS, которое редко предоставляется. В большинстве случаев при развертывании WiFi с помощью WPA Enterprise securiy PEAP/MS-CHAP-v2 является единственным разумным вариантом.

Итак, суть в следующем: если вы не используете PAP или TTLS/PAP, вы можете безопасно удалить ldap модуль из authenticate раздел, а на самом деле, вы должны: привязка, так как пользователь не будет работать.

Если ваш тест работает, когда вы используете radtestэто, вероятно, означает, что ldap модуль активируется в authenticate section: он будет пытаться выполнить привязку как пользователь, и поскольку radtest использует PAP-аутентификацию, он будет успешным. Но это не удастся, если вы попытаетесь подключиться через точку доступа, так как вы используете PEAP/MS-CHAP-v2.

Что вы должны сделать, это удалить ldap модуль из authenticate и убедитесь, что вы активировали mschap модуль в обоих authorize и authenticate раздел. Что произойдет, так это то, что mschap модуль позаботится об аутентификации, используя NT-Password атрибут, который извлекается с сервера LDAP во время authorize фаза.

Вот то, что ваш sites-enabled/default Файл должен выглядеть так (без всех комментариев):

    ...
    authorize {
        preprocess
        suffix
        eap {
            ok = return
        }
        expiration
        logintime
    }
    authenticate {
        eap
    }
    ...

А вот то, что ваш sites-enabled/inner-tunnel файл должен выглядеть так:

    ...
    authorize {
        mschap
        suffix
        update control {
               Proxy-To-Realm := LOCAL
        }
        eap {
            ok = return
        }
        ldap
        expiration
        logintime
    }
    authenticate {
        Auth-Type MS-CHAP {
            mschap
        }
        eap
    }
    ...

А как насчет предупреждения "Нет известного пароля"?

Ну, вы можете смело игнорировать это. Это просто потому, что ldap модуль не смог найти UserPassword атрибут, когда он выбирал данные пользователя с сервера LDAP во время authorize фаза. В вашем случае у вас есть NT-Password атрибут, и это совершенно нормально для PEAP/MS-CHAP-v2 аутентификация.

Я думаю, что предупреждение существует, потому что, когда ldap модуль был разработан, PEAP/MS-CHAP-v2 еще не существовало, поэтому единственное, что, казалось, имело смысл в то время, - это получить атрибут UserPassword с сервера LDAP, чтобы использовать PAP, CHAP, EAP/MD5 или такие методы аутентификации.

Я попытаюсь ответить на вопрос OpenSSL здесь: краткий ответ - использовать FreeRADIUS 2.1.8 или более позднюю версию, которая включает OpenSSL. Он доступен в бэкпортах Ubuntu Lucid и Debian Lenny (и, вероятно, также попадет в бэкпорты Ubuntu Karmic).

Вот длинный ответ:

К сожалению, лицензия OpenSSL раньше была (несколько) несовместима с лицензией FreeRADIUS. Поэтому люди из Ubuntu решили предоставить бинарный файл FreeRADIUS, не связанный с OpenSSL. Если вы хотели EAP/TLS, PEAP или TTLS, вы должны были получить исходные коды и скомпилировать их с --with-openssl вариант (как объясняет рецепт, который вы использовали).

Но недавно проблема с лицензированием была исправлена. FreeRADIUS версии 2.1.8 или выше могут быть скомпилированы и распространены с OpenSSL. Плохая новость заключается в том, что последний стабильный дистрибутив Ubuntu (Karmic Koala) включает в себя только FreeRADIUS 2.1.0 без OpenSSL (то же самое касается Debian, поскольку Lenny содержит только FreeRADIUS 2.0.4). Я проверил Karmic-backports, но похоже, что FreeRADIUS 2.1.8 или более поздней версии там еще не загружен (но он может быть добавлен в ближайшее время, проверьте это здесь). Поэтому на данный момент вы должны либо переключиться на Ubuntu Lucid (который включает FreeRADIUS 2.1.8), либо продолжить компиляцию. Для пользователей Debian дела обстоят немного ярче: в бэкпортах Lenny есть FreeRADIUS 2.1.8. Поэтому, если вам нужно что-то очень стабильное, простое в установке и обслуживании, я предлагаю вам развернуть сервер с Debian Lenny и установить пакет FreeRADIUS с резервным копированием (он также дает вам возможность писать модули python бесплатно, без необходимости перекомпиляции с все экспериментальные модули).

Я получил сертификат от http://cacert.org/ (если возможно, вы должны получить "настоящий" сертификат)

Есть одна "ошибка" с "настоящими" сертификатами (в отличие от самозаверяющих сертификатов).

Я использовал один подписанный Thawte. Он работает нормально, и пользователи видят красивый "действительный" сертификат с именем что-то вроде www.my-web-site.com, Когда пользователь принимает сертификат, его компьютер фактически понимает, что все сертификаты, выданные одним и тем же центром сертификации, должны быть доверенными (я проверял это с Windows Vista и MacOSX Snow Leopard)! Так что в моем случае, если у хакера есть сертификат, скажем, www.some-other-web-site.comТакже подписанный Thawte, он может легко проводить атаку "Человек посередине", без предупреждения на компьютере пользователя!

Решение этой проблемы лежит в конфигурации сети компьютера пользователя, чтобы конкретно указать, что доверять нужно только "www.my-web-site.com". Это займет всего минуту, но большинство пользователей не будут знать, где это настроить, если вы не дадите им четкую процедуру и убедитесь, что каждый пользователь следует ей. Я по-прежнему использую "действительные" сертификаты, но, откровенно говоря, разочаровывает тот факт, что и Windows, и MacOSX разделяют эту "ошибку": доверяют центру сертификации вместо конкретного сертификата. Уч...

Согласно сообщению об ошибке, простая перестройка FreeRADIUS должна решить проблему поддержки OpenSSH. Это нужно сделать только один раз.

Я не уверен, что простота администрирования связана с настройкой. Зачастую, чем больше и детальнее настройка, тем проще ее администрировать, поскольку она охватывает все основы. Вы имеете в виду, что конфигурация должна быть легко удалена и на других серверах? Сколько беспроводных локальных сетей вы настраиваете?

После настройки Администрирование должно быть ограничено добавлением, удалением и изменением пользователем LDAP. Это должно быть достаточно просто, чтобы либо написать скрипт с помощью ldapmodify (et al), либо найти достойный графический интерфейс LDAP и документировать процессы со скриншотами.

Я столкнулся с той же проблемой. Мне пришлось скачать исходники RADIUS и собрать их самостоятельно.

Вы можете использовать FreeRADIUS2 (с OpenSSL) + EAP-TLS + WPA2-Предприятие. Вот очень дотошный HOW-TO. Windows XP SP3 имеет встроенную поддержку, а также Windows 7, Android 2.3, iPhone, Symbian. Но я не знаю о совместимости с SLDAP в такой схеме.

Другие вопросы по тегам