Я настраиваю беспроводную сеть на ~ 150 пользователей. Короче говоря, я ищу руководство по настройке сервера RADIUS для аутентификации WPA2 по LDAP. На Ubuntu.
И плохие новости:
ОБНОВЛЕНИЕ 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
- и пользователь позже отклоняется ...
Я постараюсь здесь ответить на вопрос о LDAP.
Вот краткий ответ: убедитесь, что ldap
модуль удален из authenticate
раздел и убедитесь, что mschap
модуль присутствует как в authorize
и authenticate
раздел. И просто проигнорируйте «Неизвестный хороший пароль».
А теперь (очень) длинный ответ.
Как работает модуль ldap?
Когда вы активируете ldap
модуль в authorize
раздел, вот что он делает, когда пакет RADIUS получен FreeRADIUS:
ldap.conf
)ldap.conf
).ldap.attrmap
, и преобразует их в атрибуты RADIUS.Когда вы активируете ldap
модуль в authenticate
раздел, вот что делает FreeRADIUS:
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 или другие методы аутентификации.
Я постараюсь ответить здесь на вопрос 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, то он может легко запустить атаку Man-in-the-middle без каких-либо предупреждений, отображаемых на компьютере пользователя!
Решение этой проблемы лежит в глубине конфигурации сети компьютера пользователя, чтобы специально указать, что доверять следует только «www.my-web-site.com». Это займет всего минуту, но большинство пользователей не будут знать, где это настроить, если вы не дадите им четкую процедуру и убедитесь, что все пользователи ей следуют. Я до сих пор использую «действительные» сертификаты, но, честно говоря, разочаровывает то, что и Windows, и MacOSX разделяют эту «ошибку»: доверие к центру сертификации вместо конкретного сертификата. Ой ...
Согласно отчету об ошибке, простая перестройка FreeRADIUS должна решить проблему с поддержкой OpenSSH. Это нужно сделать только один раз.
Я не уверен, какое отношение имеет простота администрирования к настройке. Часто, чем сложнее и детальнее настройка, тем проще ее администрировать, потому что настройка охватывала все основы. Вы имеете в виду, что конфигурацию нужно легко удалить и на других серверах? Сколько беспроводных локальных сетей вы настраиваете?
После настройки администрирование должно быть ограничено добавлением, удалением и изменением пользователем LDAP. Это должно быть достаточно просто, чтобы либо создать сценарий с помощью ldapmodify (и др.), Либо найти достойный графический интерфейс LDAP и документировать процессы со снимками экрана.
Я столкнулся с той же проблемой. Мне пришлось загрузить исходники RADIUS и скомпилировать их самостоятельно.
Вы можете использовать FreeRADIUS2 (с OpenSSL) + EAP-TLS + WPA2-enterprises. Вот wery подробное КАК. Windows XP SP3 имеет встроенную поддержку, а также Windows 7, Android 2.3, iPhone, Symbian. Но я не знаю о совместимости с SLDAP в такой схеме.