Как интегрировать RADIUS с Kerberos?
Мы правильно настроили LDAP+Kerberos в нашей проводной сети.
Теперь мы хотим, чтобы наши пользователи входили в нашу сеть WiFi, используя свои обычные учетные данные. Я нашел много HOWTOS о LDAP+RADIUS, но ни один из них не упомянул Kerberos в пакете. Может кто-нибудь указать мне хороший HOWTO по интеграции RADIUS с Kerberos? Я нашел только эту короткую статью и некоторые неинформативные посты на Usenet.
РЕДАКТИРОВАТЬ: система Gentoo Linux с использованием OpenLDAP и Heimdal (Kerberos). Аппаратное обеспечение WiFi - это несколько Linksys WRT54GL с OpenWRT.
3 ответа
Это можно сделать с помощью 802.1x - PEAP-MSCHAP для Kerberos MIT с помощью KCRAP. Изначально разработанная для того, чтобы пользователи Samba могли проходить аутентификацию на Kerberos с использованием NTLM, ее библиотеки можно использовать в freeradius для необходимой проверки хеш-функции NTLM.
Это решение требует, чтобы вы чувствовали себя комфортно при запуске и обслуживании программного обеспечения. Грубые шаги к реализации:
- Добавить
arcfour-hmac:normal
хэш пароля к вашему KDB. Пользователи должны будут обновить свои пароли, чтобы создать необходимый хэш для NTLM. - Создайте и установите демон kcrapd для запуска на KDB(s) для поиска пользовательских хешей.
- Соберите, установите и настройте kcrap-libs на ваших серверах RADIUS.
- Создайте модуль аутентификации для вашего радиус-сервера, который взаимодействует с kcrap-libs для аутентификации пользователей.
Мы применяем это решение для всего кампуса с устройствами Windows, автоматически проходящими аутентификацию с использованием их собственных учетных данных AD для наших синхронизированных KDB.
Вот как вы заставляете freeradius проверять комбинацию пользователя и пароля на сервере Kerberos и авторизоваться на вашем сервере LDAP - вставьте это в ваш radius.conf:
modules {
krb5 {
keytab = ${confdir}/radius.keytab
service_principal = radius/radius.example.com
}
ldap {
cache = no
server = "ldap"
identity = "uid=freeradius,ou=Accounts,dc=example,dc=com"
password = secret
basedn = "dc=com"
filter = "(krbPrincipalName=%{User-Name})"
base_filter = "(objectClass=radiusprofile)"
tls {
start_tls = no
# tls_cacertfile = /path/to/cacert.pem
# tls_cacertdir = /path/to/ca/dir/
# tls_certfile = /path/to/radius.crt
# tls_keyfile = /path/to/radius.key
# tls_randfile = /path/to/rnd
# tls_require_cert = "demand"
}
default_profile = "uid=freeradius,ou=Accounts,dc=example,dc=com"
profile_attribute = "radiusProfileDn"
access_attr = "dialupAccess"
dictionary_mapping = ${raddbdir}/ldap.attrmap
ldap_connections_number = 5
groupname_attribute = cn
groupmembership_filter = "(|(&(objectClass=GroupOfNames)(member=%{Ldap-UserDn}))(&(objectClass=GroupOfUniqueNames)(uniquemember=%{Ldap-UserDn})))"
#groupmembership_attribute = radiusGroupName
timeout = 4
timelimit = 3
net_timeout = 1
# compare_check_items = yes
# do_xlat = yes
# access_attr_used_for_allow = yes
# set_auth_type = yes
}
}
Это предполагает, что вы добавили правильную схему радиуса (поставляется с freeradius, IIRC) в вашу директорию LDAP, и это должно указать вам правильное направление - я не использую 802.1X, но я использую эту конфигурацию для обработки другие сценарии управления доступом Kerberos через радиус, и он уже запущен в производство. Очевидно, что пользователи входят в систему со своими полными принципалами Kerberos (а не только с именами пользователей).
Если Microsoft, то есть пара статей. Technet и документ здесь TechNet Word Doc