Как интегрировать 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.

Это решение требует, чтобы вы чувствовали себя комфортно при запуске и обслуживании программного обеспечения. Грубые шаги к реализации:

  1. Добавить arcfour-hmac:normal хэш пароля к вашему KDB. Пользователи должны будут обновить свои пароли, чтобы создать необходимый хэш для NTLM.
  2. Создайте и установите демон kcrapd для запуска на KDB(s) для поиска пользовательских хешей.
  3. Соберите, установите и настройте kcrap-libs на ваших серверах RADIUS.
  4. Создайте модуль аутентификации для вашего радиус-сервера, который взаимодействует с 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

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