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


16

Я настраиваю беспроводную сеть для ~ 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- и пользователь позже отклоняется ...


Пароли NT и LM хранятся в зашифрованном виде, поэтому не очевидно, различаются они или нет. Вам необходимо определить, какой пароль используется AP, и если он передается в открытом виде, MD5 передается на его место или ... что-то еще. Клиенты RADIUS могут использовать любое количество атрибутов RADIUS для парольной или парольной аутентификации. Также попробуйте заполнить атрибут expiration.
kmarsh

Ответы:


12

Я постараюсь ответить на вопрос 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разделе: он будет пытаться выполнить привязку как пользователь, и поскольку 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 или такие методы аутентификации.


3

Я попытаюсь ответить на вопрос 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 разделяют эту «ошибку»: доверяя центру сертификации вместо конкретного сертификата. Уч ...


1

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

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

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


Прежде всего, вам нужно перекомпилировать пакет каждый раз, когда предоставляется обновление (завидую Gentoo-people здесь :)). С остальными я полностью согласен - если установка охватывает все базы, у моего преемника будет меньше работы (и меньше хаков для обратного инжиниринга).
Мортен Зибур

0

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


-1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.